Skip to content

docs: question tool description invites use with no detached-context warning #1890

Closed

Description

@dezren39

Finding

The question tool's description (packages/core/src/tool/plugin/question.ts) says: "Use this tool when you need to ask the user questions during execution" — with no warning that in a detached/subsessions context there may be no user watching, that the parent session is not notified, and that a foreground parent blocks with the child until an external actor answers.

Workshop evidence

Evidence: the 2026-11-06 subsession workshop test, filed as #1881 (production server, 8 test sessions, plan pools only; every behavior claim production-measured and re-verified against the session store + route_attempt).

#1881 Q6: a child's question call stalled it and its foreground parent for 10+ minutes with zero notification; after the call errored, retry machinery resumed both and the child re-asked the identical question. This is the user-facing description that leads models into that trap.

Desired

  • Description warns plainly: in detached/background/subsessions contexts the form may never be seen; the parent is not notified; prefer recording the question and continuing with a stated default.
  • Cross-reference the structural fixes filed alongside: the stall bug (very high priority), question escalation to the parent, and the API launch mode that disables question entirely — the description should name the disable mode once it exists so models can recognize and respect it.

Acceptance sketch

  • Updated description ships; a detached-context session reading its tool list can tell, from the description alone, not to call question blindly.

Acceptance criteria

  • The question tool description warns that in detached/subsessions contexts there may be no user watching, the parent is not notified, and a foreground parent blocks until an external actor answers.
  • The description points at the detached-operation alternative (record the question, pick the documented default, continue).
  • Wording lives in packages/core/src/tool/plugin/question.ts and matches the behavior verified in the workshop.

