Skip to content
Automation
Skill

/cao-session-management

Find available CAO (CLI Agent Orchestrator) agent profiles, and talk to the

From plugin
cli-agent-orchestrator
1.5k20 skills1 MCP

Claude Code

$ npx -y skills add awslabs/cli-agent-orchestrator --skill cao-session-management --agent claude-code

SKILL.md

cao-session-management.SKILL.md
name: cao-session-management
description: Find available CAO (CLI Agent Orchestrator) agent profiles, and talk to the
  conductor and worker terminals of a running CAO session, including unblocking a stuck
  worker. Use when choosing a profile to launch, messaging or unblocking workers, or
  diagnosing a stuck session. For preflight, launching, session commands, statuses,
  delegation and safety, run `cao --skill` first.

CAO Session Management

Operating CAO

Run `cao --skill` for the CAO operating guide: preflight, launch, session commands, statuses, delegation, and safety. Run `cao <group> --help` for exact syntax.

Two rules apply to every launch from an agent:

  • Use `--auto-approve`. It skips the confirmation prompt and leaves the profile's tool

policy unchanged; whether that policy is enforced depends on the provider (read the `Enforcement:` line launch prints). `--yolo` also skips the prompt but removes all tool restrictions, so the agent can run any command, including `aws`, `rm` and `curl`. Use `--yolo` only when the user asks for it.

  • If a `cao` command cannot reach the server, check it with

`curl -sf http://localhost:9889/health`.

A reported status is inferred from the rendered terminal screen, so it can disagree with reality. Before reporting readiness, progress, or completion to a user, corroborate the status with an output read; see [cao-session-liveness](../cao-session-liveness/SKILL.md).

Discovering Available Profiles

Profiles are CAO-level entities, installed with `cao install` regardless of which CLI provider runs them. To find available profiles:

| Source | Command | |--------|---------| | All available profiles, with the source each one resolved from | `cao profile list` (no server needed), or `curl -sf http://localhost:9889/agents/profiles` | | Profiles matching a keyword | `cao profile find "<keywords>"` | | Custom/local profile files only | `ls ~/.aws/cli-agent-orchestrator/agent-store/` | | Profiles installed via `cao install <name>` | `ls ~/.aws/cli-agent-orchestrator/agent-context/` | | Profile installation and keyword discovery | see [Agent profile installation](../../docs/agent-profile.md#installation) and [profile discovery](../../docs/agent-profile.md#profile-discovery) | | Provider-native list (`kiro_cli` only) | `kiro-cli agent list`, useful because CAO mirrors profiles into `~/.kiro/agents/` |

`cao profile list` and the HTTP endpoint return the same list. Discovery scans the local store (`agent-store/`) first, then provider-specific directories (including `agent-context/`), then extra directories from settings, and the built-in packaged store last. The first match wins, so a local copy of a profile shadows the built-in one with the same name. Each entry has a `source` label showing where it came from.

A profile runs on its frontmatter `provider:` unless `--provider` overrides it; the default is `kiro_cli`. Run `cao install --help` for the provider IDs.

If unsure which profile to use, ask the user rather than guessing.

Worker Communication

Inside a session, the conductor talks to workers via two MCP tools, described below.

**Prefer communicating through the conductor** (`cao session send SESSION "msg"`) rather than directly to worker terminals. Bypassing the conductor leaves it without state on what was asked or answered, which causes confusion. Two exceptions: unblocking a stuck worker, and follow-up questions to a persistent async worker (see below).

**handoff** (blocking) โ€” conductor sends task and waits for the worker to reach `COMPLETED` status, then reads the output. If it times out, the worker is still running โ€” the conductor just stopped waiting.

**assign** (non-blocking) โ€” conductor sends task and returns immediately. The worker is expected to call `send_message` back to the conductor's terminal ID when done. Each terminal only knows its own ID via `$CAO_TERMINAL_ID`.

By default the conductor uses sync (handoff). You can override this by explicitly asking it to use async or sync protocol when sending it a task.

Async workers (assign) stay alive after completing their task and can answer follow-up questions โ€” useful for ongoing investigation where you want to keep querying the same worker. In this case, sending directly to the worker terminal is appropriate:

cao session send SESSION "<follow-up question>" --terminal <worker-terminal-id>

Kiro SOP Workflows

For SOP-driven work on the `kiro_cli` provider, send `/prompts` to discover the available SOPs, then the matched SOP name prefixed with `@` (for example `@my-sop-name`), then the task. Send each as a separate message, and wait for `completed` status between them.

Common Mistakes

**Wrong working directory** โ€” agents won't find files, builds fail with confusing errors. Pass an absolute path in single quotes to `--working-directory`. A wrong path cannot be fixed without shutting down and relaunching; ask the user if the path is unclear.

**Launching with `--yolo` to avoid prompts** โ€” `--auto-approve` already skips the confirmation prompt. `--yolo` additionally removes every tool restriction, which the task almost never needs.

**Stuck conductor** โ€” conductor is waiting on a worker that stopped responding. Check the worker's status first, then decide: prompt it to continue and send results back, or ask it to resend if it already finished. Never re-delegate work that may still be running โ€” it risks duplicate work.

cao session status SESSION --workers
cao session status SESSION --terminal <worker-terminal-id>
cao session send SESSION "continue your work, then send results to terminal <conductor-terminal-id>" --terminal <worker-terminal-id>

Get the conductor's terminal ID from `cao session status SESSION --json`.

Read more
@awslabs
Ships withcli-agent-orchestrator

CLI Agent Orchestrator (CAO) coordinates multiple AI coding CLIs so a supervisor can delegate work to specialist agents in parallel or sequence. ๐Ÿ“š Documentation โ€” guides, reference, and two interactive courses.

1.5k20 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.5k
Star history of awslabs/cli-agent-orchestrator on GitHub, a chart by star-history.com

Other skills on cli-agent-orchestrator.

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, andโ€ฆ

n8n11d209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also coversโ€ฆ

@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, fillingโ€ฆ

@vercel-labs-2@vercel-labs-2Install Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use whenโ€ฆ

@nanocoai@nanocoaiInstall Skill

Questions about cao-session-management.

Which coding agents can use cao-session-management?
cao-session-management installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.