Skip to main content

crewship issue

Issue tracking wired directly into agent dispatch. Use these commands to create and triage issues, manage labels, comments, relations, and sub-issues, and hand work to an assigned agent (start / stop / review). Issues can also be bound to a routine so a fixed workflow runs whenever the issue is started.
crewship issue <subcommand> [flags]
Alias: crewship issues

Subcommands

CommandDescription
listList issues in the workspace
getShow issue details
createCreate a new issue
updateUpdate an issue
deleteDelete an issue
commentAdd a comment to an issue
commentsList comments on an issue
labelsList workspace labels
startStart an issue (dispatch to assigned agent)
stopStop an issue (cancel running tasks)
reviewReview an issue (approve or request changes)
activityShow the activity timeline for an issue
subtasksList sub-issues of an issue (aliases: subissues, sub-issues)
relateCreate a relation between two issues
relationsList relations for an issue (alias: relates)
unrelateRemove a relation by relation ID
bind-routineBind a routine slug to an issue (sets routine_id)
unbind-routineClear the routine binding on an issue
bulk updateApply the same patch to up to 100 issues in one round-trip

crewship issue list

List issues in the workspace with optional filters.
crewship issue list
crewship issue list --status IN_PROGRESS --crew backend-team
crewship issue list --priority high --label bug
crewship issue list --search "auth flow"
FlagTypeDefaultDescription
--statusstringFilter by status: BACKLOG, TODO, IN_PROGRESS, REVIEW, DONE, FAILED, CANCELLED, DUPLICATE.
--prioritystringFilter by priority: none, low, medium, high, urgent.
--crewstringFilter by crew slug or ID.
--assigneestringFilter by assignee ID.
--labelstringFilter by label name.
--searchstringSearch issues by title or description.
--limitint50Maximum number of issues to return.
Output columns: ID, TITLE, STATUS, PRIORITY, ASSIGNEE, CREATOR, CREW, LABELS, UPDATED

crewship issue get

Show issue details including comments.
crewship issue get <identifier>
crewship issue get BE-42
The identifier can be the issue identifier (e.g., BE-42) or the full ID. Output fields: Identifier, Title, Status, Priority, Crew, Assignee, Assignee Type, Description, Due Date, Mission Type, Labels, Comments count, Created By, Created, Updated, ID. Comments are displayed below the detail section.

Who created an issue

Every issue records its creator. The Created By field (and the CREATOR column in issue list) shows the resolved name, suffixed with (agent) when the issue was created by an agent through a tool call rather than by a human:
Created By   Scout (agent)     # created by the "Scout" agent
Created By   Pavel Srba        # created by a human via the API/UI
Created By   -                 # legacy issue, predates creator attribution
In --output json, the same information is available as the created_by object ({type, id, name}, where type is user or agent) plus authored_via (user_api or agent_tool_call).

crewship issue create

Create a new issue.
crewship issue create --crew backend-team --title "Fix login bug" --priority high
crewship issue create --crew backend-team --title "Add caching" --assignee viktor --labels <label-id>
FlagTypeDefaultDescription
--crewstring(required)Crew slug or ID.
--titlestring(required)Issue title.
--descriptionstringIssue description.
--prioritystringnonePriority: none, low, medium, high, urgent.
--assigneestringAssignee agent slug or user email.
--assignee-typestringagentAssignee type: agent or user.
--labelsstringComma-separated label IDs.
--due-datestringDue date in ISO 8601 format.
--project-idstringAttach to a project (ID).
--milestone-idstringAttach to a milestone (ID).
--parent-issue-idstringMake this a sub-issue of the given parent (issue ID).
--estimateint0Effort estimate (story points or hours, depending on workspace).
--sort-orderfloat640Manual sort order within a list (lower = top).
--routine-idstringBind to a routine (pipeline ID).

crewship issue update

Update an issue. Only changed flags are sent.
crewship issue update <identifier> --status IN_PROGRESS
crewship issue update BE-42 --priority urgent --assignee franta
FlagTypeDefaultDescription
--titlestringNew title.
--descriptionstringNew description.
--statusstringNew status: BACKLOG, TODO, IN_PROGRESS, REVIEW, DONE, FAILED, CANCELLED, DUPLICATE.
--prioritystringNew priority: none, low, medium, high, urgent.
--assigneestringNew assignee (agent slug).
--assignee-typestringAssignee type: agent or user.
--due-datestringDue date (ISO 8601).
--project-idstringProject ID (empty string = unlink).
--milestone-idstringMilestone ID (empty string = unlink).
--parent-issue-idstringParent issue ID (empty string = make top-level).
--estimateint0Effort estimate.
--sort-orderfloat640Manual sort order.
--routine-idstringRoutine (pipeline) ID; empty string = unbind.

crewship issue delete

Delete an issue. Prompts for confirmation.
crewship issue delete <identifier>
crewship issue delete BE-42 --yes
FlagShortTypeDefaultDescription
--yes-yboolfalseSkip confirmation prompt.
Deletion is permanent. --yes skips the prompt — reserve it for scripts.

