Skip to main content

crewship approvals

Manage the Harbormaster approval queue — list pending human-in-the-loop requests and decide them.
crewship approvals <subcommand> [flags]
list is safe for any workspace member; approve, deny, and cancel require OWNER or ADMIN role server-side (403 otherwise).

Subcommands

CommandDescription
listList approval requests.
get <id>Fetch a single approval request with full detail.
approve <id>Approve a pending request.
deny <id>Deny a pending request.
cancel <id>Withdraw a pending request (moves it to cancelled).
reset-auto-tuning <tool>Wipe rolling reward history for a tool to re-train gate auto-tuning.

crewship approvals list

crewship approvals list                                    # pending only (default)
crewship approvals list --status approved --limit 100
crewship approvals list --status all                        # full history
FlagTypeDefaultDescription
--statusstringpendingOne of pending, approved, denied, timeout, cancelled, all.
--limitint50Max rows (server caps at 200).
Sample output:
req_01HXYZABCDEF         [pending ]  destructive_op    backend-team      viktor            rm -rf /data/*
req_01HXYZGHIJKL         [approved]  cost_threshold    backend-team      eva               Claude Opus 4.7 $7.20 estimate
req_01HXYZMNOPQR         [denied  ]  target_environm   platform          oliver            ssh ops@prod-db-01
Columns: ID, status chip (colored), kind, crew, agent, reason (truncated).

crewship approvals approve <id>

crewship approvals approve req_01HXYZABCDEF --comment "reviewed with staging validation"
FlagTypeDefaultDescription
--commentstringOptional comment recorded with the decision.
Sample output:
✓ Approval req_01HXYZABCDEF: approved (by user_123)

crewship approvals deny <id>

crewship approvals deny req_01HXYZABCDEF --comment "wrong mission target"
FlagTypeDefaultDescription
--commentstringOptional comment recorded with the decision.

crewship approvals cancel <id>

Withdraw a still-pending request without approving or denying it. The request moves to the cancelled status. Use this when the gated action is no longer relevant (mission aborted, agent retired, duplicate request). Only pending requests can be cancelled — an already-decided or already-cancelled request returns a conflict.
crewship approvals cancel req_01HXYZABCDEF
crewship approvals cancel req_01HXYZABCDEF --reason "mission aborted"
FlagTypeDefaultDescription
--reasonstringOptional reason recorded with the cancellation.
Sample output:
✓ Approval req_01HXYZABCDEF: cancelled (by user_123)

crewship approvals get <id>

Fetch one approval request and render its full detail (kind, args, reason, decision metadata). The entry is workspace-scoped — IDs from other workspaces return 404.
crewship approvals get apr_abc123
crewship approvals get apr_abc123 --format json | jq .args
Text mode prints canonical fields (id, status, kind, reason, crew_id, agent_id, mission_id, requested_by, decided_by, decided_at, comment, created_at, updated_at) up top, then any extra keys verbatim so an evolving server payload still renders something useful.

crewship approvals reset-auto-tuning <tool>

Wipe the reward history used by Harbormaster gate auto-tuning for the given tool. Auto-tuning downgrades sync→async after 90%+ approvals and upgrades async→sync after 70%+ denials, over the last 20 decisions per tool+args shape. When that window gets skewed (e.g. automation approving on humans’ behalf for a stretch), reset to make the gate respect the configured mode again until humans re-train it naturally.
Permanently wipes the rolling reward history for the tool (no confirmation). Requires OWNER or ADMIN on the caller’s workspace.
crewship approvals reset-auto-tuning shell.exec
crewship approvals reset-auto-tuning "terraform apply"
Output reports rows_deleted from gate_reward_history.

Errors

ExitMeaning
401Not authenticated. Run crewship login.
403Logged in but not OWNER or ADMIN.
404Request ID not found in your workspace.
409Request already decided (status is no longer pending).