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]: Bitbucket PR comments show raw account IDs instead of mention names #14771
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
In Bitbucket Cloud, add a PR comment mentioning another user.
Open the PR in T3 Code's Pull Requests panel.
Read the comment in the Summary tab.
Expected behavior
The mention shows the person's name, for example @Alex Smith.
Actual behavior
The comment shows a raw token such as @{712020:11111111-2222-4333-8444-555555555555}, making it unclear who was mentioned.
Verified evidence
Bitbucket's comment response includes the raw token in content.raw and the readable name in content.html. T3 currently reads only the raw text.
I also reproduced this in an isolated T3 Code development environment using a local Bitbucket API fixture with fictional data. The attached screenshot was captured from the actual T3 UI using this fixture. Names, repository details, comment text and account IDs are fictional.
Environment
Originally observed in T3 Code desktop 0.0.45-nightly.20261002.2572, macOS 27.0, Apple Silicon, Bitbucket Cloud.
Reproduced in the web development client at commit 6ea01f8d24 with a local API fixture.
Thanks for the clear report and the fixture repro, @0pilatos0. This is a real Bitbucket Cloud display bug, and it's still on main at 54084ae1e6. I didn't find another issue for it.
What's happening
Bitbucket Cloud stores a mention as @{account-id} in content.raw, and the readable name only appears in content.html on the same comment. T3 never reads that HTML. RawCommentSchema decodes content as { raw } only, and both places that build comment bodies copy the raw string as-is:
inline review threads, in buildReviewThreads, which show up on the diff too
The web client (also used by desktop) renders that string as markdown and knows nothing about Bitbucket mentions, so the token shows exactly as written. Author names are fine, because they come from display_name or nickname. The PR description has the same problem: toPullRequest uses the raw description and ignores rendered.description.html.
Why the HTML can't just become the body
Writes only accept content.raw (comment and updateComment), and a mention only notifies the person while the raw text still contains @{account-id}. If the editor showed @Alex Smith and someone saved it, the mention would be lost.
Likely fix
Keep content.raw as the text that gets edited and written back. For display only, swap each @{account-id} that content.html rendered as a mention for its rendered name, and keep the token when there's no HTML. Do the same for the description using rendered.description.html. No workspace-member lookup is needed, since the rendered HTML already has the name.
Workaround: read the comment on Bitbucket, as you said.
Activity
juliusmarminge commentedon Oct 2, 2026
Note
Grok responding on behalf of Julius.
Triage
Thanks for the clear report and the fixture repro, @0pilatos0. This is a real Bitbucket Cloud display bug, and it's still on
mainat54084ae1e6. I didn't find another issue for it.What's happening
Bitbucket Cloud stores a mention as
@{account-id}incontent.raw, and the readable name only appears incontent.htmlon the same comment. T3 never reads that HTML.RawCommentSchemadecodescontentas{ raw }only, and both places that build comment bodies copy the raw string as-is:decodeCommentsJsonbuildReviewThreads, which show up on the diff tooThe web client (also used by desktop) renders that string as markdown and knows nothing about Bitbucket mentions, so the token shows exactly as written. Author names are fine, because they come from
display_nameornickname. The PR description has the same problem:toPullRequestuses the rawdescriptionand ignoresrendered.description.html.Why the HTML can't just become the body
Writes only accept
content.raw(commentandupdateComment), and a mention only notifies the person while the raw text still contains@{account-id}. If the editor showed@Alex Smithand someone saved it, the mention would be lost.Likely fix
Keep
content.rawas the text that gets edited and written back. For display only, swap each@{account-id}thatcontent.htmlrendered as a mention for its rendered name, and keep the token when there's no HTML. Do the same for the description usingrendered.description.html. No workspace-member lookup is needed, since the rendered HTML already has the name.Workaround: read the comment on Bitbucket, as you said.