Task Types
Process
Runs a shell command as a subprocess (e.g.,
claude -p "analyze codebase"). Done when the process exits.Agent
Runs a LangGraph agent with its own tools and context. Done when the agent calls
task_complete.Quick Start
Dispatch a background task from the CLI:dispatch_background tool and will use it when a task is clearly long-running.
Slash Commands
| Command | Description |
|---|---|
/bg <command> | Dispatch a background process task |
/tasks | List all tasks (running, completed, paused, failed) |
/task <id> | Show task details and output |
/task <id> cancel | Cancel a running task |
/task <id> resume <answer> | Resume a paused task with your answer |
Task Lifecycle
escalate_question — the agent asks a question, execution pauses, and the user answers via /task <id> resume <answer>.
Escalation
When a background agent needs user input:- Agent calls
escalate_question("Should I also refactor the helper functions?") - Task status changes to paused
- You get a notification (CLI + Telegram)
- You respond:
/task abc123 resume yes, refactor them - Agent continues with your answer
Persistence
Tasks are stored as JSON files in.octo/tasks/. They survive restarts — on next launch, you can check results of previously completed tasks with /tasks.
Configuration
| Variable | Default | Description |
|---|---|---|
BG_MAX_CONCURRENT | 3 | Maximum parallel background tasks |
ADDITIONAL_CLAUDE_ARGS | — | Extra flags injected into all claude -p subprocess calls |
Process tasks run with no timeout by default — they complete when the subprocess exits naturally. The supervisor can set an explicit timeout (in seconds) when dispatching via the
dispatch_background tool if needed. You can always cancel a task manually with /task <id> cancel.
