Composer pills that continue a quota-exhausted agent now, resume after allowance renewal, or prepare a handover to another provider.
From the plugin's README
lastError, the live turn-end
event, and the daemon's timeline tail, which also carries a silent turn across a daemon restart.Exact install target unavailable. Refresh after the next successful scan.
Git security status and fallback installation are pinned to commit 004c6a80c6aa.
From the plugin's README
paseo plugin add panrafal/paseo-plugins:chat-resume
From a checkout:
npm install
npm run typecheck --workspace=chat-resume
paseo plugin install /absolute/path/to/paseo-plugins/chat-resume
After source changes:
paseo plugin reload chat-resume
README
Adds composer pills to agents that stopped without finishing: a provider usage-limit / quota
exhaustion — including Claude's "You've hit your monthly spend limit" assistant message,
which leaves the agent idle instead of in error.
Pills are offered when that state is the latest provider error or the last assistant
line in the transcript, both live and when you reopen the thread later. Codex's quota error is
read from the turn's task_complete record, which carries the renewal time.
Some providers stop on quota without any message. An idle agent whose latest turn produced no output at all after the user message — no text, tool call, or reasoning, and not interrupted — is treated as quota-exhausted with no known renewal time, so it gets Continue and Handover.
maxRuns: 1. Shown while the renewal
time is still in the future. It runs two minutes after renewal and continues the same
agent. Once that time arrives, the pill becomes Continue.paseo CLI) and a choice of the other ready providers and their
models, preferring Claude, Codex, Cursor, OpenCode, Copilot, and Gemini. The mode is matched by
permission level (Codex Auto-review → Claude Auto mode, Full Access ↔ Bypass, plan stays plan),
falling back to the target provider's default; the effort is matched by level. Send starts
a new agent with that prompt in the same workspace. It carries the source agent's labels plus
chat-resume.source-agent set to the source agent ID.An agent can also go idle without finishing its turn and without saying why — the daemon restarted, the provider process exited, the machine went down. The plugin reads the tail of the agent's timeline (through the daemon, so it covers every provider, including ACP ones with no on-disk transcript) and treats a turn as unfinished when tool calls ran after the last thing the agent said, or when the page shows only work. Trailing thoughts, todo lists, and compactions do not count as work, since they routinely follow a finished turn.
Such an agent gets a single Continue pill (StepForward) that asks it to review the
conversation and the workspace state and pick the work back up. There is no Handover and no
renewal schedule: nothing about the provider's allowance is known to be wrong. A quota stop
always wins over this check, and an agent with a pending permission request is left alone —
it is waiting for an answer, not stopped.
paseo.agents.create({ cwd }) always opens a new workspace; handover therefore uses
workspaces.ref(id).agents.create so the new agent stays in the thread you are looking at.
No agent is created until Send is pressed.
Provider renewal windows are not currently exposed through the public plugin API. The
plugin reads the latest refreshed agent error and the last transcript assistant message
for the exhaustion state and reset time, including times such as resets 12am (Europe/Warsaw).
lastError, the live turn-end
event, and the daemon's timeline tail, which also carries a silent turn across a daemon restart.paseo plugin add panrafal/paseo-plugins:chat-resume
From a checkout:
npm install
npm run typecheck --workspace=chat-resume
paseo plugin install /absolute/path/to/paseo-plugins/chat-resume
After source changes:
paseo plugin reload chat-resume
Scanned 15 Oct 2026, 12:29 UTC from panrafal/paseo-plugins/chat-resume.