> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fortressproductivity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Question protocol

> How agents ask for human judgment.

Questions are a tool for preserving judgment. They should be specific, answerable, and useful to the future agent session that receives the answer.

## Ask when judgment is needed

Use `ask_question` when:

* The instructions are ambiguous
* The next step changes human priorities
* The agent has multiple reasonable options
* The action is blocked without a decision
* Proceeding would create risk or unwanted side effects

Do not ask when the order already authorizes the decision. Execute instead.

## Required shape

A strong question includes:

| Part        | Why it matters                                                                       |
| ----------- | ------------------------------------------------------------------------------------ |
| `question`  | The human-facing decision. Markdown is allowed.                                      |
| `choices`   | Optional bounded answers when the decision can be framed clearly.                    |
| `on_answer` | Instructions for what the future agent should do with the answer.                    |
| Scope       | `action_id`, `project_id`, or `order_id` when the question belongs to existing work. |
| Links       | External context needed to answer.                                                   |

<Warning>
  Always include `on_answer`. The agent that sees the response later may not have the original chat
  context.
</Warning>

## Example

```json theme={"theme":"github-dark"}
{
  "action_id": "act_reconcile_march",
  "question": "How should I categorize the $47.23 Target charge from March 18?",
  "choices": ["Groceries", "Household", "Kids"],
  "on_answer": "Apply the selected category to transaction txn_4421, then continue the March reconciliation batch from item 18."
}
```

## Closing your own question

If the agent finds the answer before the human responds, it can call `close_question` with a response. That records the resolution and removes the open question from the human's attention queue.

## Human responses

When a human answers, the answer becomes part of the question record. The agent should reread the scoped action, project, or order before continuing so it does not resume from stale context.
