co issue — issues
Issue CRUD, parent/child (sub-issue) trees, and horizontal issue links
co issue operates on issues — create, list, view, edit, delete, the sub-issue (parent/child) tree, and horizontal issue links.
co issue create
Creates a new issue. If -t / -b / --type / --priority are omitted you'll get an interactive prompt.
co issue create -t "Bug X" --type bug --priority high
co issue create -t "Refactor" --type task --project web
co issue create --assignee none # leave unassigned| Flag | Description |
|---|---|
| -t, --title <title> | Issue title |
| -b, --body <body> | Description (markdown) |
| --type <type> | bug |
| --priority <p> | low |
| --status <status> | Initial status (default: backlog) |
| --project <name | key> |
| -L, --label <labels> | Labels — comma-separated names or ids |
| --assignee <user> | username/email/numeric ID. Default: yourself. "none" to leave unassigned |
| -W, --workspace <slug> | Workspace slug for this run, overriding the saved default (global flag) |
co issue list
Lists your issues, or every issue in the workspace, as a compact table.
co issue list
co issue list --scope workspace
co issue list -s in_progress,review
co issue list -l 50| Flag | Description |
|---|---|
| --scope <scope> | me |
| -s, --status <status> | Status filter, comma-separated for multiple |
| -l, --limit <n> | Maximum items to fetch across pages. 0 = all. Default 20 |
| -L, --label <labels> | Filter by label — comma-separated, OR semantics |
| --web | Open the issue list in the browser instead of printing |
co issue status
Groups your issues by role — opened by you / assigned to you. --limit is per section (default 5).
co issue status # 5 per section
co issue status --limit 10 # 10 per sectionTo see CRs alongside issues, use co status (alias co me).
co issue view <key>
Shows the full issue — status / priority badges, metadata (project, assignee, reviewer, due date, milestone, sprint), parent/sub-issue progress, and the description.
co issue view 123co issue activity <key>
Prints the issue's activity timeline — status changes, assignee changes, comments, links.
co issue activity 2950 # latest 30 blocks
co issue activity 2950 -l 100 # up to 100 (auto-follows the cursor)
co issue activity 2950 -l 0 # the entire history
co issue activity 2950 --web # open the issue page in the browser| Flag | Description |
|---|---|
| -l, --limit <n> | Maximum activity blocks to fetch across pages. 0 = all. Default 30 |
| --web | Open the issue in the browser instead of printing |
co issue edit <key>
Updates issue properties. At least one flag is required.
co issue edit 123 --status in_progress
co issue edit 123 --due 2026-05-20
co issue edit 123 --assignee bob --reviewer alice
co issue edit 123 --project web --milestone 17
co issue edit 123 --due none| Flag | Description |
|---|---|
| -t/-b | Title / body |
| --type / --priority / --status | Issue metadata |
| --assignee <user> | username/email/numeric ID, or none |
| --reviewer <user> | username/email/numeric ID, or none |
| --due <YYYY-MM-DD> | Due date, none clears |
| --project <name | key> |
| --milestone <key> | Milestone, none clears |
| --sprint <key> | Sprint key, none clears |
| --sprint-group <key> | Required when assigning a sprint |
| -L, --label <labels> | Replace all labels (or none to clear) |
| --add-label <labels> | Add these labels |
| --remove-label <labels> | Remove these labels |
co issue develop <key>
Creates a topic branch from an issue. The name is generated from the issue type and title as <type>/<key>-<slug>; because the key is in the branch name, a CR opened from it links back to the issue.
co issue develop 3010 # create the branch and check it out
co issue develop 3010 --worktree ../co-3010 # branch + worktree from origin/main
co issue develop 3010 -n hotfix/urgent # explicit branch name
co issue develop 3010 -t fix # override the prefix only
co issue develop 3010 --base develop # different base branch
co issue develop 3010 --no-checkout # create it but stay where you are
co issue develop 3010 --list # list CRs linked to the issue| Flag | Description |
|---|---|
| -n, --name <branch> | Explicit branch name (overrides the generated <type>/<key>-<slug>) |
| -t, --type <prefix> | Override the prefix only (fix, feat, chore, docs, refactor …) |
| --base <branch> | Base branch. Default main |
| --worktree <path> | Create a worktree at this path instead of moving the current checkout |
| --no-checkout | Create the branch but stay on the current HEAD |
| --repo <workspace/repo> | Override the repository. Defaults to the current git remote |
| --list | List the CRs linked to this issue and exit |
co cr develop is the same command.
co issue comment <key>
Adds a comment to an issue, the same way co cr comment does — -b for the body, -F to read from a file (or stdin), or no flags to compose in $EDITOR. @username in the body is converted to a mention automatically.
co issue comment 2084 -b "Triaged: next sprint"
co issue comment 2084 -F notes.md
git log -1 --pretty=%B | co issue comment 2084 -F -
co issue comment 2084 # opens $EDITOR| Flag | Description |
|---|---|
| -b, --body <text> | Comment body (omit to open $EDITOR) |
| -F, --body-file <path> | File or stdin('-') |
| -W, --workspace <slug> | Workspace slug for this run, overriding the saved default (global flag) |
Editing and deleting comments is not available in the CLI — use the web app.
co issue close / co issue reopen
co issue close 123 # status=done
co issue reopen 123 # status=todo (default)
co issue reopen 123 --status in_progressco issue delete <key>
Permanent delete. The server returns 409 if the issue has sub-issues, so you must opt in with --cascade.
co issue delete 123
co issue delete 123 --cascade -yco issue sub
Manages parent/child (sub-issue) links. The child issue itself remains a normal issue — only the link is added or removed.
co issue sub list 123 # direct children
co issue sub tree 123 # full tree
co issue sub add 123 456 # link existing Issue-456 under 123
co issue sub create 123 -t "Sub-task"
co issue sub remove 123 456 -y # unlink (child stays alive)co issue sub remove only severs the link. Call co issue delete <key> separately to remove the child issue itself.
co issue link
Manages horizontal issue links (related / blocking / blocked_by / duplicate). Unlike sub-issues, these are relations between peer issues rather than parent/child. Three subcommands: link list / add / remove.
co issue link list 123 # links on Issue-123 (viewer perspective)
co issue link add 123 456 # Issue-123 related to Issue-456
co issue link add 123 456 --type blocking # Issue-123 blocks Issue-456
co issue link add 123 456 --type blocked_by # Issue-123 is blocked by Issue-456
co issue link remove 123 42 -y # remove link ID 42 (both issues kept)| Flag | Description |
|---|---|
| --type <type> | related |
| -y, --yes | Skip the confirmation prompt on remove |
| -W, --workspace <slug> | Workspace slug for this run, overriding the saved default (global flag) |
add / list take an issue key, but remove takes a link ID (the first column of co issue link list) — not an issue key. link_type is viewer-relative, so a blocking link shows up as blocked_by on the other issue.
co issue link-doc / co issue unlink-doc
Links a doc to an issue or removes the link. Doc keys come from co docs list.
co issue link-doc 3010 365 # link Doc-365 to Issue-3010
co issue unlink-doc 3010 365 # remove the link