Skip to main content

Authority and approvals

Status: accepted on 2026-07-27.

Context

The Harness already has approval requests, grants, permission profiles, a side-effect-free permission simulator, and hash-bound audit evidence. Their current action taxonomy is an enforcement projection, not a complete authority contract: a filesystem path is not a network endpoint, a GitHub repository is not local Git, and changing an approval reviewer must not change the sandbox.

The authority boundary needs one versioned source before adding approval UX, network grants, GitHub grants, or first-run diagnostics.

Decision

Schema version 1 is owned by gigaloom.runtime.authority. It models eight target types separately:

  • workspace-rooted filesystem paths;
  • explicit subprocess executable plus content-addressed argv and cwd;
  • network host, port, protocol, and redirect policy;
  • exact GitHub owner/repository;
  • exact browser origin;
  • managed MCP server and optional tool;
  • integration definition plus immutable revision;
  • child agent plus its parent-ceiling digest.

Every scope contains a concrete target and a non-empty set of operation classes. Its semantic payload is content-addressed. Approval previews are bound by SHA-256, so secrets, file content, command arguments, and other raw inputs do not need to enter grants or receipts.

operation, session, and persisted_policy are distinct lifetimes. Persisted policy grants always expire. Every grant exposes its policy source, reviewer kind and identity, enforcement boundary, preview digest, creation and expiry, revocation, and optional parent grant.

The user-facing presets compile to explicit per-scope rules:

PresetSchema-v1 result
always_askEvery concrete scope resolves to ask.
ask_on_writesOnly the frozen read-only operation set may resolve to allow; every other operation resolves to ask.
allow_reviewedOnly an exact scope and preview-digest pair in the reviewed set resolves to allow; all others resolve to ask.

Human review and auto review are reviewer identities. They do not alter the enforced_by_harness, delegated_to_cli_sandbox, or advisory_or_unobservable boundary.

Child authority is valid only when the child target is identical to a target in the parent ceiling and the child operations are a subset. This schema deliberately chooses this strict rule; future code may add a separately reviewed narrower target relation, but must never infer one from strings.

A revoked or expired grant, stale preview digest, changed target, redirect, or retry requires revalidation. No prior approval may be rebound to the changed operation.

Compatibility

gigaloom.runtime.policy.PermissionAction remains the current enforcement and persistence projection. Approval enforcement may map version-1 authority scopes into those actions while it builds the approval UX and permission simulator. Existing approval rows and grants are not migrated by this schema decision.

Unknown schema versions, resource targets, presets, lifetimes, operations, and invalid digests fail closed. The source-derived manifest is the documentation and UI vocabulary authority.

Consequences

This schema does not grant filesystem, process, network, GitHub, browser, MCP, integration, or child-agent authority. It does not change sandbox settings, persist new policy, revoke existing grants, access credentials, or perform live mutations. Later authority consumers must use this schema instead of creating local target or lifetime vocabularies.