[BUG] Base64 data URLs displayed as '[Pasted text]' instead of '[Pasted image]' in TUI
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?
When pasting a base64 data URL (e.g., data:image/png;base64,iVBORw0KGgo...) into Claude Code's TUI, it is displayed as [Pasted text #1] instead of [Pasted image #1].
Claude properly interprets the data URL as an image and can describe/analyze it, but the TUI presentation is incorrect and ugly - it shows the entire base64 string in the output.
- #5277 - image paste in ssh/sftp (related use case)
- #15597 - Allow passing image file paths as strings (alternative approach)
Claude 2.1.4 on Mac using Ghostty
What Should Happen?
- TUI should detect that pasted text is a base64 image data URL
- Display it as
[Pasted image #1](same as clipboard-pasted images) - Hide the raw base64 string from the terminal output
Error Messages/Logs
- TUI shows `[Pasted text #1]`
- The entire base64 data URL is displayed verbatim in the terminal
- Very messy output that scrolls for pages
Steps to Reproduce
Paste this into claude cli (it's a small blue square):
data:image/png;base64,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
Claude Model
Opus
Is this a regression?
No, this never worked
Last Working Version
No response
Claude Code Version
2.1.4
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
No response
claude should be using osc5522 to get this information anyways https://sw.kovidgoyal.net/kitty/clipboard/
TUI should detect that pasted text is a base64 image data URL
the way tuis do this is with specific protocols like the one I mentioned above if you want to use paste
otherwise sending kip data over ssh works just fine https://sw.kovidgoyal.net/kitty/graphics-protocol/#remote-client
It’s way better to have cmd-v just work than needing to allow Claude code to pull from clipboard with new hot key.
It’s way better to have cmd-v just work than needing to allow Claude code to pull from clipboard with new hot key.
osc52 works just fine with the traditional paste key
How would VM’s-v work? Doesn’t it rely on the program to instigate the copy from clipboard operation?