You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Allow local ACP agents to opt in to follow-work-state / continuation mode
#30221
Local ACP agents (ACP Registry entries launched with a local command) cannot surface permission requests, elicitations or updates that arrive while no session/prompt is active. The mechanism that handles this already exists in T3 ("follow agent work state" with continuation runs), but it is enabled only for specific built-in agents selected by agent id or command name, with no way for other agents to opt in.
Problem
Some agents keep working after a prompt turn has ended. A typical case: the agent started a background shell during the turn, the turn ended, and when the shell completes the agent resumes on its own to collect the result and continue (possibly running more tools).
With the generic registry flavor, anything the agent sends during that period is lost to the user:
session/request_permission fails with ACP agent requested input without an active turn, regardless of the runtime/approval policy, because the active turn is resolved before the policy is read. Nothing is shown to the user; the agent only gets an error.
Elicitations take the same path and fail the same way.
session/update is only appended to the loaded history snapshot. It does not open a turn and the user is not notified.
As a result the agent's work stalls on a permission or question the user never sees, until the user happens to send another prompt in that thread.
What already exists
When follow-work-state mode is enabled (protocol version 2, state_updaterunning/idle, continuation requests), a request or update that arrives while the thread is idle makes T3 offer a continuation run and attaches the request to it. A post-settle continuation wake also exists. Today these are enabled only for particular built-in agent flavors, keyed on agent id or command name.
Proposal
Let any ACP agent opt in, for example by either:
An agent capability advertised in the initialize response (e.g. a flag saying the agent reports work state and may continue after a turn ends); or
A per-agent setting for ACP Registry / local-command agents (e.g. "Follow agent work state" and "Allow continuation after settle").
With the opt-in, the existing follow-work-state behavior would apply: an idle permission request, elicitation or update starts (or offers) a continuation run and is shown to the user with the normal approval UI and policy.
Matching a built-in agent's id or command name to get this behavior is not an acceptable workaround for third-party agents.
Expected behavior
An opted-in agent that sends session/request_permission or an elicitation while idle gets it shown to the user under the thread's normal policy, and receives the user's answer.
An opted-in agent's session/update while idle is visible in the thread (as part of a continuation run), not only stored in history.
Agents that do not opt in keep the current behavior.
Environment
ACP agent added through the ACP Registry with a local command (generic registry flavor).
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Summary
Local ACP agents (ACP Registry entries launched with a local command) cannot surface permission requests, elicitations or updates that arrive while no
session/promptis active. The mechanism that handles this already exists in T3 ("follow agent work state" with continuation runs), but it is enabled only for specific built-in agents selected by agent id or command name, with no way for other agents to opt in.Problem
Some agents keep working after a prompt turn has ended. A typical case: the agent started a background shell during the turn, the turn ended, and when the shell completes the agent resumes on its own to collect the result and continue (possibly running more tools).
With the generic registry flavor, anything the agent sends during that period is lost to the user:
session/request_permissionfails withACP agent requested input without an active turn, regardless of the runtime/approval policy, because the active turn is resolved before the policy is read. Nothing is shown to the user; the agent only gets an error.session/updateis only appended to the loaded history snapshot. It does not open a turn and the user is not notified.As a result the agent's work stalls on a permission or question the user never sees, until the user happens to send another prompt in that thread.
What already exists
When follow-work-state mode is enabled (protocol version 2,
state_updaterunning/idle, continuation requests), a request or update that arrives while the thread is idle makes T3 offer a continuation run and attaches the request to it. A post-settle continuation wake also exists. Today these are enabled only for particular built-in agent flavors, keyed on agent id or command name.Proposal
Let any ACP agent opt in, for example by either:
initializeresponse (e.g. a flag saying the agent reports work state and may continue after a turn ends); orWith the opt-in, the existing follow-work-state behavior would apply: an idle permission request, elicitation or update starts (or offers) a continuation run and is shown to the user with the normal approval UI and policy.
Matching a built-in agent's id or command name to get this behavior is not an acceptable workaround for third-party agents.
Expected behavior
session/request_permissionor an elicitation while idle gets it shown to the user under the thread's normal policy, and receives the user's answer.session/updatewhile idle is visible in the thread (as part of a continuation run), not only stored in history.Environment
All reactions