{"slug": "the-agent-asks-the-operator-and-the-chain-waits", "title": "The agent asks the operator, and the chain waits", "summary": "The OpenSpec-UI project added an operator-question mechanism to its agent pipeline, so an agent that needs a decision now halts its run and waits for a human answer instead of letting a chain proceed with the question open. Agents emit 'Question for the operator:' lines that the product reads as markers, backed by a new ask_operator tool in local-llm-acp, a question event and answerQuestion command in the protocol, and a waiting status kind. Answers are stored in the change's decisions.md and the audit log, and new agent runs on a change with open questions are refused; the owner noted that a question is now a hard stop even at full autonomy because it is a request for judgment, not a checkpoint the chain can resolve itself.", "body_md": "*First published on [openspec-ui.dev](https://openspec-ui.dev/articles/the-agent-asks-the-operator-and-the-chain-waits/).*\n\nAn agent ended its run with four decisions it needed from the operator,\n\nand the product offered no way to answer them. A chain would have gone on\n\nto the next stage with them open. The owner decided the same day: questions\n\nare caught, the run stops and waits, nothing goes on without an answer, the\n\nanswers are kept in the change's `decisions.md` and in the audit log, and\n\nthe product's own agent asks in its turn from the start.\n\nEvery agent stage's instruction asks for `Question for the operator: <…>`\n\nlines for decisions the agent needs. The product reads them as markers.\n\n`local-llm-acp` gets an `ask_operator` tool that blocks its turn until\n\nanswered.\n\nA `question` event and an `answerQuestion` command are added to the\n\nprotocol. A `question` waiting kind appears in the run's status. A run\n\nthat asked waits instead of completing, in a chain or alone, under every\n\nautonomy level. Once answered, the stage runs again with the answers —\n\n`update` for propose and review, the same command otherwise.\n\n`openspec/changes/<change>/decisions.md` holds every question and answer.\n\nThe audit log records both. An agent run on a change with an open question\n\nis refused.\n\nQuestions are answered from the card, the AI panel, the Human-Only Inbox\n\nand `openspec-ui-cli answer`. The card shows open questions with answer\n\nfields; the panel does the same. The Inbox surfaces questions alongside\n\nits usual checkpoint answers. From a terminal:\n\n```\nopenspec-ui-cli answer <changeId> --question \"Which branch strategy?\" --answer \"gitflow\"\n```\n\nBefore this, an autonomy level of `full` meant the chain ran without\n\ninterruption. Now, a question is a hard stop regardless of autonomy level.\n\nThe chain waits for a human answer, even at full autonomy. This is\n\nintentional: a question from an agent is a request for judgment, not a\n\ncheckpoint the chain can resolve on its own.\n\nThe refusal of a run past an open question is explicit. If someone tries\n\nto start a new agent run on a change that still has unanswered questions,\n\nthe product says so and names the open questions. This prevents a second\n\nagent from running while the first is still waiting for an answer.\n\nThe code is at\n\n[github.com/VeryComplexAndLongName/OpenSpec-UI](https://github.com/VeryComplexAndLongName/OpenSpec-UI),\n\nwhere the repository and packages keep the name OpenSpec-UI.\n\n```\nopenspec-ui-cli answer <changeId> --question <questionId> --answer <answer>\n```\n\n", "url": "https://wpnews.pro/news/the-agent-asks-the-operator-and-the-chain-waits", "canonical_source": "https://dev.to/someone_somewhere_05cad9e/the-agent-asks-the-operator-and-the-chain-waits-5b48", "published_at": "2026-10-25 02:30:55+00:00", "updated_at": "2026-10-25 02:41:03.608986+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools"], "entities": ["OpenSpec-UI", "local-llm-acp", "openspec-ui-cli", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/the-agent-asks-the-operator-and-the-chain-waits", "markdown": "https://wpnews.pro/news/the-agent-asks-the-operator-and-the-chain-waits.md", "text": "https://wpnews.pro/news/the-agent-asks-the-operator-and-the-chain-waits.txt", "jsonld": "https://wpnews.pro/news/the-agent-asks-the-operator-and-the-chain-waits.jsonld"}}