[BUG] Desktop app: `UserMessage` render props report `origin.kind: 'sdk'` for every row, including plugin-submitted prompts
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code (latest Claude desktop app, which bundles 2.1.295)
What's Wrong?
In the desktop app, e.props.origin on ui.render for UserMessage is { kind: 'sdk' } for every row, whether the person typed it or a mod submitted it with $.prompt.submit. The stored transcript entry for the same plugin-submitted prompt records the correct origin: "origin":{"kind":"plugin","name":"<plugin>"}.
What Should Happen?
The UserMessage.origin doc says it is "where the stored message came from, as prompt.submit named it: the composer's, a task notification's, a peer's, a channel's, a plugin's." A plugin-submitted row should render with { kind: 'plugin', name }, matching the stored entry. As things stand, a mod on desktop can't tell its own deliveries from typed prompts by origin, and has to fall back to matching the engine's framing text.
Steps to Reproduce
- Use the mod from Issue 1 (it writes
e.props.origin.kindto the status line), plus any mod that calls$.prompt.submit({ text }). - Let the plugin submit a prompt in a desktop app session.
- Observed: the status line reads
UserMessage sdk on desktop. The session's JSONL entry for that prompt has"origin":{"kind":"plugin","name":"<plugin>"}.
Environment
Claude desktop app (Code tab) bundling Claude Code 2.1.295, macOS.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