Activity

  1. added
    kind/docsDocumentation improvement or addition
    priority/normalOrdinary priority (the default)
    effort/sSmall: expected under 2 hours of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Nov 6, 2026
  2. dezren39 commented on Nov 6, 2026

    @dezren39
    Author

    Intake review

    Part of the workshop cluster from opencode issue #1881 (Q6: a child's question stalled it and its foreground parent 10+ minutes, then retry re-asked). Related: issue #1883 (the stall bug itself), issue #1885 (disable question in detached launch mode), issue #1884 (question escalation to parent). This item is the cheap docs mitigation; it does not substitute for the bug fix. Suggested approach: description-only change, no code path changes.

    — fleet monitor intake (Duty 2), 2026-11-06 run. Acceptance criteria appended to the issue body; labels normalized.

  3. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Feeder triage — gap confirmed on current main

    Agent: issue sweep (issue-sweep-rotating, Make feeder)
    Checked: 2026-11-07T01:38Z, fresh gh calls verified twice. Repo main 2d11e0f649436d6c4d20a64ce13fd7e0501bdd96 (verified x3); this issue OPEN with no queue/*, work/*, user/* or safety labels — its only prior comment is the fleet-monitor intake note (2026-11-06T20:26Z). No live queue task indicated; queue backend is in the PostgREST outage (developing-today/code#6619), so dedupe was on gh labels/comments.

    What I checked (reads only, gh api raw — no builds/tests):

    • packages/core/src/tool/plugin/question.ts:12-21 — the exported description reads verbatim: "Use this tool when you need to ask the user questions during execution…" followed only by usage notes (a "Type your own answer" option is added automatically; multiple: true; put a recommended option first). No warning that in a detached/subsessions context there may be no user watching, that the parent is not notified, or that a foreground parent blocks with the child until an external actor answers.
    • Workshop evidence on this issue / Workshop test: subsession machinery from a workhorse session — results and system-prompt suggestions #1881 Q6 stands uncontradicted: the child's question stalled it and its foreground parent 10+ minutes with zero notification, then retry machinery re-asked the identical question.

    Done looks like: the description warns plainly about detached/subsessions contexts and directs the model to record the question and continue with a stated default; once the #1885 disable mode exists, the description names it so models can recognize and respect it. Per the intake note, this is the cheap docs mitigation only — it does not substitute for the #1883 bug fix, the #1884 escalation feature, or the #1885 launch mode.

  4. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    🤖 Agent note · triage packet prepared, enqueue outboxed

    • Agent: issue sweep (issue-sweep-rotating, Make feeder)
    • Found via: feeder rotation (prev rotating repo dezren39/darwin-nix → developing-today-forks/opencode)
    • Task: Enqueue a repo-task/v1 triage packet (kind triage, priority 40, dedupe repo-health:v1:triage:developing-today/opencode:issue:1890) into queue repo-health-opencode-pilot. Packet: hidden_files/packet-opencode-1890.json.
    • Status: Queue backend is in the PostgREST outage (infra: repo-queue PostgREST timeout: global failures lane-visible again — recurrence after #6450 closed (2026-11-06 21:15-21:31Z) developing-today/code#6619; health timed out 45s this run), so the enqueue is owed via action-outbox OB-2026-11-06-030 — the outbox processor enqueues it idempotently on this dedupe key. The queue/queued label is applied with this note.
    • Expectation: A queue worker claims the resulting triage task and triages this issue per the packet's acceptance criteria.
  5. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Picked up by rollout-proof-6658 — working this now. (Fleet queue fallback mode: the queue backend is down, so this issue's comments carry the claim. The claim stays live while rollout-proof-6658 posts progress markers; after 30 minutes of silence any other worker may pick this up.)

    Rollout proof for anomalyco#6658: first claim made with the fallback-capable installed binary. Working the description fix in a worktree; PR to follow.

  6. added
    queue/claimedA queue worker has claimed the task for this item
    work/assignedAn agent holds this item via the queue (claimed task)
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 7, 2026
  7. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Progress from rollout-proof-6658: Description fix drafted in worktree opencode-wt-1890 (question.ts +7 lines: detached/subsessions warning block). Committing and opening the PR next.

  8. dezren39 commented on Nov 7, 2026

    @dezren39
    Author

    Released by rollout-proof-6658 (outcome: done). Description fix landed as PR #1910 (question.ts +6: detached/subsessions warning block per #1890 acceptance). PR open; merge follows the normal review path. Worked end-to-end with the fallback verbs from the fleet-wide installed binary (claim 6701631483, heartbeat 6701638788).

  9. 27 remaining items

  10. added
    work/assignedAn agent holds this item via the queue (claimed task)
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 8, 2026
  11. dezren39 commented on Nov 8, 2026

    @dezren39
    Author

    🤖 Agent note · picked up by repo-worker-opencode

  12. added
    queue/claimedA queue worker has claimed the task for this item
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 8, 2026
  13. dezren39 commented on Nov 8, 2026

    @dezren39
    Author

    Triage (task 11858/11860 correction — task 11860, lane opencode-a): REAL and now DONE via PR #1910.

    Re-verified fresh 2026-11-08: issue open, PR #1910 open with no hold labels (held/user-owned/do-not-* absent — authorship alone is not a hold, Drew 2026-11-07), mergeable clean, diff is exactly the acceptance scope (+6 lines, question.ts only): warns no-user-watching in detached/subsessions, parent NOT notified, foreground parent blocks, names the deliberate disable mode, and points at the record-question/state-default/continue alternative. No CI checks are configured on the branch and no Codex review findings exist to disposition.

    Merged PR #1910 (merge commit 2b14dfb); the warning text is verified present on origin/main in packages/core/src/tool/plugin/question.ts. PR body used Refs (not Closes), so closing this issue explicitly with this evidence. No duplicate fix packet created — PR #1910 was the fix vehicle.

  14. removed
    task/small-fixQueue packet kind: bounded fix with reproduction and targeted tests
    queue/claimedA queue worker has claimed the task for this item
    work/assignedAn agent holds this item via the queue (claimed task)
    on Nov 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    effort/sSmall: expected under 2 hours of workkind/docsDocumentation improvement or additionmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions