Why Ctrl+V won't paste images in Claude Code on WSL, with a fix(rajveerbachkaniwala.com) |
Why Ctrl+V won't paste images in Claude Code on WSL, with a fix(rajveerbachkaniwala.com) |
Desktop apps are a second class citizen that do not get feature parity
Lot of actions on Claude Code seem much more suited for a thoughtfully designed GUI
Even the chat responses and links therein can benefit from judicious use of rich text and formatting and real hyperlinks to other parts of the UI or elsewhere
Favourite Skills can be toolbar buttons or menus if user so wishes.
It was very poor UX (from the demos i saw) -- and i tried it myself in Windows native command terminal and the rendering was horribly broken (windows is a second class OS for dev tools).
A light weight GUI with keyboard shortcuts that mimic CLI experience would have been far better without taking anything away from power users of the terminal.
Started using computers when that was the only affordable way to use computers.
For some reason, some people really love to live in 1970's with their expensive HiDPI monitors.
A few years ago I watched an account work through my companies numbers using their accounting software. It's entry method? A windows commander like tool. The menu options like add expense etc were all numbered. So he never left the numeric part of his keyboard.
The tool looked super old and obsolete but as soon as you see a power user use it, you see why.
I can string together a complex series of text-related tasks far more effectively as a shell pipeline than I can by pointing and clicking in a UI. I can scale that sequence of tasks out to operate on every file on the filesystem if I want, or down to a single character in a single file.
Claude Code being a full-featured TUI is also helpful because I can quickly/easily use it remotely via SSH without having to deal with setting up X forwarding, VNC, Parsec, etc. The remote host doesn't even need to have a window manager. Sure, it'd be nice if it also had an elegant multi-page GUI so I could more easily drill into the actions its performing and make better use of my large screen to watch it do multi-agent things, but if I have to choose between the two, I prefer the TUI.
That said, I'd much rather use a GUI to do things that are actually visual/spatial in nature.
Being a power user, having used computers for more than 30 years, I usually prefer GUI because that's an evolution over CLI.
Going from the basic interpreter on ZX Spectrum to the command line in MS DOS had me mesmerized. Going from the DOS CLI to Windows 95 GUI, had me me mesmerized, too.
I think people in general consider themselves more pro and "hackers" if they use CLI and editors like Vi and Emacs.
There are bonus points for memorizing hundreds of different keyboard shortcuts and not using the mouse at all.
If they absolutely have to use GUI, they not use a desktop environment in Linux but a stacking window manager.
Unfortunely they hear that and only understand Emacs.
People prefer terminal apps because they run inside our terminal app environments (kitty, zellij, tmux), tend to be keyboard driven, tend to be more lightweight than GUIs, tend to be scriptable, and can be run remotely over a standard ssh session.
A conventional GUI is a nonstarter in comparison.
That's the real reason.
If you don't believe me, take a look at the leaked codebase from a couple weeks ago. It's the stuff of nightmares, because too many junior devs slopcoded in all places without any plan or understanding of software architecture patterns. They never actually take the time to refactor, there's dozens of outdated redundancies and orphaned modules all over the place.
Without good architecture patterns, there can be no good GUI nor good UX.
Since it's a CLI app, I can wrap it in yoloAI for the sandbox protection, and also use VS Code's tunneling feature to reach that sandboxed workdir (with permissions safely bypassed) through my GUI.
https://freeimage.host/i/screenshot-2026-05-19-at-141349.ByS...
I have a similar setup, but I access it directly via iTerm2 instead of VS Code's terminal. I've figured out the right terminal settings to get copying/pasting text to work (including with neovim's + register), but not images. Would be nice to paste images, though. Currently I have to SCP them over.
I still use GUI apps too, and actually find claude code to be closer to a GUI app than a cli.
Personally, I much prefer the CLI. The CLI is a tool that has been refined for over 50 years to excel at text input and output. Once you learn it, it can feel like an extension of your brain.
Frankly, the idea of having to decipher what a picture is supposed to represent to use a skill fills me with horror.
(disclaimer: I work at MS, not on WSL)
My current workaround is to paste it inside the working directory on the host machine, then @ reference it, but would be nice to streamline that workflow.
I sure wish it didn't have to be a console app
1) It isn’t a matter of literally “pasting into a terminal” (with the terminal emulator shoveling bytes into the TUI’s stdin), rather it’s “a TUI key-binding tells TUI app to read system clipboard”. No different than any other app.
2) This works on macOS, Linux and Windows, but not WSL. Sounds fair game to call this a bug, or at the very least a feature disparity.
As it stands the only reason I have to pain myself back into using Linux on bare metal laptops, instead of VMs, is independence from US technologies in European soil, which also implies not having to care about Claude.
I'd rather continue to be as productive as possible.
Terminals are not alternative web browsers/graphical application sandboxes.
> ps aux | awk '{if ($6 > 102400) print $11, $6}'
compared to
> Get-Process | Where WorkingSet -gt 100MB | Select Name, WorkingSet
doesn't matter how the output is formatted, you aren't manipulating text directly you're working with .NET objects.
Anyway, PowerShell is the way it is out of necessity of the OS. Microsoft did try to just port ksh to Windows at one point it obviously failed because Windows isn't text based, system state is stored in WMI, COM, etc not text files.
Snover talked about the creation of PowerShell on the Corecursive podcast a couple years ago, well worth a listen: https://corecursive.com/building-powershell-with-jeffrey-sno...
If it ain't broke, don't fix it
Electron is the reason, and the elusive dream of "write once, run anywhere" that got us cross platform UIs that are bespoke and don't follow native OS conventions (or keyboard navigation), plus once marketing got involved and GUIs started needing to be branded instead of just fitting in with every other native app on that OS.
The "elusive dream" of 'write once, run anywhere' is realistically just people wanting to write software with direct product or service use in mind. Native OS conventions are subject to the middlemen of OS vendors, whereas the web (while basically subject to the same vendors) makes a substantial attempt at bridging the gap of writing software for your own purposes without native OS problems. This is a symptom of OSes catering/selling to developers as a platform and hooking them in the 1990s and 2000s.
This attitude that wanting to just make useful code for people and not worry about a windows 11 update breaking everything because they are irresponsible - to think that is not a valid desire is IMO a big problem.
On the other hand, you have a point that it quickly gets out of hand in terms of standards and accessibility and performance bottlenecks. WebAssembly and the WASI are so slow to come out and will by design always be slower than native performance. This doesn't and shouldn't stop us from having decently performant and decently usable program experiences, but it is a prerequisite to care about those things, and the other inheritors of the web development sphere clearly do not want to develop things properly if they take longer than the next fiscal quarter.
There is 100% good Electron code out there, just as 100% there is bad native OS code. The problem isn't inherently the goals of the 'write once, run anywhere' idea; it's more the casualty of other interests pulling away from what developers actually want.
For those interested: https://github.com/madarco/agentbox
Such statements can only be voiced by those that never experienced what using a proper REPL actually feels like.
Not something that emulates a vt100 teletype.
If I copy a file in Finder and paste it into a claude session, it shows in the TUI as [Image #1].
If I do the same, but paste into a claude session running over SSH, it pastes the path to the file, not the data.
If I open the image in Preview, copy the pixels (CMD-A, CMD-C), pasting that into a terminal does nothing.
So it looks like CC just puts UI sugar over top of the image path when it has file access to it? That's not really image pasting, though...
Thanks for mentioning yoloAI, though. I started off sandboxing via devcontainers using kata & cloud hypervisor set up as a custom docker runtime. It worked well enough, but nested docker was super slow due to virtio-fs limitations. I recently moved to sysbox and it's a bit quicker. It's probably not as airtight as kata/chv, but good enough to keep Claude from writing a security test that deletes my whole filesystem [1].
> Such statements can only be voiced by those that never experienced what using a proper REPL actually feels like.
Maybe. What do you mean with proper REPL? SBCL just runs fine in my terminal emulator. As do all other kind of programming languages, like Prolog.
When I interface with the OS, I want to start programs, control the processes, setup communication channels (pipes) and tell to computer to combine multiple programs to filter, combine, split stuff and redirect it to files and other programs. These should be also be able to run several times with slight differences. All of that works just fine in my shell. What are you missing?
Inline graphics from 1981,
https://youtu.be/o4-YnLpLgtk?t=376Or
Or using S-PACKAGE used to develop Nintendo 64.
https://www.youtube.com/watch?v=gV5obrYaogU
You are missing integration with live debugging, calling anything on the OS during a REPL session, e.g. OS APIs, calling into automation points of the OS,
Can try out directly on the browser, courtesy of WebAssembly and recovery of Xerox PARC software, https://interlisp.org.
Or get either Squeak or Pharo, and see how using the Transcript integrates with the whole platform
Windows, with either PowerShell ISE, or its new VSCode integration, are the closest to these kind of experiences.
To finalise with Xerox PARC view on UNIX, from 1989
"UNIX Needs A True Integrated Environment: CASE Closed"
https://www.bitsavers.org/pdf/xerox/parc/techReports/CSL-89-...