What a handoff carries
When a run moves to another provider, uuldana-cli builds a HandoffPackage and gives it to the next provider as its first prompt. The package carries the workspace, the objective, and the visible conversation:
- from the text the agent’s screen showed: the last 120 lines with text, interface text included, written to the journal when its run ends;
- or from message events the run recorded, which only a structured transport produces (no native terminal agent runs that way).
Each transcript entry in the package carries its fidelity label, but the prompt text itself shows only “User:” and "Agent:". The prompt is capped at 20,000 characters. When the conversation is longer, the oldest messages are dropped first and the prompt says how many were omitted. The first user message is also given as the original request, cut at 500 characters.
Who presses Enter
When a usage limit moves the work, the new agent starts on the conversation at once, because you are not there to press Enter.
When you move the work yourself with /agent, the conversation is pasted into the new agent’s input box and not sent. You read it, change it if you want, and press Enter. Nothing is spent before that. uuldana-cli waits until the agent has been quiet for 1.5 seconds and has asked for pasted input. If that does not happen within 40 seconds, nothing is pasted and the conversation is saved as handoff.md in the data directory.
If nobody has spoken to the agent that was running, there is nothing to carry. The next agent starts clean, without a prompt.
What does not move
The prompt names these explicitly:
- reasoning the provider did not display;
- the provider’s memory and learned preferences;
- approvals granted inside the provider, so the next one asks again;
- tool calls that were still running;
- any other internal state.
Authentication and native plugin installation also stay with the receiving provider’s own setup. Context continuity is not account, authorization, or plugin migration.
When a handoff is refused
An agent cannot consume another agent’s native session id, so a handoff always starts a new native session. If the receiving adapter cannot show that its agent accepts an initial prompt, the handoff to it is refused instead of guessed.
Best effort capture
No agent’s own files are read: they are owned by the agent, undocumented, and can change between versions. The screen text is what uuldana-cli itself saw, so it is as good as the agent’s own screen, with interface text mixed in.
Nothing here touches credentials.