Media Sharing

Your agents can't show you what they built. Now they can.

GitHub has no API for attaching an image to a pull request. Argos gives your agents one command, and the screenshot or recording is there the moment the PR opens.

Upload before the pull request exists

Media sharing is standalone image and video upload: no build, no test run, no baseline, just a file with a stable share URL and Markdown ready to paste. Stage it on the branch you're working on, and Argos posts it when the pull request opens, in one comment it keeps up to date instead of a new one each time.

Pull request opens
Claude Code

Add quick add-to-cart to the product grid

Done. Uploading a screenshot of the new grid.

argos media upload sneakers-listing.png --branch feat/quick-add-to-cart

No pull request yet, so it's staged on the branch: app.argos-ci.com/m/mp21qmkhpe…

Open
Quick add-to-cart from the product grid
#5
argos-ci
bot
commented
2 screenshots uploaded by Argos
Before
After
sneakers-listing.png+ sneakers-detail.png+ 1 more

This example is live: see the pull request on GitHub or open the share link.

One command, a link and Markdown

The CLI registers, uploads, and finalizes in one go, then prints a stable share URL and the exact Markdown to paste. For a video, that Markdown is a poster frame wrapped in a link, the only form GitHub renders. PNG and JPEG are compressed to WebP before upload, so a 252 KB screenshot travels at a tenth of the size.

Before and after, one link

Name two files -before and -after and they share one identity: a single row in the pull request comment, and a share page that compares both sides with synced pan and zoom. The reviewer sees the change, not two tabs.

Feedback pinned to the pixel

Reviewers pin comments to a point on the image. A pin stores normalized coordinates and the exact version it was written on, so an agent that cannot see the picture can still read the spot, fix it, and resolve the thread, all from the CLI.

Re-upload freely, the link never changes

A media is an identity; every upload is a version of it. Re-uploading checkout.png updates the Markdown already pasted in the pull request, keeps the version a reviewer commented on underneath, and identical bytes cost nothing.

Videos work too

Record a demo video and the pull request shows a thumbnail that opens the recording. MP4, WebM, and MOV, up to 500 MB.

Learn more

Works with any agent

CLI, Node.js SDK, REST API, and MCP. Whatever your agent already uses, uploading is a single call.

Learn more

Private by default

Links are unguessable and never indexed by search engines. On Pro, only your team can open them. Kept 30 days on Hobby, 1 year on Pro.

Learn more
Agent skill

Teach your agent to show its work

The argos-upload skill teaches any coding agent when a screenshot beats a paragraph, how to stage media on the branch it is working on, and how to paste an embed that actually renders. One command installs it for Claude Code, Cursor, and any skill-compatible agent.

Terminal
argos-upload
# Install the Argos skills for your coding agent
npx skills add https://argos-ci.com

Frequently asked questions

How do AI agents attach screenshots to a GitHub pull request?

GitHub has no public API for comment attachments. Dragging an image into a pull request needs a signed-in browser session, which an agent or a CI job doesn't have. With Argos, argos media upload --branch stages the file from the terminal, and when a pull request opens for that branch, Argos posts it there in a managed comment, automatically.

For an issue or a chat message, paste the Markdown line the command prints. It embeds the image anywhere Markdown renders.

Is media sharing the same as visual testing?

No. A media upload is compared to no baseline and gates no build. It is a file with a stable link. It complements visual testing: builds catch the changes nobody intended, media shows the result someone did intend, and both land on the same pull request.

What file formats and sizes does Argos media support?

Images: PNG, JPEG, WebP, AVIF, and GIF. Videos: MP4, WebM, and MOV. SVG is deliberately excluded because it can carry scripts. A single file can be up to 50 MB on Hobby and 500 MB on Pro, and Argos verifies the actual bytes at upload, so a file that isn't what it claims to be is rejected.

How much does a media upload cost?

Uploads draw on the screenshot allowance you already have, with no second quota. An image counts as 1 screenshot unit, a video as 25. Re-uploading a file whose bytes haven't changed costs nothing, and the usage detail breaks media out so recordings never read as unexplained screenshots. See pricing.

Who can open a media share link?

Visibility is per media: team (anyone signed in with access to the project, the default on Pro) or public (anyone holding the URL, the only option on Hobby). Links carry an unguessable token and share pages are never indexed. The file's bytes are always reachable at an unguessable CDN URL whatever the visibility. That is what lets GitHub's server-side image proxy render the embed, so don't upload what must never be reachable by URL.

How does an agent read the feedback left on a screenshot?

A reviewer pins a comment to a point on the image, and the pin is stored as normalized coordinates with the exact version it was written on. The agent runs argos media list --branch to find its uploads, argos media comment list to read the open threads, then replies and resolves each one from the same CLI. Even a process that cannot see pixels can act on the feedback.

For AI agents

Agents read machine-readable diffs, review builds, and fix their own regressions. Media is how they show the result.

Learn more

Review

Media comments use the same review grammar as builds: pinned threads, mentions, reactions, and resolution.

Learn more

Diff

Diffs flag the changes nobody intended; media shows the one you did. Both land on the same pull request.

Learn more

Supercharge your product quality

See every change your team and your agents make. Review with confidence, and merge faster.