This morning postall received PR #6. Title was an "Add [third-party tool] source context guidance" docs PR. 3 files changed, 83 lines added, 0 deleted. Full validation checklist in the description. Even included safety-conscious framing: "Never add credentials, cookies, raw sessions to PostAll prompts."
I was about to merge. Then I paused and checked.
Three things stopped me:
1. Branch prefix: codex/...
codex/* is OpenAI Codex agent's default naming convention. The PR was generated by an AI agent.
2. The submitter's GitHub history
An unusually high public repo count, with most recent pushes all forks of awesome-skills, awesome-mcp-servers, claude-skills style directory repos. The pattern looks like an automated fork queue, not the project list of a single developer.
3. Template reuse at scale
Searching the submitter plus the package name on GitHub returned hundreds of open PRs, all the same template, all referencing the same npm package. My postall was one of many recipients of the same submission this week.
The package being referenced is a closed-source SaaS wrapper for a Twitter API intermediary. Its name echoes the Claw* brand family — OpenClaw, ClawTrader, SkillClaw — which makes it read as a native ecosystem component, and its npm description opens by name-checking OpenClaw. The brand association is the lift.
What's the actual risk here? Not that the package has confirmed malware. The risk is the docs endorsement itself. If I merge this, my official docs now point users toward a third-party SaaS intermediary. Users follow install instructions assuming maintainer trust. If that intermediary ever changes — intentionally or through compromise — my entire user base is downstream. Docs are the real supply chain entry point, not imports.
This is different from old-school OSS noise. Typo PRs and contributor count inflation are obvious. This wave is harder to spot:
- AI agents write PRs that are structurally professional and checklist-complete
- One account submits the same template to 700 repos in one pass
- The substance isn't a bug fix — it's "install our middleware" inserted into official docs
- The safety-conscious framing reduces reviewer scrutiny at exactly the moment it should be highest
3-step check for this pattern:
1. Branch prefix. codex/*, chatgpt-*, copilot-* as default AI agent naming combined with doc-insertion content is almost always a promotional PR, not a contribution.
2. Submitter GitHub history. Open their profile. If you see hundreds of forks concentrated in recent days across awesome-* / skills-* / mcp-* repos, that fits an automation pattern. Individual active developers usually have 10–50 active repos, not 1,300.
3. PR template reuse. Search author:USERNAME PACKAGENAME on GitHub. If the same submitter is pushing the same package to 100 repos, you aren't a chosen collaborator — you're one of many batch recipients.
What I did: closed the PR and added a Third-Party Integration Policy section to postall's docs — explicitly stating that PostAll official docs do not recommend, endorse, or document any third-party SaaS intermediary. That policy will be cited often.
The contrast with last week's L06 work is worth noting. The L06 Supply Chain audit layer I shipped parses pip/npm/system deps against CVE feeds and typosquat databases — it's designed to catch import-level risk, dependencies already written into skill code. Today's PR was a different entry point entirely. It never arrived through an import. It arrived through a docs recommendation. L06 defends what's in your code. Docs policy defends what you tell users to install. Two separate layers, and until today I'd only thought about the first one.
The uncomfortable observation: as AI agents make it trivially cheap to generate professional-looking PRs and submit them at batch scale, this pattern will get more common, not less