Skip to content

Capabilities

Source of truth: src/assync/core/enums.py::Capability and HIGH_RISK_CAPABILITIES.

All capabilities

Capability Value
Repository Read repository_read
Repository Write repository_write
Runtime Read runtime_read
Runtime Write runtime_write
Test Execute test_execute
Analysis Execute analysis_execute
Report Write report_write
Finding Create finding_create
Synthesis Create synthesis_create
Decision Recommend decision_recommend
Commit Prepare commit_prepare
Commit Execute commit_execute
Push Prepare push_prepare
Push Execute push_execute
PR Prepare pr_prepare
PR Create pr_create
Merge Prepare merge_prepare
Merge Execute merge_execute
Release Prepare release_prepare
Release Execute release_execute
Production Read production_read
Production Write production_write
Secret Read secret_read

High-risk capabilities

These must never be inferred from a role title or granted implicitly by a mission's authorization type alone. No built-in role's allowed_capabilities may include any of these — roles/validation.py::PROHIBITED_IN_ROLE_DEFINITION (defined as core.enums.HIGH_RISK_CAPABILITIES plus production_read, minus commit_execute — see below) rejects a role registry that tries:

  • push_execute
  • pr_create
  • merge_execute
  • release_execute
  • production_write
  • production_read
  • secret_read

No adapter in this codebase supports any of the above operations at all — they are unreachable by omission, not merely by this check (see Known MVP Limitations).

commit_execute is the one exception, and is not rejected from a role's allowed_capabilities — it is the one HIGH_RISK_CAPABILITIES member this codebase actually supports executing, subject to real central enforcement rather than blanket unreachability. Only an explicit role grant intersected with an authorization that also carries it (only COMMIT_GO's canonical grant does; no other AuthorizationType does) — and, in practice, an escalated COMMIT_GO authorization minted via a resolved human Decision — may enable it. No built-in role currently grants commit_execute (a separate, human-gated product decision); this only keeps that decision possible. See Capability Enforcement.

How a capability actually becomes available

effective = (role.allowed − role.forbidden)
          ∩ (authorization.permitted − authorization.prohibited)

See Authorization Model for the full rule, and Authorization Types for what each authorization type grants.