← Back to Patterns

Org autonomy profiles

Availablehumanosintermediate

# Org autonomy profiles

Every org chooses how much machine autonomy to allow before HumanOS requires explicit human approval. The profile lives on cp_orgs.autonomy_profile and is loaded on each agent execution by @human/agent-runtime.

Overview

ProfileBehavior
paranoidEvery muscle invocation requires human approval — regardless of risk or reversibility.
balancedDefault. Critical risk always gated; high risk gated when irreversible; low/medium proceed when delegation allows.
aggressiveOnly critical risk requires approval.
Runtime enforcement is in MuscleContextImpl (packages/agent-runtime/src/context/muscle-context-impl.ts), fed by loadOrgAutonomyProfileFromDb (packages/agent-runtime/src/org-autonomy-profile.ts).

Why this matters

  • Sovereignty: humans set org-wide guardrails, not per-prompt vibes.
  • Fourth Law: low confidence escalates separately — autonomy profile gates *action*, not *uncertainty*.
  • Provenance: autonomy overrides are metered (agent.autonomy.override).
  • Set org profile (Control Plane)

    >
    SDK:

    Valid values: paranoid, balanced, aggressive. Missing or invalid DB values fall back to balanced.

    Runtime loading (agent authors)

    Agent runtime reads the profile once per execution context:

    import { loadOrgAutonomyProfileFromDb } from '@human/agent-runtime';

    // Called inside AgentRuntime.createExecutionContext() const profile = await loadOrgAutonomyProfileFromDb(db, orgDid); // → 'paranoid' | 'balanced' | 'aggressive'

    Approval gating logic (simplified):

    // packages/agent-runtime/src/context/muscle-context-impl.ts
    function requiresHumanApproval(profile: AutonomyProfile, riskLevel: string, reversible: boolean) {
      switch (profile) {
        case 'paranoid':
          return true;
        case 'balanced':
          if (riskLevel === 'critical') return true;
          return riskLevel === 'high' && !reversible;
        case 'aggressive':
          return riskLevel === 'critical';
      }
    }

    When approval is required, muscles escalate via ctx.muscles/v1/approvals or Command Plane escalations (see Human-in-the-Loop).

    Per-agent override

    Org profile is the default. Individual agents can override:

    human api PUT "/v1/control-plane/agents/$AGENT_DID/autonomy" \
      --body '{"autonomy_level":"supervised"}'

    Use org profile for policy; agent override for exceptions (e.g. read-only monitor agent on a paranoid org).

    Use cases

  • Finance orgparanoid during month-end close; relax to balanced afterward.
  • Internal dev sandboxaggressive for reversible low-risk connector calls.
  • Enterprise defaultbalanced at org creation; audit autonomy ratio via Command Plane diagnostics.
  • Security considerations

    DO

    Set org profile explicitly before enabling autopilot marketplace presets

    Pair aggressive profiles with narrow delegations and provenance logging

    DON'T

    Assume aggressive means skip Fourth Law escalation on low confidence

    Let client code downgrade requires_approval on Companion intent_action

    See also

  • Human-in-the-Loop
  • Governance policy enforcement
  • Community: HumanOS policy threshold and config
  • API: PUT /v1/control-plane/orgs/:orgDid/autonomy