CLI command reference
Every convoy command and flag, derived from the CLI's own command definitions.
The full convoy command surface. Narrative setup guides live in
CLI & AI integrations; this page is the flat catalog.
Global options
Available on every command (and repeatable after subcommands):
| Flag | Purpose |
|---|---|
--profile <key> | Profile key for profile lookup |
--url <url> | Convex backend URL (overrides config) |
--api-key <key> | API key (overrides config) |
--project <id> | Project ID (overrides config) |
Environment variables:
| Variable | Purpose |
|---|---|
CONVOY_PROFILE | Select the profile non-interactively |
CONVOY_CLI_DEBUG=1 | Verbose logging, truncated at 400 chars/line |
CONVOY_CLI_DEBUG=2 | Verbose logging, no truncation |
Setup and configuration
convoy setup
Interactive setup wizard. All flags are optional prefills, enabling non-interactive use:
| Flag | Purpose |
|---|---|
--url <url> | Prefill Convex URL |
--api-key <key> | Prefill API key |
--profile <name> | Prefill profile display name |
--profile-key <key> | Prefill profile key (used in the config file) |
--project <id> | Prefill project ID |
--path <path> | Workspace folder path (defaults to current directory) |
-f, --force | Overwrite an existing profile key |
When run interactively without --api-key, setup asks whether to log in
with the browser (recommended) or paste a key.
convoy login
Browser-approve login: prints an approve link plus a backup device code,
waits for approval in the web app, then continues with the same project
selection and profile save as convoy setup. Accepts the same flags as
setup except --api-key.
convoy config
| Subcommand | Purpose |
|---|---|
config list | List all configured profiles |
config show | Show the resolved profile for the current directory |
config default <key> | Set the default profile |
config delete <key> [-f] | Delete a profile (-f skips confirmation) |
convoy paths
| Subcommand | Purpose |
|---|---|
paths list | List paths for the resolved profile |
paths add [path] | Add a path (defaults to current directory) |
paths remove <path> | Remove a path |
convoy keys
Manage model providers stored locally in config.toml. These are Bedrock or
Mantle credentials for Claude Code — or a credential-free entry pinning a
Claude.ai subscription — not the Convoy API key used to authenticate the
CLI with the backend. See
Model provider keys for the walkthrough.
| Subcommand | Purpose |
|---|---|
keys add <name> | Store or update a named provider entry |
keys list | List stored entries with masked tokens and profile assignments (ls alias) |
keys use <name> | Assign a key to the resolved profile |
keys unassign | Clear the resolved profile's assignment |
keys remove <name> | Delete an unassigned key (rm alias) |
keys add <name> options:
| Flag | Purpose |
|---|---|
--provider <provider> | bedrock, mantle, or anthropic; prompted when omitted |
--token <token> | API key or bearer token; prompted with masked input when omitted. Rejected for anthropic |
--region <region> | Optional AWS region, such as us-east-1. Rejected for anthropic |
--provider anthropic stores no credential: profiles using that entry run
Claude Code on the machine's own Claude sign-in (a Claude.ai subscription),
overriding Bedrock or Mantle settings the machine enables globally.
keys use and keys unassign accept --profile <key> to select a profile
explicitly. Without it, normal profile resolution applies. Assignment
changes take effect on the next convoy connect.
convoy status
Show configuration and connection status.
Agent bridge
convoy connect
Start the long-running agent connection.
| Flag | Default | Purpose |
|---|---|---|
--repo <path> | current directory | Path to the repository the agent runs in |
--name <name> | folder name | Display name for this session |
-c, --concurrency <n> | profile value, otherwise 5 (max 50) | Max simultaneous chat subprocesses |
--buffered | off (streaming on) | Send whole agent events only, instead of streaming partial (delta) events for live token streaming in the web app |
--codex-exec | off (app-server on) | Serve Codex threads over non-interactive codex exec --json instead of the app-server protocol (loses mid-run approvals, plan mode, steering, deltas, context-window meter) |
--provider-key <name> | profile assignment | Use a stored provider key for this run without changing the profile |
-s, --stream <path> | — | Stream from a JSONL fixture instead of a real agent |
-d, --delay <ms> | 1500 | Delay between streamed lines with --stream |
Integrations
convoy init mcp
Create or update MCP server config for selected CLI targets (.mcp.json
and/or .codex/config.toml).
| Flag | Purpose |
|---|---|
--cli <target...> | Targets: claude, codex (repeat or comma-separate; default both) |
-o, --output-dir <path> | Directory to write config files (default: cwd) |
-f, --force | Overwrite existing config without prompting |
convoy init skill
Install Convoy skills for Claude Code and/or Codex.
| Flag | Purpose |
|---|---|
--cli <target...> | Targets: claude, codex (repeat or comma-separate) |
-s, --scope <scope> | Installation scope: project or user (prompts if omitted) |
--claude-method <method...> | Claude install method(s) when more than one applies |
-f, --force | Overwrite existing skill files without prompting |
Bare convoy init accepts the union of both subcommands' flags and runs
both steps.
Listing commands
| Command | Purpose |
|---|---|
orgs list | List accessible organizations |
projects list | List projects |
task-types list | List task types available in a project |
project-agents list | List Project agents |
project-agents create | Create a Project agent |
project-agents update <projectAgentId> | Update a Project agent |
lists list | List project Lists (Backlog and friends) |
lists create | Create a project List |
lists update <list> | Rename, re-ref, recolor, or set the default view of a project List |
labels list | List project labels (in board-column order) |
prompts list | List project or organization prompts |
prompts create | Create a prompt |
prompts update <promptId> | Update a prompt |
skills list | List project or organization Skills |
skills show <skillId> | Show a Skill with its SKILL.md and file list |
skills create | Create a Skill |
skills update <skillId> | Update a Skill |
skills remove <skillId> | Delete a Skill |
profiles list | List your CLI profiles in a project, with online state and available runtimes |
threads list [<containerId>] | List CLI threads in a project, or one thread group's members |
threads get <threadId> | Get a thread, or a thread group's metadata |
threads messages <threadId> | Read a thread's most recent messages |
Tasks
All task commands support --output <text|json>; list-like commands
support pagination via --limit <n> and --cursor <cursor>. --org <org>
takes an organization ID or slug and is used together with --project
as an alias.
convoy tasks list
| Flag | Purpose |
|---|---|
--status <status...> | Filter statuses (repeat and/or comma-separate) |
--list <list> | List ID or bare List ref |
--archived | List archived tasks |
--include-links | Print each task's external links in text output |
convoy tasks search <query>
| Flag | Purpose |
|---|---|
--archive-mode <mode> | active or archived (default: active) |
--status <status> | Filter by task status |
--assignee-id <userId> | Filter by owner (human assignee) |
--unassigned | Filter to tasks with no owner |
--delegated-to-agent <projectAgentId> | Filter by delegated project agent |
--list <list> | List ID or bare List ref |
convoy tasks get <taskId>
Get a task with external links, artifacts, files, subtasks, and optional
comments (--comments <n>, 1–50). Text output prints Assignee: (the human
owner) and, when the task is delegated, Delegated to: (the executing
agent).
A Runs: section lists the CLI threads that have worked the task — status,
title, thread ID, runtime, and who ran it — newest first. This includes your
teammates' runs, not just your own, so it answers "is an agent already on
this ticket?" before you start. Pass a thread ID to
convoy threads get for its runtime
target, or threads send to message it.
convoy tasks refs <refs...>
Get tasks by refs (e.g. convoy tasks refs ABC-1 ABC-2). Supports
--comments <n>.
convoy tasks create
| Flag | Purpose |
|---|---|
--name <name> | Task name (required) |
--parent-id <taskId> | Create as a subtask of this task |
--task-type-key <key> | Task type key |
--priority <priority> | None, Low, Medium, High, Critical |
--status <status> | Task status |
--due-date <value> | Unix seconds/ms or ISO-8601 |
--assignee-id <userId> | Owner (human assignee) |
--delegate-to-agent <projectAgentId> | Delegate execution to this project agent |
--tags <tag...> | Tags (repeat and/or comma-separate) |
--list <list> | List ID or bare List ref |
--label <label> | Label ID or exact name |
convoy tasks update <taskId>
Same field flags as create, plus clearing variants:
--clear-description, --clear-due-date, --unassign, --clear-delegation,
--clear-tags, and --label <label> / --clear-label.
--unassign clears the owner (any delegation is kept);
--clear-delegation clears the delegated agent (the owner is kept) and is
mutually exclusive with --delegate-to-agent. Delegating a task with no
owner auto-sets you as owner.
convoy tasks move <task>
Move a task (ID or ref) to a new parent (--parent <task>) or to
top-level (--top-level).
convoy tasks move-to-list <tasks...>
Move 1-25 task IDs/refs to a persisted List or Backlog in one mutation.
| Flag | Purpose |
|---|---|
--list <list> | List ID, bare List ref, or BACKLOG (required) |
convoy tasks comments add <taskId>
Create an ordinary markdown task comment. Pass exactly one of
--message <text> or --message-file <path>. Raw IDs, bare refs, and scoped
refs are supported.
convoy tasks delete <taskId>
| Flag | Purpose |
|---|---|
--cascade <mode> | delete_all (default) or keep_children |
Lists
Managing Lists requires List management permissions (project members and admins).
convoy lists create
| Flag | Purpose |
|---|---|
--name <name> | List name (required, unique per project, max 80 chars) |
--ref <ref> | List ref (uppercase; derived from the name when omitted) |
--color <hex> | Color from the List palette |
--default-view <list|board> | Default view for this List (inherits the project default when omitted) |
--board-group-by <field> | Board grouping (status, assignee, priority, type, label); requires --default-view board |
convoy lists update <list>
<list> is a raw List ID or bare List ref (e.g. SPRINT-1); system Lists
like BACKLOG cannot be updated. Requires at least one flag.
| Flag | Purpose |
|---|---|
--name <name> | New List name |
--ref <ref> | New List ref |
--color <hex> | New color from the List palette |
--clear-color | Clear the List color (mutually exclusive with --color) |
--default-view <list|board> | Default view for this List |
--board-group-by <field> | Board grouping; requires --default-view board |
--clear-default-view | Inherit the project default view again (mutually exclusive with --default-view) |
Archiving, deleting, and changing the default List stay in the web UI.
Project agents
Project-agent commands use the standard --project / --org resolution and
support --output <text|json>.
convoy project-agents create
Requires --name <name> and --color <palette-color>. Optional fields:
--description, --prompt, and --category.
Assignment automation is a whole-value configuration:
--automation enabled|disabled--automation-prompt <text>--automation-cli-type <type>--automation-cli-model <model>--automation-cli-effort <effort>--automation-mode <mode>--automation-workspace local|worktree
convoy project-agents update <projectAgentId>
Supports the create fields plus --clear-description, --clear-prompt,
--clear-category, and --clear-automation. Automation detail flags require
--automation enabled|disabled; providing automation replaces the complete
stored configuration.
Prompts
Prompts (slash commands) live either on a project or on an organization. Every
prompt command supports --output <text|json> and picks its scope with
--scope project|organization (default project).
Under --scope organization, --org <orgId|orgSlug> names the target
organization on its own — including an organization with no projects you can
access; leave it out to use the organization of the resolved project. Under
project scope, --org only disambiguates --project and cannot be used alone.
convoy prompts list
List active prompts for the resolved project or organization.
convoy prompts create
Requires --key <key> (without the leading slash) and --content <content>.
Optional: --description, --category, --auto-expand, --auto-submit.
convoy prompts create --key review --content "Review this contract." --project WEB
convoy prompts create --scope organization --org acme --key handoff --content "Write a handoff doc."convoy prompts update <promptId>
Updates only the flags you pass: --key, --content, --description,
--category, --auto-expand / --no-auto-expand, --auto-submit /
--no-auto-submit, plus --clear-description and --clear-category. No scope
flags — the stored prompt carries its own scope.
Deleting a prompt stays in the web UI.
Skills
A Skill is a SKILL.md plus optional additional files. list and create take
--scope project|organization, defaulting to the profile's project, and
--org <orgId|orgSlug> for organization scope — the same flags the prompt
commands take.
show, update, and remove take a Skill ID, which carries its own scope.
Managing organization Skills requires organization owner or admin; a project Skill
requires project admin or member.
convoy skills list
Lists the project's or the organization's Skills with their version, name, description, and category.
convoy skills show <skillId>
Prints the Skill's columns, its SKILL.md, and the paths of its other files.
--output json includes every file's content.
convoy skills create
Requires --name and either --content <content> or --content-file <path>.
Optional: --description, --category, --scope, --org.
convoy skills create --name pdf-tools --content-file ./SKILL.md --project WEB
convoy skills create --name pdf-tools --content-file ./SKILL.md --scope organization --org acmeconvoy skills update <skillId>
Updates only the flags you pass: --name, --content / --content-file,
--description, --category, plus --clear-description and
--clear-category. SKILL.md is stored verbatim and never rewrites the name or
description.
convoy skills remove <skillId>
Deletes the Skill. Files inside it are unreachable afterwards.
Editing a Skill file by file — adding, renaming, or patching one file — is an MCP operation: see MCP tools.
Labels
Project labels are single-valued, colored, ordered task classifications
(managed set, distinct from free-form tags). Managing labels requires project
admin permissions; assigning one to a task needs only task-update permission.
Wherever a command takes a <label>, you may pass the label's raw ID or its
exact name (case-insensitive).
convoy labels list
List a project's labels in board-column order. Supports --output <text|json>
and --org <org>.
convoy labels create
| Flag | Purpose |
|---|---|
--name <name> | Label name (required, unique per project, max 50 chars) |
--color <hex> | Color from the extended palette (default: blue) |
convoy labels update <label>
| Flag | Purpose |
|---|---|
--name <name> | New label name |
--color <hex> | New color from the extended palette |
convoy labels delete <label>
Deletes the label and resolves every task that references it (including soft-deleted and archived tasks) in one mutation.
| Flag | Purpose |
|---|---|
--resolution <mode> | clear (default), reassign, or archive |
--reassign-to <label> | Target label (required for --resolution reassign) |
Label reordering is not exposed on the CLI — board-column order is managed in the web UI.
Task links
convoy tasks links ...
External links on a task (commits, branches, pull requests, generic URLs).
Use a deterministic --id (e.g. github-pr-acme-app-12) so repeated
upserts update instead of duplicating. The link URL flag is --link-url
(--url is the global backend override).
| Subcommand | Purpose |
|---|---|
links upsert <taskId> --id <id> --kind <kind> | Create or replace a link. Kinds: commit (requires --sha), branch (requires --name), pull_request / url (require --link-url). Optional: --title, --repo, --branch, --identifier |
links delete <taskId> --id <id> | Delete a link (idempotent) |
Task artifacts
convoy tasks artifacts ...
| Subcommand | Purpose |
|---|---|
artifacts list <taskId> | List markdown artifacts for a task |
artifacts get <artifactId> | Get an artifact by ID |
artifacts create <taskId> --name <name> | Create an artifact (--content <md> or --content-file <path>, optional --run-id <id>) |
artifacts update <artifactId> | Update fields (--name, --content, --content-file, --clear-content, --run-id, --clear-run-id) |
artifacts replace <artifactId> | Replace an exact string (--old-string / --old-string-file, --new-string / --new-string-file, --replace-all) |
artifacts move <artifactId> --to-task <taskId> | Move an artifact to another task in the same project |
artifacts delete <artifactId> | Delete an artifact |
CLI profiles
convoy profiles list
List your CLI profiles in a project, with the online state, CLI version, and
available runtimes each connected machine reports, plus its working paths and
path IDs. Supports --output <text|json> and --org <org>.
This is the server's view of your machines — convoy paths and
convoy status read local config instead.
Threads
Read-only views of CLI threads. A thread group is a container row with no
transcript of its own: it lists as a single row with a child count, and its
members come from threads list <containerId>.
convoy threads list [<containerId>]
List the project's threads, newest activity first. Pass a group's container ID to list that group's members instead.
| Flag | Purpose |
|---|---|
--include-done | Include threads marked done (default: off) |
--limit <n> | Page size, 1–50 (default: 20). Ignored for a group's members |
--cursor <cursor> | Pagination cursor. Not used for a group's members |
Listing a group's members needs no project and is never paginated — a group holds at most 100 threads and is read in one pass.
convoy threads get <threadId>
Get one thread: its status, runtime, target profile with online state, working path, and queue state. Given a group's container ID, prints the group's metadata (kind, child count, group status, origin thread) instead of a runtime target.
convoy threads messages <threadId>
Read a thread's most recent messages, oldest first. --limit <n> takes 1–20
(default: 10). Text is composed from the agent's prose only — tool calls, tool
output, and reasoning are not included, so a turn that only ran tools reads as
empty. A group has no transcript and is an error.
See also
One-shot commands— usage patterns and examplesConfig file (config.toml)— whatsetupwrites and how profiles resolveMCP tools reference— the equivalent catalog for the MCP server