Skip to main content
Each crew carries an autonomy posture that gates every HITL-relevant decision the orchestrator makes — memory writes, skill creation, behavior-monitor escalations, persona suggestions, ephemeral spawns. The dial is read by every subsystem via the shared policy resolver, so a PUT takes effect immediately (the resolver cache is invalidated on write). The CLI counterpart is crewship policy get/list/set. All endpoints require authentication and workspace context. Validation rules:
  • full + block is forbidden.
  • reason is required when setting autonomy_level=full.

List Policies

Returns the policy for every (non-deleted) crew in the workspace, ordered by crew name. Used by crewship policy list to render the overview table. Response: 200 OK

Response Fields


Get Crew Policy

Returns the current policy for one crew. Defaults (guided / warn) are baked into the database, so this is always a single read. Response: 200 OK
set_by_user_id / set_at / reason are omitted on crews whose policy still matches the seed defaults (no operator has ever flipped it).

Set Crew Policy

Replaces the policy. Records the audit triple (set_by_user_id, set_at, reason) atomically with the value change and invalidates the resolver cache so the next decision sees the new state. Request Body:
Response: 200 OK — the same shape as GET, reflecting the new state and the freshly-recorded audit triple. Journal event: policy.changed (workspace audit feed)