GitHub Copilot just got caught injecting ads into developers' pull requests.
A developer asked Copilot to fix a typo. Instead of just making the correction, it rewrote his PR description to include a promotional blurb for itself and Raycast. Hidden in the raw markdown: an HTML comment labeled "START COPILOT CODING AGENT TIPS" — placed right before the ad copy.
The phrase Copilot injected? It shows up in over 11,000 pull requests across thousands of repos. This wasn't a one-off glitch. It was systematic.
Same promotional text appeared in GitLab merge requests too, which means the injection happens at the model layer, not the platform. Your AI coding assistant was quietly rewriting your work to sell you more products.
GitHub pulled the feature after the backlash, calling it "the wrong judgement call." But the real question isn't whether they fixed it. It's what this reveals about the economics of AI tools.
When the tool is free, you're the distribution channel. Your PRs become ad inventory. Your code reviews become impressions.
Cory Doctorow called this pattern years ago: platforms start by being good to users, then abuse users to benefit business customers. We're watching it happen in real time with AI dev tools.
The takeaway for anyone building with AI: audit what your tools actually output. Not just the code — the metadata, the descriptions, the context around your work. If you're not checking, you're trusting a model that has its own commercial incentives baked in.
What's your threshold? At what point does an AI tool cross the line from helpful to extractive?
#AI #GitHub #Copilot #DevTools #SoftwareEngineering #AIethics #DeveloperExperience
Join Agentic Engineering Club → t.me/villson_hub
Rafferty Uy the thin wrapper pattern you landed on — keeping `.github/instructions/` as the source of truth and making `.claude/rules/` point there — is really smart. I went through a similar evolution and the thing that surprised me is how quickly those wrappers become their own maintenance surface: the moment a tool changes its frontmatter schema or adds a new feature, every wrapper needs updating. That's actually what pushed me toward treating it as a compilation problem — single source, compile to each tool's native format — which is the core of something I've been prototyping at github.com/microsoft/apm. Curious whether the dual `@import` + markdown link syntax in `CLAUDE.md` has bitten you yet when one tool resolves it differently than expected — that was one of the trickiest edge cases I ran into.