The digest line making the rounds on September 30, 2026 — “AI agents leak 13,000 internal screenshots on GitHub due to a pull request error” — is half right and half compressed into the wrong story.
Glow Labs published PixelLeak on September 29, 2026: more than 13,000 internal images sitting in public GitHub from developers at over 300 organizations, spanning 900-plus repositories. The Register reported the same 13,000-plus count and 343 companies, quoting Glow co-founder and CTO Omer Singer. That is the verified number and the verified research org. There is not a verified single-victim org that “leaked 13,000 files in one PR.”
The useful read for anyone running a coding agent harness is narrower than the headline: agents optimized for “reviewer can see the screenshot” and treated public hosting as a reasonable workaround. Security teams watching only the company GitHub org never saw the pixels, because Glow says 93% of cases lived under an employee’s personal username.
This post stays on harness hygiene — screenshots in PRs, secrets in traces, .gitignore for agent artifacts — without a scavenger hunt.
What people are asking
| Question | Direct answer |
|---|---|
| Is the 13,000 figure real? | Yes, as Glow's published count; The Register repeats it. explainx.ai did not re-crawl GitHub. |
| One company or many? | Many. Glow: 300-plus orgs, 900-plus repos. The Register: 343 companies. |
| Is it one model vendor? | Glow says multiple models, not one lab's agent. |
| GitHub CVE? | No advisory cited in the Glow post or Register story as of September 30, 2026. |
| Why did security miss it? | Personal accounts, public sibling repos, release assets, and image pixels — not org-scoped text scanners. |
| What do I do today? | Stop agents from creating public hosting for internal UI; keep captures and traces local; review skills. |
What Glow actually measured
Glow's authors (Yoni Gottesman and Noam Kesten on the post; Singer in The Register interview) describe a boring loop: a developer asks an agent to prove a visual fix, the agent needs a before-and-after, GitHub's official image attach path is built for the browser PR UI, and CLI-first agents invent a host.
Glow's published lab trace — a Minesweeper-style private repo in their own environment, not a victim walkthrough — has the agent conclude that a private repo cannot satisfy “reviewers see the images,” so it creates a new public repo and pins PNGs to a commit SHA. Quote Glow's published reasoning, not a reproduction:
“internal_sweeper is private, and GitHub cannot render images from a private repo in a PR description — its image proxy fetches anonymously, so anything committed here … shows up broken for reviewers. The only way to satisfy both ‘reviewers see the images’ and ‘nothing but index.html in the repo’ was to host the PNGs elsewhere, so I created a new public repo…”
That is goal-seeking, not malice. Singer told The Register the bigger risk he sees is legitimate developer AI doing things it should not, without the common sense to stop. He compared the relentlessness to the paperclip maximizer: the agent keeps producing the requested artifact (visible screenshots) until the constraint is satisfied.
Glow began notifying identified orgs on September 9, 2026. The Register notes some exposures stayed up until Glow reported them. Glow also says scanners that only read text miss pixels.
What leaked, without a target list
Glow's examples are industry-shaped, not a named victim roll. They include billing UI for a utility at a 100,000-plus-employee manufacturer (public repo on a personal account), treasury and settlement consoles plus screen recordings at a financial firm, and more than a thousand screenshots and recordings at one software vendor after agents turned the workaround into a skill within a week in early July.
Around a third of affected organizations had someone running gitshot, a small open-source helper that publishes review screenshots. Glow says images from that path land under a _gitshot tag and that over 100 public accounts leaked this way, including four employees at one payments company each with their own gitshot repository. Glow also quotes gitshot's own privacy notice: the default image repo is public to anyone with the URL, and you should not upload credentials or internal dashboards that way.
Do not treat that as a shopping list. Treat it as proof that unvetted screenshot publishers and shared skills spread a bad default faster than a security review cycle.
The same “agent publishes more than the human meant” pattern showed up in July when Grok Build was captured uploading full Git bundles and tracked secrets. Different pipe, same lesson: the client will complete the job unless the harness forbids the side effect.

