You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: Private GitHub release-asset images in PR descriptions show "Image unavailable" #21014
I searched existing issues and did not find a duplicate.
I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
In a private GitHub repository, upload an image to a release, for example a screenshots release holding sample.png.
Open a pull request whose description embeds it: .
Open that pull request in T3 Code's pull request panel, on desktop, web or mobile, with a GitHub account that can read the repository.
Expected behavior
The image renders, as it does on github.com for a signed-in user, the same way T3 Code already shows private user-attachments uploads and repository files.
Actual behavior
The image shows "Image unavailable". Release download URLs are not recognized as GitHub media, so the client loads the github.com URL directly with no credentials, and GitHub answers 404 for a private repository. Sending the token to that browser URL does not help either: it still returns 404. GitHub serves private release assets through the REST asset endpoint (GET /repos/{owner}/{repo}/releases/assets/{id} with Accept: application/octet-stream), which redirects to a signed download URL.
Desktop and web on Linux, iOS app. GitHub.com, private repository, gh signed in with read access.
Logs or stack traces
None in the client; the image request returns 404.
Screenshots, recordings, or supporting files
Workaround
Upload screenshots as user-attachments (drag them into the GitHub editor) instead of release assets. Tools that host PR screenshots on a release, which keeps them out of the default branch, hit this every time.
Sent by Mike's agent (Claude Opus 5.5 in T3 Code, Claude Code harness)
That image URL returns 404 anonymously, and still 404 when a GitHub token is sent to it directly. GET /repos/mwolson/t3code-release-media-fixture/releases/assets/{id} with Accept: application/octet-stream and the same token returns the image. Once the invite is accepted, opening that PR in T3 Code should show "Image unavailable" on main and render the image with #21015.
The invite carries collaborator access because GitHub has no read-only role on personal repositories; the repo holds only this fixture.
Sent by Mike's agent (Claude Opus 5.5 in T3 Code, Claude Code harness)
Still reproduces on desktop 0.1.7 (Linux), and the release URL is still unhandled on main @ ade4730.
Videos in release assets fail the same way. I attach before and after screenshots and short .mp4 walkthroughs to private PRs as release assets (https://github.com/<owner>/<repo>/releases/download/media/pr-<N>/<file>.mp4), so reviewers can check a change without starting a dev server. In the PR panel, none of the images or videos load.
Images and videos go through the same classifier in ChatMarkdownMedia.tsx, so #25027 probably covers both. Its tests only use images, though. A check with a release-asset .mp4 (including a range request for seeking) would confirm it.
Activity
mwolson commentedon Oct 22, 2026
Thanks. I set up a private fixture and invited you to it:
mwolson/t3code-release-media-fixture(private; invite sent to @juliusmarminge)https://github.com/mwolson/t3code-release-media-fixture/releases/download/screenshots/sample.pngThat image URL returns 404 anonymously, and still 404 when a GitHub token is sent to it directly.
GET /repos/mwolson/t3code-release-media-fixture/releases/assets/{id}withAccept: application/octet-streamand the same token returns the image. Once the invite is accepted, opening that PR in T3 Code should show "Image unavailable" on main and render the image with #21015.The invite carries collaborator access because GitHub has no read-only role on personal repositories; the repo holds only this fixture.
Sent by Mike's agent (Claude Opus 5.5 in T3 Code, Claude Code harness)
niclom12 commentedon Nov 8, 2026
Still reproduces on desktop 0.1.7 (Linux), and the release URL is still unhandled on main @ ade4730.
Videos in release assets fail the same way. I attach before and after screenshots and short
.mp4walkthroughs to private PRs as release assets (https://github.com/<owner>/<repo>/releases/download/media/pr-<N>/<file>.mp4), so reviewers can check a change without starting a dev server. In the PR panel, none of the images or videos load.Images and videos go through the same classifier in
ChatMarkdownMedia.tsx, so #25027 probably covers both. Its tests only use images, though. A check with a release-asset.mp4(including a range request for seeking) would confirm it.