crewship issue comment

Add a comment to an issue.
crewship issue comment <identifier> This is a comment
crewship issue comment BE-42 --body "Detailed comment here"
The comment body can be passed as positional arguments after the identifier, or via the --body flag (which takes precedence).
FlagTypeDefaultDescription
--bodystringComment body (alternative to positional args).

crewship issue labels

List all workspace labels.
crewship issue labels
Output columns: NAME, COLOR, GROUP

crewship issue start

Start an issue — dispatches work to the assigned agent.
crewship issue start <identifier>
crewship issue start BE-42

crewship issue stop

Stop an issue — cancels running tasks.
crewship issue stop <identifier>
crewship issue stop BE-42

crewship issue review

Review an issue — approve or request changes.
crewship issue review BE-42 --action approve
crewship issue review BE-42 --action request_changes --comment "Needs more tests" --reassign franta
FlagTypeDefaultDescription
--actionstring(required)Review action: approve or request_changes.
--commentstringReview comment.
--reassignstringAgent slug to reassign to (for request_changes).

crewship issue comments

List comments on an issue. Hits GET /api/v1/crews/{crewId}/issues/{ident}/comments after resolving <identifier> to its crew via fetchIssue.
crewship issue comments BE-42
Output columns: ID, AUTHOR, TYPE, BODY (truncated to 60 chars, newlines flattened), CREATED.

crewship issue activity

Dump the mission-activity timeline for an issue. Hits GET /api/v1/crews/{crewId}/issues/{ident}/activity. Server caps the result at 50 rows DESC — pipe through jq if you need older history.
crewship issue activity BE-42
crewship issue activity BE-42 --format json | jq '.[] | select(.action=="status_changed")'
Output columns: WHEN (relative time), ACTOR (type/name), ACTION, DETAILS (truncated to 60 chars).

crewship issue subtasks

List sub-issues — children whose parent_issue_id equals this issue’s id. Mirrors the SubIssues panel on the issue-detail page. Aliases: subissues, sub-issues.
crewship issue subtasks BE-42
crewship issue subissues BE-42                # alias
Output columns: ID, TITLE (truncated to 50), STATUS, PRIORITY, ASSIGNEE.

crewship issue relate

Create a typed link between two issues. Wraps POST /api/v1/crews/{crewId}/issues/{ident}/relations.
crewship issue relate BE-42 BE-50 --type blocks
crewship issue relate BE-42 BE-50 --type blocked-by   # hyphens auto-normalised to underscores
FlagDefaultDescription
--typerelates_toRelation type: blocks, blocked_by, relates_to, duplicate_of. Hyphenated forms (blocked-by, relates-to, duplicate-of) are normalised client-side.

crewship issue relations

List existing relations on an issue. Alias: relates.
crewship issue relations BE-42
Output columns: ID, TYPE, TARGET (identifier), TITLE (truncated to 40), STATUS.

crewship issue unrelate

Remove a relation by its relation ID (not the issue identifier). Hits DELETE /api/v1/relations/{id}.
crewship issue unrelate rel_01HVZ...

crewship issue bind-routine

Bind a routine slug to an issue — the server stores the underlying routine_id (pipeline UUID) so subsequent routine renames don’t break the link. Wraps PATCH /api/v1/crews/{crewId}/issues/{ident} with {"routine_id": <id>}.
crewship issue bind-routine BE-42 my-pr-review-routine
The slug is resolved client-side via the workspace’s routine list before the PATCH, so a typo surfaces as routine "xyz": <404> instead of a silent no-op.

crewship issue unbind-routine

Clear the routine binding (server normalises empty string to SQL NULL).
crewship issue unbind-routine BE-42

crewship issue bulk update

Apply the same field updates to up to 100 issues in a single round-trip. Wraps PATCH /api/v1/issues/bulk. The 100-id cap is enforced both client-side (friendly error) and server-side (400).
crewship issue bulk update --ids ms_a,ms_b,ms_c --status DONE
crewship issue bulk update --ids ms_a,ms_b --priority high --assignee agent_xyz
crewship issue bulk update --ids ms_a,ms_b --labels lbl_bug,lbl_p0
FlagTypeDefaultDescription
--idsstring(required)Comma-separated issue IDs (CUIDs, not identifiers). Empty entries are stripped; >100 entries reject locally.
--statusstringNew status for all listed issues.
--prioritystringNew priority.
--assigneestringAssignee ID (NOT a slug — bulk callers tend to script with IDs). Empty string clears the assignee.
--assignee-typestringagentForwarded only when --assignee is non-empty.
--projectstringProject ID. Empty string unlinks the issue from its project.
--labelsstringComma-separated label IDs. REPLACES the existing label set on each issue; empty string clears all labels.
At least one of --status / --priority / --assignee / --project / --labels must be supplied. Response surfaces as Bulk update applied to <updated>/<requested> issue(s). — the two counts differ when some IDs were 404 or 403.