---
title: Troubleshooting
description: Common AO problems and concrete fixes. Most start with `ao doctor`.
---
import { Accordions, Accordion } from "fumadocs-ui/components/accordion";
## First step: `ao doctor`
```bash
ao doctor
ao doctor --fix # auto-repair safe things
ao doctor --test-notify # send a test through each notifier
```
Covers: install health, plugin resolution, notifier connectivity, stale temp files.
## Install & environment
The npm global bin isn't on your PATH. Find it with `npm config get prefix` and add `/bin` to your shell's PATH.
Expected. Use `runtime: process` in your config. See [Platforms](/docs/platforms#windows).
Run `gh auth login`. AO uses `gh` for every GitHub interaction.
AO auto-picks the next free port. You'll see the actual URL in the `ao start` output.
Stale Next.js artifacts. Run `ao dashboard --rebuild`.
## Agents & sessions
The agent never reached idle state. Run `ao status --watch` to see what's happening — if it's legitimately working (e.g. large install step), wait. Otherwise `ao session kill ` and spawn again.
`getActivityState` reads the agent's JSONL / activity log. If that file is missing or stale, you'll see wrong states. `ao doctor` flags this. See the agent's individual plugin page under [Plugins › Agents](/docs/plugins/agents) for recovery.
The PATH wrapper didn't record it (possible if the agent called `gh` by absolute path). Use `ao session claim-pr ` to link retroactively.
`ao session restore ` relaunches the agent in the same worktree. If restore keeps failing, check the agent plugin's resume docs — some agents don't support resume at all (Cursor, Aider).
Run `ao session remap ` to re-discover the OpenCode mapping. Use `--force` if a stale mapping is stuck.
## GitHub / SCM
AO paces calls, but heavy projects can still hit limits. The lifecycle manager backs off automatically. If you see sustained rate-limit errors, check that you're logged in as yourself (`gh auth status`) — unauthenticated calls have much lower limits.
`reactions.ciFailed.enabled: false` in your config, or the PR is in draft. See [CI recovery › When it doesn't kick in](/docs/guides/ci-recovery#when-it-doesnt-kick-in).
Review feedback is only replayed on `CHANGES_REQUESTED` — not on plain `COMMENTED` reviews. See [Review loop](/docs/guides/review-loop).
HMAC signature check failing. Verify your `secretEnvVar` is exported and matches the secret you set on GitHub.
## Notifications
System Settings → Notifications → allow your terminal app.
Expected. Add Discord, Slack, or a webhook notifier in the same `notifier:` list.
The slack notifier doesn't honor Retry-After. Use the generic [webhook notifier](/docs/plugins/notifiers/webhook) with `retries` tuned up.
## Windows-specific
Expected on Windows. The iTerm2 helper only runs on macOS. Use the dashboard's built-in terminal (the printed URL takes you there).
Shell quoting issue. Pass long prompts via `--prompt` with simple ASCII, or via `ao send --file `.
## Still stuck
- Check the [FAQ](/docs/faq).
- Open an issue: [`ComposioHQ/agent-orchestrator`](https://github.com/ComposioHQ/agent-orchestrator/issues).
When opening an issue, include:
- Output of `ao --version`
- The contents of `~/.agent-orchestrator/{hash}-observability/processes/` (one JSON snapshot per process; each contains traces, health, and metrics)
- Your `agent-orchestrator.yaml` (redact any secrets)