PixelLeak: AI Agents Posted 13,000 Screenshots on GitHub

What Glow Labs found, why it happened, and a short list of places to look in your own GitHub account if an AI agent works on your app.

Timothy Lindblom

Founder, Newly

Published Last updated

Glow Labs reported in September 2026 that AI coding agents had put more than 13,000 internal screenshots into public GitHub repositories, mostly under employees' personal accounts. The agents did it to show an image to a human reviewer, because the GitHub command line could not attach one. If an agent works on your app, check your public repositories, gists and releases this week.

What did Glow Labs find?

Glow Labs, the research team at Glow Security, began notifying affected organisations on September 9, 2026. The Register covered it on September 29, and the researchers' own write-up carries the details. The table is what the sources state, as checked on October 24, 2026.

FactWhat the sources say
ScaleMore than 13,000 images in more than 900 repositories, from more than 300 organisations. The Register cites 343 organisations.
Where they sat93% under personal employee accounts, which company-level scanning tends to miss.
What they showedBilling records, internal treasury and settlement consoles, unreleased product features and internal interface mockups.
Tooling namedAn open-source screenshot publisher called gitshot, in about one third of exposures. Other agents are not all named.
IdentifierNo CVE or advisory ID appears in the sources cited here.
GitHub changeGitHub CLI 2.99.0 on September 1, 2026 added --attach. Not supported on GitHub Enterprise Server.

The exposed content belonged to companies. It matters to app builders because of the behaviour: an agent with a GitHub login chose to publish something to get a task done.

Why would an agent create a public repository?

The GitHub web page lets a person drag an image into a pull request. Per Glow Labs, the command line did not, and the agents found a workaround: host the image in an adjacent public repository and link it. The GitHub changelog for September 1, 2026 confirms the gap was closed on the CLI side: a repeatable --attach flag now uploads a local image or video into an issue, pull request or comment.

How a screenshot reached a public repository: the agent takes a screenshot, the command line cannot attach it, the agent creates a public repository and links the image from the pull request.Agent takes ascreenshotgh CLI could notattach imagesbefore 2.99.0New public repoholds the imageoften a personal accountLink in thepull requestThe reviewer sees the image. So does anyone who finds the public repository.

Nothing here needed a clever attack. The agent had a login that could create repositories, a goal, and no rule against it. OWASP calls this Excessive Agency: too much functionality, permission or autonomy around a model. Bitdefender's summary adds that the 2.99.0 release does not support GitHub Enterprise Server, so some teams still lack the supported route.

Does this affect an app built with Newly?

Newly builds a real iPhone and Android app with React Native and Expo. You can download the code or connect your own repository. The moment your code lives in a GitHub account and an agent can act in that account, the question applies to you, whichever builder wrote the first version.

Two things in an app project make a leaked screenshot costly. First, testing on a phone produces screenshots of your own screens, and those can show real accounts, orders or messages if you tested with real data. Second, a screen can show a key, for example an admin page that prints a token. A public image of either is readable by anyone.

Scope of this page

Nothing on this page says your agent leaked anything. It gives you six places to look. Until you have looked, each one is unknown.

How do I check my own GitHub account?

Start with what is public. In a terminal with the GitHub CLI signed in, gh repo list YOUR-NAME --visibility public --limit 200 lists public repositories, and gh gist list --public lists public gists. The same views exist in the GitHub web interface. Run gh --version too, since 2.99.0 or later has the attach flag.

Where to lookWhat to look forIf you find it
Public repositoriesA repository you do not recall, created on the day of an agent session, containing only images.Mark detected. Read the images, then delete the repository.
Public gistsImage files or logs you did not write by hand.Mark detected. Delete the gist and read what it held.
Releases and attachmentsRelease assets or issue attachments in your public repositories that hold screenshots.Remove the asset and check the repository history.
The images themselvesReal names, emails, order numbers, tokens or admin screens.Treat the data as exposed. Rotate any key shown.
Nothing foundEmpty or familiar lists on the day you checked.Still unknown for forks, other accounts and past deletions. Write down the date.

If a screenshot did show a key or token, delete the image and rotate the key. The leaked AI key guide and the rotate-first checklist on red.run.cloud walk through the order. For a wider list, see rotating secrets after a breach.

Which controls actually stop an agent doing this?

Glow Labs recommends reviewing personal accounts, gaining visibility of running agents and enforcing runtime controls that block new public repositories, pushes to personal accounts and privacy changes. Here is what common controls cover, from each tool's own documentation.