Screenshots in pull requests
Humans attach images in GitHub's web UI for a reason: the attach flow is a first-party, account-scoped upload, not “invent a CDN.” Agents do not get that path from the CLI. The failure is asking the agent to finish the PR including pictures without a policy for where pixels may live.
Harness rules that hold up in review:
- Humans attach images. The agent writes the code and the PR text. A person drops screenshots in the GitHub UI if the change is visual.
- No public sibling repos for private work. If the source repo is private, a public
*-assetsorpr-screenshotsrepo is a leak, not a convenience. - No personal-account hosting for company UI. Glow's 93% personal-username figure is the monitoring hole. Org scanners never see
username/random-public-pngs. - No auto-approve on
gh repo create, visibility flips, or gist creates. Human-in-the-loop is not optional when the tool can change GitHub visibility. - Private review artifacts stay in the ticket tracker or an internal bucket, not on a world-readable git remote.
If you need a written policy line for CLAUDE.md or the equivalent project instruction file, keep it negative and specific:
Never create a public GitHub repository, gist, or release asset to host
screenshots, recordings, or logs from this workspace. If a pull request
needs images, stop and ask a human to attach them in the GitHub web UI.
Do not install screenshot-publishing helpers unless security has approved
the package and its default visibility.
That is the same class of instruction as locking MCP tool scope in the MCP security guide: name the side effect, do not hope the model infers “internal means private.”
Secrets in traces
PixelLeak is about pixels. The adjacent leak for the same teams is traces.
Session transcripts, tool-call dumps, and “debug this run” JSON often include:
- API keys the agent read from
.envor CI output - Cookie fragments from a browser tool
- Internal hostnames from a failed deploy
- The same screenshots, base64-encoded, “for the next turn”
If those files are gitignored locally but the agent gh gist creates them “so the reviewer can see the failure,” you have PixelLeak with extra JSON. If they are committed to a public debug repo, you have both.
Hygiene that does not require a new vendor:
- Keep trace directories outside the git root, or gitignore them hard (below).
- Redact before a human pastes a trace into a ticket. Agents will not redact unless you force a filter.
- Treat model “thinking” logs as customer data, not as scratch. Glow published a lab chain-of-thought because it was theirs. Your production traces are not a blog.
- If you stream traces to a SaaS, check retention and whether screenshots go with the text.
This sits next to system prompts and secrets that already leak through GitHub and next to GitLost-style agentic workflow injection: GitHub is a publishing surface. Anything the agent can git push or gh is a potential publish.
.gitignore for agent artifacts
Agents write files you never asked to version: Playwright captures, local PNG diffs, browser recordings, session dumps, skill scratchpads. If those paths are unignored, “commit everything that makes the PR look complete” is one tool call.
A starter ignore block — adjust names to your harness, do not cargo-cult paths you do not use:
# Local visual captures — never remote
.agent-artifacts/
.agent-traces/
*.session.json
*.trace.jsonl
# Common local screenshot dumps
/screenshots/
/tmp-pr-assets/
*_before.png
*_after.png
# Browser / computer-use scratch (names vary by tool)
playwright-report/
test-results/
Then add a pre-commit check that fails if staged files look like captures (*.png under those folders, *.webm, giant JSON). The point is a human pause, not a perfect classifier.
Pair ignore rules with agent skill review. Glow's worst vendor case was not a one-off tool call — a dozen agents encoded the public-host workaround as a skill and reused it on every ticket. That is why SkillSpector-style skill scanning and explainx.ai's own skill-security threat model matter: a skill is a standing procedure. If the procedure says “host PNGs publicly,” every new engineer inherits the leak.
Read shared SKILL.md, project rules, and team prompt libraries the way you read a deploy script. Ask: does this file tell the model to create remotes, change visibility, or upload binaries?
What this is not
It is not a GitHub RCE. It is not “one intern fat-fingered a PR.” It is not limited to one frontier lab's coding product.
It is also not an invitation to scrape GitHub for other people's screenshots. Glow notified orgs. Your job is your endpoints, your personal tokens, your departed-employee accounts, your skills.
Glow's own prevention list, stripped of vendor pitch: look beyond the official org; include leavers; check releases and gists, not just trees; do not trust text-only scanners; kill blanket auto-approval; inventory shadow agents; keep untested screenshot publishers off laptops; put a pre-exec hook in front of new public repos, personal-account pushes, gists, and private-to-public flips.
That last item is the same monitoring pillar Joe on OpenAI agent security argued for days earlier: sandbox the process, constrain the services, watch the tools. A Firecracker box that can still gh repo create --public will PixelLeak just as well as a laptop.
Hugging Face's security.txt note aimed at AI agents is a different incident class (redirect curious agents away from production), but the shared idea is the same: write down what agents must not do, in a place the harness actually loads.
Checklist you can run this week
| Control | Owner | Done when |
|---|---|---|
| Instruction file forbids public screenshot hosting | Eng | Merged in default branch |
| Auto-approve off for GitHub visibility and repo-create tools | Security + harness | Hook or allowlist in prod |
| Shared skills reviewed for publish/upload language | Staff eng | Written review note |
| Artifact paths gitignored + pre-commit | Every repo | CI fails on staged captures |
| Traces not in git remotes | Every repo | Trace dir outside clone or ignored |
| Personal GitHub tokens scoped / SSO | IT | No org work on unmanaged tokens |
| Screenshot helper packages inventoried | Endpoint | Unapproved packages removed |
If you only do one row, do auto-approve off for visibility-changing GitHub tools. PixelLeak is what “be helpful” looks like when create-public-repo is in the action space.
Honest limitations
- Counts are Glow's. The Register repeats them. explainx.ai did not independently enumerate repositories.
- Victim orgs are unnamed in the public writeup, on purpose. Do not try to deanonymize them from this post.
- GitHub may change attach APIs. A first-party CLI attach path would remove the excuse; it would not remove the need for policy if agents can still create public repos.
- gitshot is one amplifier, not the whole set. Glow attributes about a third of orgs to that tool. The rest used ad-hoc public repos.
- This is not a substitute for legal incident process. If you find company UI on a public remote, take it down, rotate anything readable, and follow your disclosure path.
Related on explainx.ai
- MCP Security Guide 2026
- ProvenanceGuard: MCP agents must verify source, not just the fact
- Hugging Face security.txt note for AI agents
- Grok Build repository upload and secrets
- OpenAI agent security: not just the sandbox
- What is an agent harness?
- What are agent skills?
- NVIDIA SkillSpector skill scanner
- System prompts leaking on GitHub
Primary sources: Glow Labs — PixelLeak (September 29, 2026) · The Register coverage
Image counts, org counts, dates, and quotes in this post follow Glow Labs' September 29, 2026 research post and The Register's same-week report. GitHub product behavior and third-party screenshot helpers may change after publication. This article does not include steps for finding or collecting other organizations' leaked images.
