Skip to content

Profile errors

Interpret the stable profile error code, message, and action returned by CLI, HTTP, and UDS.

For people running agent work7 pages in this section

Profile failures use one shape across structured CLI output, HTTP, and UDS:

{
  "error": {
    "code": "profile_archived",
    "message": "profile \"finance\" is archived",
    "action": "run compozy profile unarchive finance"
  }
}

The CLI exits with status 1. Under -o json it emits the object above; JSONL emits the same object as one line. Human output combines message and action without changing their meaning.

CodeMeaning
profile_not_foundThe requested profile does not exist.
profile_archivedSelection requires an active profile.
profile_name_invalidThe name does not match the profile grammar.
profile_name_takenAnother profile already owns the name.
profile_name_reservedThe name is reserved by an aggregate or permanent lens.
profile_permanentThe operation would mutate the permanent default.
profile_owns_workDelete cannot remove work owned by the profile.
profile_sessions_runningArchive must wait for running sessions to stop.
profile_deliveries_in_flightA guarded delivery still owns profile work.
profile_approvals_pendingA pending approval must be resolved first.
profile_plan_staleState changed after the plan was prepared.
profile_unavailableThe profile subsystem is not ready for the operation.
profile_session_conflictThe requested profile conflicts with session ownership.
profile_selection_conflictSelection flags request incompatible views.
profile_config_key_deniedThe config key cannot be overridden by a profile.
profile_secret_env_forbiddenA profile secret cannot come from the shared environment.
profile_remote_management_forbiddenA remote listener rejected a profile-state write.

Use the returned action as the recovery instruction. For profile_plan_stale, fetch a new plan and review it before retrying. For profile_remote_management_forbidden, repeat the mutation on a local surface rather than changing the remote Gateway tier.

Manage the profile lifecycle explains the plans behind profile_plan_stale and profile_unavailable. Select a profile covers profile_session_conflict and profile_selection_conflict, and Profile layer precedence covers profile_config_key_denied.

On this page