Helix Operator
Operator is the autonomous execution mode of Helix. It takes a high-level request, breaks it into a plan, runs tools inside a sandbox, tests the result, and reports back. You can let it run end-to-end or require approval for risky steps.
What Operator can do
- Scaffold a new codebase or modify an existing repository.
- Run tests, linters, typecheckers, and migrations.
- Inspect logs, metrics, and infrastructure state.
- Propose and execute infrastructure changes through plans.
- Loop on failures until the goal is reached or it needs human guidance.
Autonomy levels
The autonomy level controls how much Operator decides on its own.
| Level | Description |
|---|---|
advisory | Operator proposes a plan but waits for explicit approval for every step. |
semi | Operator runs safe steps on its own (reads, tests, formatting) and asks before writes or deploys. |
full | Operator executes the full plan unless it encounters an error it cannot resolve or a risk above the configured threshold. |
You set the autonomy level per conversation. Higher autonomy does not bypass safety gates for destructive actions or access to secrets.
Plan-execute-evaluate loop
- Recon — gather context: repository state, dependencies, task description.
- Plan — generate a task list with explicit completion criteria.
- Execute — run the next unblocked task using the appropriate tool.
- Evaluate — observe the output and decide whether the task advanced.
- Synthesize — if the goal is complete, call
helix_finish; otherwise continue.
The loop is event-driven. Each tool result is stored in the conversation history and visible in the workspace panel.
Plan approval
If a plan contains write, deploy, or external actions, Helix renders an ApprovalCard in the workspace and waits for your response. You can approve the whole plan, approve step-by-step, or reject it. Rejection pauses the run and lets you explain what to change.
Task list and stuck detection
Operator maintains a TaskList with pending, in_progress, and completed states. The controller advances tasks based on successful tool observations. A separate stuck detector watches the loop; if no meaningful progress happens for a configured number of turns, Operator pauses and asks you for direction.