[BUG] Cross-session message sender renders fused to the prompt glyph (no separator before ❯)
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
The inline cross-session message header that shipped in 2.1.228 (the change that closed #84831) renders the sender wrong, in two ways.
The sender is fused to the prompt glyph. Every incoming cross-session message paints the sender name hard against the ❯, with no separator:
@ Cross-session message display improvements❯ Render test for anthropics/claude-code#84831 ...
On a reply, the sender degrades to a raw socket basename. Same exchange, same terminal, two directions:
| direction | sender rendered as |
| --- | --- |
| A to B | @ Cross-session message display improvements (the session title) |
| B back to A | @ 19622 |
B's reply arrived as from="uds:/run/user/1000/cc-socks/19622.sock" with no from-name attribute, while A's original carried from-name="Cross-session message display improvements". So a session that replies by copying the from= attribute as its to, which is what the SendMessage tool documentation explicitly instructs, loses the name and the recipient sees a socket basename.
Both are the same element (the sender header) from the same release, so they are filed together. Happy to split them if you would rather track them separately.
Worth noting the evidence path: all of this is read straight out of the terminal's screen buffer with kitten @ get-text, so no clipboard or paste tooling is involved. I ruled out my own paste tooling first, since a reflow utility was in the loop and was the obvious suspect.
What Should Happen?
A separator between the sender and ❯, and from-name propagated on a reply so the sender stays legible in both directions. A number is not a sender, and the point of the 2.1.228 change was making the sender legible.
Error Messages/Logs
$ kitten @ get-text --extent all | sed -n '198,203p' | cat -A
<EOL>
@ 19622M-bM-^]M-/<EOL>
Render report from the receiving side (v2.1.228):<EOL>
<EOL>
I saw it fully inline, not collapsed. What arrived in my context was a block wrapped as <cross-session-message<EOL>
from="uds:/run/user/1000/cc-socks/10604.sock" from-name="Cross-session message display improvements"<EOL>
# M-bM-^]M-/ is E2 9D AF, U+276F "❯". There is no 0x20 before it.
# The row ends right after the glyph; the body starts on the next row at indent 2.
Steps to Reproduce
- Open two interactive sessions on one machine, A and B.
- From A, discover B with
ListAgentsand send it anything withSendMessage. - Observe B's window: the sender and the
❯are fused, e.g.@ <A's session title>❯ <body>. - From B, reply with
SendMessageusing thefrom=value it received as theto(as the tool docs instruct). - Observe A's window: the sender renders as a bare number, e.g.
@ 19622.
To rule out paste tooling entirely, read both windows with kitten @ get-text rather than selecting and copying.
Claude Model
Opus
Is this a regression?
No, this never worked — the inline sender header is new in 2.1.228, so there is no earlier version where it rendered correctly.
Claude Code Version
2.1.228
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
Other (kitty)
3 Comments
Retested on 2.1.232. The second defect (reply sender degrading to a raw socket number) is fixed — replies now carry
from-name, presumably via the bare-name/unique-session-name addressing work in this release; both directions of an A↔B exchange rendered the session name.The first defect still reproduces verbatim: the sender header renders fused to the prompt glyph with no separator —
@ laddice-v2-eb❯(E2 9D AFimmediately after the name, no 0x20), confirmed viakitten @ get-text. This issue is now just that missing separator.Thanks for the detailed report — retested end-to-end on the latest release (2.1.233): two tmux sessions on Linux sharing one config dir, A→B "ping", B replying to the raw socket address.
Reply sender showing a raw number (
@ 19622) — fixed. Since 2.1.232, every session gets a unique name at startup and stamps it on outgoing messages, including replies sent to a raw socket address. In my test the reply rendered as@ work-82❯/pong, not a bare number (see the 2.1.232 entry "Interactive sessions on one machine now keep unique names" in the changelog).No separator before
❯— intentional styling, not a bug: the trailing❯marks where the message begins, mirroring how your own prompts render, and the same@ name❯header is used for all peer/agent messages. On 2.1.233 the body renders on the following line:Please upgrade to 2.1.232 or later; closing as fixed. If the
@ name❯styling still reads poorly to you, a UX suggestion issue is welcome.🤖 Generated with Claude Code
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.