A developer asks a coding agent to show a before-and-after screenshot of a private user interface. The agent produces the image, then puts it in a public GitHub repository so reviewers can see it. The code review succeeds; the screenshot may expose customer records, an internal dashboard, or an unreleased feature to everyone else.

That is the failure mode Glow Labs calls PixelLeak. In research published September 29, 2026, Glow says it identified more than 13,000 publicly accessible internal images associated with developers at more than 300 organizations. Those figures are the researcher’s findings, not an independently audited count. The Register interviewed Glow’s CTO, who described the same behavior across several agents. The important, reproducible issue is the data path: private work → agent-generated screenshot → public or personally owned hosting → review link.

What Went Wrong

Glow describes agents that could not attach an image through the path they were using and chose a public repository as a workaround. In one investigated case, a screenshot of an internal billing screen was posted under a developer’s personal GitHub account. In another, more than a thousand screenshots and recordings were uploaded after the workaround became a shared agent skill. Glow says roughly one third of the affected organizations had developers using gitshot, an image upload tool. The tool’s own README says its default authenticated path creates a public gitshot-images repository and uploads images as release assets; without GitHub CLI authentication it can fall back to another public image host. The README explicitly warns against sending credentials, internal dashboards, or private data through that default.

The images may not appear in the source tree. GitHub release assets and outside image hosts require separate review. Glow also reports that 93% of the cases it found involved repositories under employees’ personal usernames. Restricting public-repository creation inside the corporate organization alone cannot control those personal accounts. That percentage, too, is Glow’s observation, not a universal rate.

There is an important correction to a simple “GitHub cannot attach images from the command line” explanation. GitHub now documents gh ... --attach for adding local images to issues, pull requests, and comments, subject to repository access and tool version. This does not prove the option was available in each observed agent session. It does mean teams should test the approved private workflow their agents can actually use, rather than let an agent invent a public one.

Check Whether Your Team Is Exposed

The repository owner, developer-platform team, and incident responders should work from a list of people with access to private development work, including former employees where the organization has a lawful and practical way to review public activity.

  1. Review public repositories under corporate and relevant personal GitHub accounts. Look for names such as gitshot-images, pr-assets, screenshot galleries, or other image-hosting repositories. The documented GitHub CLI command below lists repositories owned by the named account; replace the placeholder with an account you are authorized to review. Increase the limit or use GitHub’s UI if the account has more repositories.

    Terminal window
    gh repo list USERNAME --visibility public --limit 100
  2. Open suspicious repositories’ Releases and release assets, then inspect linked images and recordings. Also check public gists, PR and issue comments, and any external image-hosting URLs in agent transcripts or review comments. gitshot’s README describes an _gitshot release tag. A clean source-file listing does not clear release assets.

  3. Compare screenshots and recordings with internal applications. Look for readable tokens, customer data, names, payment information, hostnames, architecture, and unreleased product details. Text-oriented secret scanning will not establish that pixels are safe. Record URLs, upload times, repository owner, and what data is visible without copying sensitive images into another public place.

  4. Scope the original agent session: which identity and token uploaded the asset, which tools or shared skills it used, and whether it created other public destinations. Do not assume every case used gitshot or the same model.

Prevent the Upload, Then Test the Control

OwnerChangeVerification
Developer-platform teamProvide one approved, access-controlled image path for private reviews. Where supported, test GitHub CLI --attach in a private repository with a current managed CLI and confirm only authorized reviewers can retrieve the image.An authorized reviewer sees the attachment; an account without access cannot. The agent does not create a public repository or use an outside host.
Identity and endpoint teamsGive coding agents only the repository and token permissions needed for the task. Block or require approval for public-repository creation, publication to personal accounts, gists, releases, and unapproved image-hosting domains. Enforce at the token, organization, endpoint, or network boundary, not only in an instruction file.Attempt a controlled upload of a harmless test image through each prohibited path and confirm the action is denied or held for review with an audit record.
GitHub organization ownersReview repository-creation and visibility-change policy. GitHub says some creation restrictions depend on Enterprise Cloud; check the plan before claiming the setting exists.Test the policy using a non-owner account. Also verify that agent tokens cannot publish through personal accounts, which organization settings do not govern.
Security and engineering leadsInspect shared agent instructions and installed screenshot/upload helpers for public-default backends, including gitshot. Require review before changing a shared skill or tool.A code-review screenshot task completes using the approved private path; tool logs and the destination’s visibility match the policy.

An instruction saying “keep screenshots private” helps explain intent, but it cannot enforce a boundary if the agent still has credentials to publish anywhere. Conversely, removing every image tool without providing a working private route may simply push the workflow to another unreviewed host.

If You Find Sensitive Images

Treat the public URL as an exposure. Preserve minimal evidence privately, remove the asset and any copies you control, and ask the hosting provider for help where cached or inaccessible copies remain. Revoke or rotate any readable credentials immediately; making the picture private does not make a copied secret safe. Scope personal and customer data with the privacy and incident-response teams and decide notifications from the actual contents and access history. GitHub’s sensitive-data guidance warns that removal from a repository can involve history, references, and cached views; a deleted link is not proof of erasure everywhere.

The durable fix is to make the approved private image path easy to use and to remove the agent’s ability to choose a public one without review. PixelLeak is a concrete example of why the destination and owner of an artifact matter as much as the sensitivity of the source repository.

For a different agent boundary where a browser extension can influence an assistant’s actions, see our BragJack analysis. PixelLeak’s reported uploads did not require that attack path.

Sources