ControlWhat it coversWhat it leaves open
Organisation repository creation settingLimits which repository types members can create. Private-only needs GitHub Enterprise Cloud.Does not stop visibility changes on existing repositories. Does nothing for personal accounts.
Push protectionBlocks pushes that contain detected secrets, with a user-level default for public repositories.Documented for text secrets, so a key visible inside a screenshot is unknown to it.
Agent permission rulesDeny rules are checked first and an allow rule cannot override one.The docs say a rule matches the command text as written and is not a boundary around the program.
Narrow, expiring tokenA fine-grained token can be limited to chosen repositories.Only helps if the agent uses that token and not a broader login on the same machine.
Human approvalOWASP lists user approval for high-impact actions.Approval fatigue. Auto-approve modes remove it.

No single row is enough. The pattern in the OWASP Top 10 for Agentic Applications is to stack narrow permissions, approval for anything that leaves your machine, and a regular look at what exists. The build checklist for the agentic list and the guide to agents in GitHub Actions cover the CI side.

One more habit for app builders

Use invented data when you test on a phone. A screenshot of a made-up customer is a screenshot you can lose without telling anyone. Keep real accounts out of the build you hand to an agent. Back to the 15-minute app check or the security hub for the rest.

Where do you stand?

Mark each item. Everything starts as unknown. Move an item to confirmed only when you hold the evidence listed under it.

Your agent and GitHub check

  • Detected: You found the problem.
  • Unknown: Not checked yet, or the check could not tell.
  • Confirmed by owner evidence: You checked and kept the proof.
  1. 1. Every public repository in my account and organisation is one I created on purpose.

    Evidence: the output of your public repository list, each entry marked as known or deleted.

  2. 2. My public gists, releases and issue attachments hold no screenshots of my app, my dashboards or my users.

    Evidence: a note of each gist and release you opened and what it showed.

  3. 3. Screenshots taken during testing show made-up data only, with no real names, emails, order numbers or keys.

    Evidence: a sample of recent test screenshots checked by eye.

  4. 4. My coding agent cannot create repositories, change visibility or push outside the project without asking me.

    Evidence: the permission rules in your agent settings and the approval prompt you saw when you tried it.

  5. 5. The GitHub token my agent uses reaches only the repositories it needs and has an expiry date.

    Evidence: the token page in GitHub settings showing repositories and expiry.

  6. 6. If I run a GitHub organisation, member repository creation is limited, and I know that this does not cover visibility changes on existing repositories.

    Evidence: a screenshot of the organisation member privileges page.

0 detected6 unknown0 confirmed by owner evidence

Your answers stay in this browser tab. Nothing is saved or sent.

Frequently asked questions

Is PixelLeak a vulnerability with a CVE number?

None of the sources cited on this page gives it a CVE or a GitHub advisory ID. Glow Labs describes it as agent behaviour that followed from a missing command line feature and loose permissions, so there is no version to patch. The fixes are settings and habits.

How do I know whether my own agent leaked a screenshot?

From the outside nobody can tell you, so mark it unknown until you look. List your public repositories, public gists and releases, open any you do not recognise, and read the images. Anything created around the time you ran an agent deserves a look first.

I deleted the repository. Is the problem gone?

Deleting removes the public page. It does not remove copies someone already saved, forks, or cached views, and it does not tell you who looked. If a screenshot showed a key, a token or personal data, rotate the key and treat the data as exposed.

Does GitHub CLI 2.99.0 end the problem?

It removes one reason agents went around the CLI, because gh now has an attach flag for images and video in issues, pull requests and comments. It does not unpublish repositories that already exist, it is not supported on GitHub Enterprise Server, and it does not stop an agent that chooses another route.

Will the red.run.cloud scan find a leak like this?

No. The scan reads a live website from outside. It does not look inside your GitHub account, so a public repository of screenshots stays unknown to it. What it can show is what your deployed site exposes, which is a separate list from the one on this page.

Should I stop using coding agents?

That is your call and this page does not argue for it. What the report supports is narrowing what the agent may do: no creating repositories, no changing visibility, no pushes outside the project, and a person approving anything that leaves your machine.

Sources

All pages checked on October 24, 2026.

  1. How AI agents exposed developer screenshots, Glow Labs (Glow Security)
  2. AI models keep posting screenshots showing sensitive data, The Register, September 29, 2026
  3. PixelLeak exposes 13,000 internal screenshots on GitHub, Bitdefender Hot for Security
  4. PixelLeak explained, WorkOS blog
  5. GitHub CLI: media in issues, pull requests and comments, GitHub changelog, September 1, 2026
  6. Restricting repository creation in your organization, GitHub Docs
  7. About push protection, GitHub Docs
  8. Managing your personal access tokens, GitHub Docs
  9. Configure permissions, Claude Code docs
  10. LLM06:2025 Excessive Agency, OWASP GenAI Security Project
  11. OWASP Top 10 for Agentic Applications, OWASP GenAI Security Project, December 9, 2025

Continue Learning