Description
A session parked on a pending question tool call is interrupted by the location inactivity sweeper after ~60 minutes. The question becomes unanswerable and the turn dies:
Asked 1 question
Tool execution interrupted
The agent does not continue the conversation after the interrupt.
Verified in source (dev @ 7b3d4ce):
question blocks on forms.ask(...) with no deadline (packages/core/src/tool/plugin/question.ts), and pending forms are kept alive indefinitely (packages/core/src/form.ts: pending-form cache TTL is Duration.infinity).
- While the turn waits for an answer, no durable session events are published, so nothing refreshes the location TTL in
packages/core/src/location-activity.ts (options.timeToLive ?? "60 minutes").
- When the TTL expires, the sweeper interrupts all active executions in the location with
reason: "inactivity", and packages/core/src/session/runner/step.ts fails every unsettled tool call with TOOLS_INTERRUPTED ("Tool execution interrupted").
There is currently no way to configure this: the 60-minute TTL is hardcoded (LocationActivity.node wires layer() without options) and the question tool has no built-in timeout.
Expected: a turn that is waiting on user input should not be treated as an inactive session. The pending question should remain answerable, or at minimum the interrupt should not abort it. Possible directions: exempt sessions with pending user-facing forms from the inactivity interrupt, refresh the TTL while a form is pending, or make the TTL configurable.
Plugins
@prevalentware/opencode-goal-plugin
OpenCode version
v2.0.24
Steps to reproduce
- Start a session in any project and prompt the agent to ask a question via the question tool (e.g. "Ask me a question using the question tool").
- Leave the question unanswered and the session idle for ~60 minutes (no new prompts or other session activity in that location).
- The question becomes unanswerable and the transcript shows "Tool execution interrupted"; the turn ends and the agent does not continue.
Observed once in normal use (question left unanswered for a long time); the code path above explains the mechanism.
Screenshot and/or share link
N/A
Operating System
Linux x86_64 (kernel 6.17.13)
Terminal
tmux (TERM=screen-256color), shell: zsh
Description
A session parked on a pending
questiontool call is interrupted by the location inactivity sweeper after ~60 minutes. The question becomes unanswerable and the turn dies:The agent does not continue the conversation after the interrupt.
Verified in source (dev @ 7b3d4ce):
questionblocks onforms.ask(...)with no deadline (packages/core/src/tool/plugin/question.ts), and pending forms are kept alive indefinitely (packages/core/src/form.ts: pending-form cache TTL isDuration.infinity).packages/core/src/location-activity.ts(options.timeToLive ?? "60 minutes").reason: "inactivity", andpackages/core/src/session/runner/step.tsfails every unsettled tool call withTOOLS_INTERRUPTED("Tool execution interrupted").There is currently no way to configure this: the 60-minute TTL is hardcoded (
LocationActivity.nodewireslayer()without options) and thequestiontool has no built-in timeout.Expected: a turn that is waiting on user input should not be treated as an inactive session. The pending question should remain answerable, or at minimum the interrupt should not abort it. Possible directions: exempt sessions with pending user-facing forms from the inactivity interrupt, refresh the TTL while a form is pending, or make the TTL configurable.
Plugins
@prevalentware/opencode-goal-plugin
OpenCode version
v2.0.24
Steps to reproduce
Observed once in normal use (question left unanswered for a long time); the code path above explains the mechanism.
Screenshot and/or share link
N/A
Operating System
Linux x86_64 (kernel 6.17.13)
Terminal
tmux (
TERM=screen-256color), shell: zsh