[Bug]: Private GitHub images in chat messages show "Image unavailable" (PR panel loads them)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 74/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- github, react, typescript
- Domain
- frontend
Research direction
Read apps/web/src/components/ChatMarkdown.tsx and compare how PullRequestMarkdown.tsx passes sourceControlMedia. Trace the chat transcript caller and determine how it knows whether a thread has a cwd. Done when private GitHub images render in chat for eligible threads and the relevant chat rendering behavior is covered by a test.
Written by the indexing model from the issue text.
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/web
Steps to reproduce
- Open a project whose repository is a private GitHub repo, signed in with
gh(the same setup where the pull request panel already shows that repo's images, after #11706). - Commit an image to the repo, e.g.
docs/shot.png. - Have the agent (or paste as a message) reply with Markdown that embeds it:

(araw.githubusercontent.comorgithub.com/user-attachments/assets/<id>URL behaves the same.) - Open the same pull request's tab, where that body image does render.
Expected behavior
The image renders in the chat transcript, the same way it renders in the pull request panel, since the server already holds the cwd's source control credential and already serves these URLs for the panel.
Actual behavior
The chat transcript shows "Image unavailable". The browser requests the URL without a credential and GitHub answers 404 (verified: same URL is 404 anonymously, 200 with gh auth).
Cause, on main @ 1152e9171a: ChatMarkdown only routes host media through the server when its sourceControlMedia prop is true (apps/web/src/components/ChatMarkdown.tsx, default false, check around line 1419). The only caller that sets it is PullRequestMarkdown.tsx (line 96). The chat transcript never passes it, so the fix from #11706 (and its move into the source control drivers in #23994) covers the pull request tab only.
Impact
Minor bug or occasional failure
Version or commit
Desktop 0.1.3 (Windows); code reading at main @ 1152e9171a
Environment
Windows 11 Pro, T3 Code desktop 0.1.3, Claude and Codex providers, private GitHub repo, gh authenticated with repo scope.
Workaround
Agents copy the image to a local folder and embed the local path in chat, keeping the GitHub URL only for the PR description. It works, but every agent has to remember it, and it is the usual way PR screenshots end up broken in the hand-back message.
Note
This is likely a small change (pass sourceControlMedia for assistant messages in a thread with a cwd), but it does make chat content able to trigger authenticated fetches of the repo's media, so I am filing it for triage first rather than sending a PR. Happy to send one if the direction is wanted.
- Dominant language
- TypeScript
- Stars
- 24.8k
- Forks
- 6.4k
- Avg merge
- 2h 54m
- Merged PRs (30d)
- 350
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from pingdotgg/t3code
-
[Bug]: Pen taps on sidebar rows start a drag and lose their clickPossibly taken @makhnatkin claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
[Bug]: Guest messages near the 4,000-char limit fail with 400 "The request was not valid." because multipart turns \n into \r\nPossibly taken @juliusmarminge claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
pingdotgg/t3code#26523 · 1 comment ·
Maintainers usually reply within 1 day
-
[Bug]: preview_evaluate forbids WebMCP write tools even when the user explicitly asks for the changeOpenbug needs-triage
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
All issues in pingdotgg/t3code
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
scaleway/ultraviolet#7089 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
tencent-connect/dsh-qqbot#81 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
clangd/vscode-clangd#1009 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day