Replies: 2 comments
|
Following up on my own post, because I dug into this further and the picture is clearer than when I wrote it — and I think it changes what's worth doing here. This is an upstream parity gap, not something Paseo is behind on. Anthropic's own desktop app drives Claude Code exactly the way Paseo does: it spawns the same local And it has the identical limitation. There's an open request against it — anthropics/claude-code#71726, "Desktop app: inject queued messages mid-task between tool calls (CLI steering parity)" — describing the Code window holding messages until the turn completes while the TUI injects them at tool-call boundaries. Two further open requests ask for the same capability generally: #64624 (real-time steering) and #30492 (priority message channel). So the split is by how the agent is driven, not by which client:
What I think that means for this thread: true mid-turn injection isn't currently reachable from where Paseo sits, so it isn't worth attempting until the engine exposes it. If #71726 or #30492 ships, it becomes available to Paseo the same day it becomes available to the desktop app. The smaller thing I asked for still stands on its own though: a Send now on a queued message that interrupts and delivers as the next turn. That's within reach today, needs nothing from upstream, and covers most of what I actually want — stop building on the wrong assumption now rather than in five minutes. It just shouldn't be mistaken for steering: it ends the current turn rather than folding into it. Happy for this to sit until upstream moves. I mostly wanted the architectural constraint on record so nobody spends time trying to work around something that isn't Paseo's to fix. |
|
Rewriting this comment — I've now tested both sides and my earlier suggestion (just forward the queued message while the turn runs) was wrong. It doesn't work, and the reason points at something more specific. The engine does steerDriving the CLI directly, no GUI in the middle, on claude-code 2.1.220: Turn 1 asked for five sequential This is the behaviour reported from engine 2.1.217 onward in anthropics/claude-code#71726. It's undocumented, and note the observable form is a Paseo cancels insteadSame thing through Paseo 0.2.5, sending while a turn was running. Same transcript format: No // packages/app/src/composer/index.tsx
// Reuse the regular send path; server-side send atomically interrupts any active run.So both modes miss the capability: What would actually be neededThe send path unconditionally opens a new turn: it emits What steering needs is a delivery mode distinct from send: push the message into the existing session input without opening a turn — no Three things worth building in if it's ever picked up:
|
Uh oh!
There was an error while loading. Please reload this page.
What am I trying to do
Correct an agent while it's working. Long turns are where this matters: I watch it head down the wrong path, or I remember a constraint I should have stated, and I want that in front of it now rather than after it has spent five more minutes building on the wrong assumption.
In the CLI this is second nature — I type while it's running and the agent picks the message up during the turn, so my correction lands before the wasted work happens.
How I do it today
In Paseo I type the correction and it sits queued until the turn finishes. So either I wait, and the agent finishes work I already know is wrong, or I interrupt the turn manually, then retype or re-send the message myself. The second is what I actually do, and it costs me the partial work the turn had already done.
Where Paseo gets in the way
The queue is deliberately gated on the turn being over:
Queued text lives client-side and is only released once status leaves
running. There's no way to say "deliver this one now" — the queue is a waiting room, not a channel to a running agent. I assume that's deliberate caution after #2568, where writing at the wrong moment destroyed the message outright, and I'm not asking for that to be undone.Worth being precise about what's actually possible, because I looked into it before writing this up. True mid-turn injection — the agent noticing a new message at a tool boundary and carrying on with the same turn — is what the TUI does with in-process access, and as far as I can tell it is not available to SDK/stream-json consumers. The Agent SDK streaming input docs describe additional messages as queued and processed in order, and the documented way to redirect a running agent is
interrupt()followed by the new message. There's an open Anthropic request for a stdin interrupt message for--input-format stream-json(anthropics/claude-code#41665), filed by someone building exactly this kind of multi-agent overlay, which suggests the gap is known upstream and not something Paseo can simply switch on.What would the flow look like if it worked for me
A Send now action on a queued message: interrupt the current turn and deliver it immediately, as one action instead of the interrupt-then-retype dance I do by hand. Paseo already implements interrupt, and the queued text is already sitting there, so from the outside this looks like wiring two things it can both already do rather than new capability.
Semantics I'd expect: the turn stops where it is, whatever it produced stays in the timeline, and the queued message becomes the next turn — so it's clearly "stop and redo with this", not "the agent quietly absorbed my note". Keeping normal queueing as the default behaviour, with this as an explicit opt-in per message, would mean nothing changes for people who like the current safety.
If the upstream stdin-interrupt request ever lands, the same button could become genuinely mid-turn without the workflow changing.
For context on why this matters more to me than it might to others: my sessions are long-running infrastructure work rather than short code edits, so a turn can run for many minutes and a wrong assumption early on wastes all of it.
All reactions