oacp-cli 0.3.1__tar.gz → 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/CHANGELOG.md +18 -1
  2. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/PKG-INFO +16 -4
  3. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/QUICKSTART.md +54 -16
  4. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/README.md +15 -3
  5. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/SPEC.md +21 -9
  6. oacp_cli-0.3.2/docs/from-claude-p.md +151 -0
  7. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/guides/runtime_capability_matrix.md +1 -1
  8. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/guides/setup.md +7 -1
  9. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/agent_safety_defaults.md +6 -4
  10. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/autonomy.md +115 -6
  11. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/credential_scoping.md +1 -1
  12. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/cross_runtime_sync.md +1 -1
  13. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/inbox_outbox.md +16 -4
  14. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/review_loop.md +1 -1
  15. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/runtime_capabilities.md +19 -19
  16. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/session_init.md +1 -1
  17. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/skills_manifest.yaml +2 -2
  18. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/pyproject.toml +2 -1
  19. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/_oacp_constants.py +2 -2
  20. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/agent_profile.py +1 -1
  21. oacp_cli-0.3.2/scripts/autonomy_gate.py +691 -0
  22. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/init_project_workspace.py +1 -1
  23. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/oacp_doctor.py +10 -0
  24. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/send_inbox_message.py +1 -1
  25. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/setup_runtime.py +63 -5
  26. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/agent_card.template.yaml +1 -1
  27. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/agent_profile.template.yaml +1 -1
  28. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/agent_status.template.yaml +1 -1
  29. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/guardrails/secrets_rules.template.md +1 -1
  30. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/receiver_config.template.yaml +4 -0
  31. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/roles/role_baseline.template.md +1 -1
  32. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/runtime_capabilities.yaml +7 -0
  33. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/skills_manifest.template.yaml +3 -3
  34. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/README.md +7 -0
  35. oacp_cli-0.3.2/tests/conformance/autonomy/actuals/checkpoint_breach.yaml +6 -0
  36. oacp_cli-0.3.2/tests/conformance/autonomy/actuals/continuation_drift.yaml +6 -0
  37. oacp_cli-0.3.2/tests/conformance/autonomy/actuals/continuation_within.yaml +6 -0
  38. oacp_cli-0.3.2/tests/conformance/autonomy/actuals/top_level_side_effect_keys.yaml +5 -0
  39. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/configs/always_pause.yaml +2 -0
  40. oacp_cli-0.3.1/tests/conformance/autonomy/configs/auto_review_standard.yaml → oacp_cli-0.3.2/tests/conformance/autonomy/configs/auto_review_continuation_enabled.yaml +2 -0
  41. oacp_cli-0.3.2/tests/conformance/autonomy/configs/auto_review_standard.yaml +15 -0
  42. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/configs/auto_review_tight.yaml +2 -0
  43. oacp_cli-0.3.2/tests/conformance/autonomy/expected/brainstorm_destructive_pauses.yaml +9 -0
  44. oacp_cli-0.3.2/tests/conformance/autonomy/expected/brainstorm_side_effect_verbs_auto_accepts.yaml +18 -0
  45. oacp_cli-0.3.2/tests/conformance/autonomy/expected/checkpoint_breach_pauses.yaml +16 -0
  46. oacp_cli-0.3.2/tests/conformance/autonomy/expected/continuation_grant_destructive_pauses.yaml +9 -0
  47. oacp_cli-0.3.2/tests/conformance/autonomy/expected/continuation_grant_disabled_pauses.yaml +14 -0
  48. oacp_cli-0.3.2/tests/conformance/autonomy/expected/continuation_grant_drift_pauses.yaml +18 -0
  49. oacp_cli-0.3.2/tests/conformance/autonomy/expected/continuation_grant_enabled_auto_accepts.yaml +26 -0
  50. oacp_cli-0.3.2/tests/conformance/autonomy/expected/continuation_grant_external_uncovered_pauses.yaml +10 -0
  51. oacp_cli-0.3.2/tests/conformance/autonomy/expected/hard_stop_no_verify_upper_pauses.yaml +9 -0
  52. oacp_cli-0.3.2/tests/conformance/autonomy/expected/path_like_deploy_auto_accepts.yaml +15 -0
  53. oacp_cli-0.3.2/tests/conformance/autonomy/expected/risk_obvious_no_profile_pauses.yaml +8 -0
  54. oacp_cli-0.3.2/tests/conformance/autonomy/expected/side_effect_booleans_pause.yaml +11 -0
  55. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/threshold_breach_pauses.yaml +2 -1
  56. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/tight_threshold_pauses.yaml +1 -1
  57. oacp_cli-0.3.2/tests/conformance/autonomy/expected/top_level_side_effect_actuals_ignored.yaml +27 -0
  58. oacp_cli-0.3.2/tests/conformance/autonomy/messages/brainstorm_destructive.yaml +9 -0
  59. oacp_cli-0.3.2/tests/conformance/autonomy/messages/brainstorm_side_effect_verbs.yaml +10 -0
  60. oacp_cli-0.3.2/tests/conformance/autonomy/messages/continuation_grant.yaml +33 -0
  61. oacp_cli-0.3.2/tests/conformance/autonomy/messages/continuation_grant_destructive.yaml +33 -0
  62. oacp_cli-0.3.2/tests/conformance/autonomy/messages/continuation_grant_external_uncovered.yaml +33 -0
  63. oacp_cli-0.3.2/tests/conformance/autonomy/messages/hard_stop_no_verify_upper.yaml +20 -0
  64. oacp_cli-0.3.2/tests/conformance/autonomy/messages/path_like_deploy.yaml +20 -0
  65. oacp_cli-0.3.2/tests/conformance/autonomy/messages/risk_obvious_no_profile.yaml +9 -0
  66. oacp_cli-0.3.2/tests/conformance/autonomy/messages/side_effect_booleans.yaml +24 -0
  67. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_add_agent.py +16 -0
  68. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_agent_profile.py +1 -1
  69. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_autonomy_conformance_fixtures.py +6 -0
  70. oacp_cli-0.3.2/tests/test_autonomy_gate.py +83 -0
  71. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_init_project_workspace.py +14 -2
  72. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_oacp_doctor.py +36 -0
  73. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_send_inbox_message.py +4 -0
  74. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_session_lifecycle_hooks.py +24 -0
  75. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_setup_runtime.py +92 -0
  76. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_validate_agent_card.py +1 -1
  77. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/.github/workflows/ci.yml +0 -0
  78. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/.github/workflows/release.yml +0 -0
  79. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/.gitignore +0 -0
  80. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/CONTRIBUTING.md +0 -0
  81. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/LICENSE +0 -0
  82. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/Makefile +0 -0
  83. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/SECURITY.md +0 -0
  84. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/guides/adoption.md +0 -0
  85. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/guides/doctor.md +0 -0
  86. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/guides/prompt_caching.md +0 -0
  87. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/guides/unified_skill_spec.md +0 -0
  88. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/guides/versioning.md +0 -0
  89. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/img/oacp-cli-demo.png +0 -0
  90. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/img/oacp-filesystem-tree.png +0 -0
  91. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/img/oacp-fleet-thread.png +0 -0
  92. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/agent_profiles.md +0 -0
  93. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/dispatch_states.yaml +0 -0
  94. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/mcp_integration.md +0 -0
  95. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/multi_agent_shared_workspace.md +0 -0
  96. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/org_memory.md +0 -0
  97. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/packet_states.yaml +0 -0
  98. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/docs/protocol/task_negotiation.md +0 -0
  99. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/examples/quickstart/README.md +0 -0
  100. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/mcp_servers/oacp_coordinator.py +0 -0
  101. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/oacp/__init__.py +0 -0
  102. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/oacp/cli.py +0 -0
  103. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/_oacp_env.py +0 -0
  104. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/add_agent.py +0 -0
  105. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/check_quality_gate.py +0 -0
  106. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/codex_session_init.py +0 -0
  107. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/create_handoff_packet.py +0 -0
  108. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/handoff_schema.py +0 -0
  109. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/init_org_memory.py +0 -0
  110. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/init_packet.sh +0 -0
  111. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/init_project_workspace.sh +0 -0
  112. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/memory_archive_common.py +0 -0
  113. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/memory_cli.py +0 -0
  114. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/memory_sync.py +0 -0
  115. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/normalize_findings.py +0 -0
  116. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/oacp_inbox.py +0 -0
  117. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/oacp_watch.py +0 -0
  118. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/preflight.py +0 -0
  119. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/promote_to_archive.py +0 -0
  120. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/restore_from_archive.py +0 -0
  121. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/session_lifecycle_hooks.py +0 -0
  122. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/update_workspace.sh +0 -0
  123. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/validate_agent_card.py +0 -0
  124. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/validate_message.py +0 -0
  125. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/scripts/write_event.py +0 -0
  126. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/checkpoint.template.md +0 -0
  127. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/claude/agents/role_agent.template.md +0 -0
  128. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/claude/rules/guardrail.template.md +0 -0
  129. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/findings_packet.template.yaml +0 -0
  130. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/github_actions_quality_gate.yaml +0 -0
  131. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/guardrails/coding_standards.template.md +0 -0
  132. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/guardrails/safe_commands.template.md +0 -0
  133. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/handoff_packet.template.yaml +0 -0
  134. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/inbox_message.template.yaml +0 -0
  135. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/manual_validation.template.md +0 -0
  136. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/merge_decision.template.md +0 -0
  137. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/org-memory/decisions.md +0 -0
  138. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/org-memory/events/.gitkeep +0 -0
  139. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/org-memory/events/20260317-170120-example-api-convention.md +0 -0
  140. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/org-memory/recent.md +0 -0
  141. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/org-memory/rules.md +0 -0
  142. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/review_packet.template.md +0 -0
  143. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/roles/role_definition.template.yaml +0 -0
  144. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/templates/test_packet.template.md +0 -0
  145. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/configs/malformed_config.yaml +0 -0
  146. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/always_pause_task.yaml +0 -0
  147. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/ambiguous_scope_pauses.yaml +0 -0
  148. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/brainstorm_without_profile_auto_accepts.yaml +0 -0
  149. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/clean_auto_review_task.yaml +0 -0
  150. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/hard_stop_dangerously_skip_permissions_pauses.yaml +0 -0
  151. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/hard_stop_external_side_effects_pauses.yaml +0 -0
  152. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/hard_stop_force_pauses.yaml +0 -0
  153. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/hard_stop_no_verify_pauses.yaml +0 -0
  154. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/hard_stop_rm_rf_pauses.yaml +0 -0
  155. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/hard_stop_sensitive_scope_pauses.yaml +0 -0
  156. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/malformed_config_pauses.yaml +0 -0
  157. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/missing_task_profile_pauses.yaml +0 -0
  158. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/expected/unparsable_task_profile_pauses.yaml +0 -0
  159. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/ambiguous_scope.yaml +0 -0
  160. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/brainstorm_without_profile.yaml +0 -0
  161. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/clean_task.yaml +0 -0
  162. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/hard_stop_dangerously_skip_permissions.yaml +0 -0
  163. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/hard_stop_external_side_effects.yaml +0 -0
  164. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/hard_stop_force.yaml +0 -0
  165. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/hard_stop_no_verify.yaml +0 -0
  166. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/hard_stop_rm_rf.yaml +0 -0
  167. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/hard_stop_sensitive_scope.yaml +0 -0
  168. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/missing_task_profile.yaml +0 -0
  169. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/threshold_breach.yaml +0 -0
  170. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/conformance/autonomy/messages/unparsable_task_profile.yaml +0 -0
  171. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_codex_session_init.py +0 -0
  172. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_create_handoff_packet.py +0 -0
  173. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_github_workflows.py +0 -0
  174. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_handoff_schema.py +0 -0
  175. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_memory_archive.py +0 -0
  176. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_oacp_cli.py +0 -0
  177. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_oacp_constants.py +0 -0
  178. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_oacp_coordinator.py +0 -0
  179. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_oacp_env.py +0 -0
  180. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_oacp_inbox.py +0 -0
  181. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_oacp_watch.py +0 -0
  182. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_preflight.py +0 -0
  183. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_review_loop.py +0 -0
  184. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_update_workspace.py +0 -0
  185. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_validate_message.py +0 -0
  186. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_workspace_discovery.py +0 -0
  187. {oacp_cli-0.3.1 → oacp_cli-0.3.2}/tests/test_write_event.py +0 -0
@@ -5,7 +5,23 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## [Unreleased]
8
+ ## [0.3.2] - 2026-05-26
9
+
10
+ ### Added
11
+
12
+ - Receiver autonomy scope-envelope evaluator with side-effect booleans,
13
+ threshold-checkpoint instrumentation, taxonomy pinning, and default-off
14
+ continuation grants.
15
+ - `cursor` runtime support for agent profiles, agent cards, status validation, sender inference via `OACP_RUNTIME=cursor`, `oacp add-agent --runtime cursor`, and `oacp setup cursor`.
16
+ - `oacp setup cursor --project <project>` now provisions the project-side Cursor agent directory and writes a repo-local `.cursor/rules/oacp.todo.mdc` placeholder while Cursor-owned rules and memory hooks remain deferred.
17
+
18
+ ### Changed
19
+
20
+ - `oacp init` now defaults to `claude,codex,cursor`; Gemini remains supported through `--agents` and `oacp setup gemini`.
21
+ - Receiver autonomy docs and templates now use the current
22
+ `agents/<receiver>/config.yaml` schema.
23
+ - Docs: added an asynchronous `claude -p` on-ramp guide and refreshed the
24
+ quickstart for the current CLI surface.
9
25
 
10
26
  ## [0.3.1] - 2026-05-12
11
27
 
@@ -142,6 +158,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
142
158
  - Checkout step in github-release workflow job (#19)
143
159
  - Pre-release audit fixes: SHA-pinned actions, dangling doc refs (#15, #16)
144
160
 
161
+ [0.3.2]: https://github.com/kiloloop/oacp/compare/v0.3.1...v0.3.2
145
162
  [0.3.1]: https://github.com/kiloloop/oacp/compare/v0.3.0...v0.3.1
146
163
  [0.3.0]: https://github.com/kiloloop/oacp/compare/v0.2.3...v0.3.0
147
164
  [0.2.3]: https://github.com/kiloloop/oacp/compare/v0.2.2...v0.2.3
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oacp-cli
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Open Agent Coordination Protocol CLI for file-based multi-agent workflows
5
5
  Project-URL: Homepage, https://github.com/kiloloop/oacp
6
6
  Project-URL: Repository, https://github.com/kiloloop/oacp
@@ -30,6 +30,7 @@ Description-Content-Type: text/markdown
30
30
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
31
31
  [![Claude Code](https://img.shields.io/badge/Runtime-Claude_Code-6B4FBB.svg)](https://claude.ai/code)
32
32
  [![Codex](https://img.shields.io/badge/Runtime-Codex-74AA9C.svg)](https://openai.com/index/codex/)
33
+ [![Cursor](https://img.shields.io/badge/Runtime-Cursor-222222.svg)](https://cursor.com/)
33
34
  [![PRs Welcome](https://img.shields.io/badge/PRs-Welcome-brightgreen)](https://github.com/kiloloop/oacp/pulls)
34
35
 
35
36
  > Coordinate agents *without* the chaos.
@@ -39,7 +40,7 @@ A file-based protocol for multi-agent AI workflows. Two pillars — cross-agent
39
40
  [Read the spec →](SPEC.md)
40
41
 
41
42
  ```bash
42
- $ pip install oacp-cli
43
+ $ uv tool install oacp-cli
43
44
  ```
44
45
 
45
46
  ## See it in action
@@ -122,12 +123,15 @@ $OACP_HOME/org-memory/ org-wide
122
123
  ## Quick Start
123
124
 
124
125
  ```bash
125
- pip install oacp-cli
126
+ uv tool install oacp-cli
126
127
  oacp init my-project --agents alice,bob
127
128
  oacp send my-project --from alice --to bob --type task_request \
128
129
  --subject "Implement feature X" --body "Details here..."
129
130
  ```
130
131
 
132
+ By default, `oacp init my-project` creates `claude`, `codex`, and `cursor`
133
+ agents. Pass `--agents` to include Gemini or custom agent names.
134
+
131
135
  When running inside a configured agent runtime, `--from` can be omitted — OACP infers the sender from `OACP_AGENT`, `AGENT_NAME`, or the agent card. See [QUICKSTART.md](QUICKSTART.md) for a full walkthrough. Or try the [5-minute quickstart →](examples/quickstart/) to send your first message to a real AI agent.
132
136
 
133
137
  ### What you get
@@ -140,6 +144,14 @@ When running inside a configured agent runtime, `--from` can be omitted — OACP
140
144
  - **Agent safety defaults** — baseline rules for git, credentials, and scope discipline
141
145
  - **Runtime-agnostic** — works with any runtime that reads/writes files
142
146
 
147
+ ## Coming from `claude -p`?
148
+
149
+ `claude -p` runs an agent synchronously and headless — your script blocks while it works, and as of June 15 programmatic usage draws from a separate metered credit.
150
+
151
+ OACP routes the same work to a **standing interactive Claude Code session** instead: `oacp send` queues the task, the session picks it up and runs it async, you're not blocked — and because it's a real interactive session, it stays on your subscription.
152
+
153
+ **[From `claude -p` to an interactive Claude Code session →](docs/from-claude-p.md)** — paste-into-your-agent setup, the honest tradeoffs, and where it fits.
154
+
143
155
  ## Try It Now
144
156
 
145
157
  After installing, run `oacp doctor` to verify your environment is wired up:
@@ -241,7 +253,7 @@ uv tool install .
241
253
  |---------|-------------|
242
254
  | `oacp init` | Create a project workspace under `$OACP_HOME/projects/` |
243
255
  | `oacp add-agent` | Add an agent to an existing project workspace |
244
- | `oacp setup` | Generate runtime-specific config files (Claude, Codex, etc.) |
256
+ | `oacp setup` | Generate runtime-specific config files (Claude, Codex, Cursor, Gemini) |
245
257
  | `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
246
258
  | `oacp inbox` | List pending messages across agents (table or `--json`) |
247
259
  | `oacp watch` | Emit inbox delta events for one agent across selected projects |
@@ -34,10 +34,10 @@ pipx install oacp-cli
34
34
  Every project gets its own workspace with agent inboxes, shared memory, and packet directories.
35
35
 
36
36
  ```bash
37
- oacp init my-first-project --agents claude,codex,gemini --repo /path/to/repo
37
+ oacp init my-first-project --agents claude,codex,cursor --repo /path/to/repo
38
38
  ```
39
39
 
40
- Or with defaults (agents: claude, codex, gemini):
40
+ Or with defaults (agents: claude, codex, cursor):
41
41
 
42
42
  ```bash
43
43
  oacp init my-first-project
@@ -54,7 +54,7 @@ $OACP_HOME/projects/my-first-project/
54
54
  │ ├── codex/
55
55
  │ │ ├── inbox/
56
56
  │ │ └── outbox/
57
- │ └── gemini/
57
+ │ └── cursor/
58
58
  │ ├── inbox/
59
59
  │ └── outbox/
60
60
  ├── memory/
@@ -72,24 +72,37 @@ $OACP_HOME/projects/my-first-project/
72
72
 
73
73
  ## 4. Connect Your Runtime
74
74
 
75
- Tell your agent runtime where the OACP workspace lives.
75
+ Run the runtime setup command from the repo you want the agent to work in:
76
76
 
77
- **Claude Code** — add the OACP workspace path to your project's `CLAUDE.md`:
77
+ ```bash
78
+ cd /path/to/repo
79
+ oacp setup <runtime> --project my-first-project
80
+ ```
81
+
82
+ For Claude Code:
78
83
 
79
- ```markdown
80
- ## OACP
81
- OACP workspace: $OACP_HOME/projects/my-first-project/
82
- Check inbox: ls $OACP_HOME/projects/my-first-project/agents/claude/inbox/
84
+ ```bash
85
+ oacp setup claude --project my-first-project
83
86
  ```
84
87
 
85
- **Codex** — add the workspace path to your repo's `AGENTS.md`:
88
+ This creates or updates:
89
+
90
+ - `.claude/agents/my-first-project.md`
91
+ - `.claude/skills/`
92
+ - `.claude/hooks/oacp-memory-pull.sh`
93
+ - `.claude/hooks/oacp-memory-push.sh`
94
+ - `.claude/settings.json`
86
95
 
87
- ```markdown
88
- ## OACP
89
- OACP workspace: $OACP_HOME/projects/my-first-project/
96
+ For other supported runtimes, use the same shape:
97
+
98
+ ```bash
99
+ oacp setup codex --project my-first-project
100
+ oacp setup cursor --project my-first-project
101
+ oacp setup gemini --project my-first-project
90
102
  ```
91
103
 
92
- **Other runtimes** — point your agent's system prompt at the workspace path and instruct it to read the standard `memory/` files at session start.
104
+ Cursor support is scaffold-only until Cursor-owned rules land. Cursor sessions
105
+ must set `OACP_RUNTIME=cursor` or pass `--from` explicitly when sending messages.
93
106
 
94
107
  For full runtime setup (role templates, guardrails, skills), see [docs/guides/setup.md](docs/guides/setup.md).
95
108
 
@@ -112,6 +125,12 @@ This writes a YAML file to `agents/codex/inbox/` and a copy to `agents/claude/ou
112
125
 
113
126
  See what's waiting for an agent:
114
127
 
128
+ ```bash
129
+ oacp inbox my-first-project --agent codex
130
+ ```
131
+
132
+ Or inspect the inbox directory directly:
133
+
115
134
  ```bash
116
135
  ls "$OACP_HOME/projects/my-first-project/agents/codex/inbox/"
117
136
  ```
@@ -136,6 +155,17 @@ body: |
136
155
  Add POST /login with JWT auth. See docs/api-spec.md for details.
137
156
  ```
138
157
 
158
+ To watch for new messages from a standing runtime or Monitor, use `oacp watch`.
159
+ A single `oacp watch` run scans once and exits, so keep re-running it when you
160
+ want a persistent worker:
161
+
162
+ ```bash
163
+ while true; do
164
+ oacp watch --project my-first-project --agent codex || true
165
+ sleep 120
166
+ done
167
+ ```
168
+
139
169
  ## 7. Reply
140
170
 
141
171
  Send a response back:
@@ -146,7 +176,7 @@ oacp send my-first-project \
146
176
  --type notification \
147
177
  --subject "Re: Implement login endpoint" \
148
178
  --body "Accepted. Starting implementation on branch codex/login-endpoint." \
149
- --parent-message-id "msg-20260311T120000Z-claude-a1b2"
179
+ --in-reply-to "msg-20260311T120000Z-claude-a1b2"
150
180
  ```
151
181
 
152
182
  ## 8. Validate Messages
@@ -160,13 +190,21 @@ oacp validate \
160
190
 
161
191
  ## 9. Run Health Checks
162
192
 
163
- Verify your environment and workspace are set up correctly:
193
+ Verify your environment first:
164
194
 
165
195
  ```bash
166
196
  oacp doctor
197
+ ```
198
+
199
+ Then check the workspace you just created:
200
+
201
+ ```bash
167
202
  oacp doctor --project my-first-project
168
203
  ```
169
204
 
205
+ Plain `oacp doctor` checks global environment health. The `--project` form also
206
+ checks the project workspace, inboxes, schemas, and agent status files.
207
+
170
208
  ## What's Next?
171
209
 
172
210
  - **Review loop** — Set up structured code review between agents. See [docs/protocol/review_loop.md](docs/protocol/review_loop.md).
@@ -4,6 +4,7 @@
4
4
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
5
5
  [![Claude Code](https://img.shields.io/badge/Runtime-Claude_Code-6B4FBB.svg)](https://claude.ai/code)
6
6
  [![Codex](https://img.shields.io/badge/Runtime-Codex-74AA9C.svg)](https://openai.com/index/codex/)
7
+ [![Cursor](https://img.shields.io/badge/Runtime-Cursor-222222.svg)](https://cursor.com/)
7
8
  [![PRs Welcome](https://img.shields.io/badge/PRs-Welcome-brightgreen)](https://github.com/kiloloop/oacp/pulls)
8
9
 
9
10
  > Coordinate agents *without* the chaos.
@@ -13,7 +14,7 @@ A file-based protocol for multi-agent AI workflows. Two pillars — cross-agent
13
14
  [Read the spec →](SPEC.md)
14
15
 
15
16
  ```bash
16
- $ pip install oacp-cli
17
+ $ uv tool install oacp-cli
17
18
  ```
18
19
 
19
20
  ## See it in action
@@ -96,12 +97,15 @@ $OACP_HOME/org-memory/ org-wide
96
97
  ## Quick Start
97
98
 
98
99
  ```bash
99
- pip install oacp-cli
100
+ uv tool install oacp-cli
100
101
  oacp init my-project --agents alice,bob
101
102
  oacp send my-project --from alice --to bob --type task_request \
102
103
  --subject "Implement feature X" --body "Details here..."
103
104
  ```
104
105
 
106
+ By default, `oacp init my-project` creates `claude`, `codex`, and `cursor`
107
+ agents. Pass `--agents` to include Gemini or custom agent names.
108
+
105
109
  When running inside a configured agent runtime, `--from` can be omitted — OACP infers the sender from `OACP_AGENT`, `AGENT_NAME`, or the agent card. See [QUICKSTART.md](QUICKSTART.md) for a full walkthrough. Or try the [5-minute quickstart →](examples/quickstart/) to send your first message to a real AI agent.
106
110
 
107
111
  ### What you get
@@ -114,6 +118,14 @@ When running inside a configured agent runtime, `--from` can be omitted — OACP
114
118
  - **Agent safety defaults** — baseline rules for git, credentials, and scope discipline
115
119
  - **Runtime-agnostic** — works with any runtime that reads/writes files
116
120
 
121
+ ## Coming from `claude -p`?
122
+
123
+ `claude -p` runs an agent synchronously and headless — your script blocks while it works, and as of June 15 programmatic usage draws from a separate metered credit.
124
+
125
+ OACP routes the same work to a **standing interactive Claude Code session** instead: `oacp send` queues the task, the session picks it up and runs it async, you're not blocked — and because it's a real interactive session, it stays on your subscription.
126
+
127
+ **[From `claude -p` to an interactive Claude Code session →](docs/from-claude-p.md)** — paste-into-your-agent setup, the honest tradeoffs, and where it fits.
128
+
117
129
  ## Try It Now
118
130
 
119
131
  After installing, run `oacp doctor` to verify your environment is wired up:
@@ -215,7 +227,7 @@ uv tool install .
215
227
  |---------|-------------|
216
228
  | `oacp init` | Create a project workspace under `$OACP_HOME/projects/` |
217
229
  | `oacp add-agent` | Add an agent to an existing project workspace |
218
- | `oacp setup` | Generate runtime-specific config files (Claude, Codex, etc.) |
230
+ | `oacp setup` | Generate runtime-specific config files (Claude, Codex, Cursor, Gemini) |
219
231
  | `oacp send` | Send a protocol-compliant inbox message (`--from` auto-inferred) |
220
232
  | `oacp inbox` | List pending messages across agents (table or `--json`) |
221
233
  | `oacp watch` | Emit inbox delta events for one agent across selected projects |
@@ -3,7 +3,7 @@
3
3
  **Version**: 0.2.0
4
4
  **License**: Apache-2.0
5
5
 
6
- This document is the protocol specification for OACP (Open Agent Coordination Protocol) — a file-based coordination layer for multi-agent engineering workflows. It defines the message formats, state machines, review processes, and safety rules that enable agents on different runtimes (Claude, Codex, Gemini, or any future runtime) to collaborate asynchronously through a shared filesystem.
6
+ This document is the protocol specification for OACP (Open Agent Coordination Protocol) — a file-based coordination layer for multi-agent engineering workflows. It defines the message formats, state machines, review processes, and safety rules that enable agents on different runtimes (Claude, Codex, Cursor, Gemini, or any future runtime) to collaborate asynchronously through a shared filesystem.
7
7
 
8
8
  OACP is not a framework or SDK. It is a set of conventions, YAML schemas, and shell scripts that any agent runtime can implement.
9
9
 
@@ -47,7 +47,7 @@ $OACP_HOME/
47
47
  │ │ ├── inbox/
48
48
  │ │ ├── outbox/
49
49
  │ │ └── ...
50
- │ └── gemini/
50
+ │ └── cursor/
51
51
  │ └── ...
52
52
  ├── memory/ # Shared durable memory
53
53
  │ ├── project_facts.md
@@ -86,6 +86,9 @@ remain authoritative: local autonomy config, message content, safety defaults,
86
86
  and runtime/tool permissions determine whether a message can be accepted without
87
87
  interactive human confirmation.
88
88
 
89
+ Receiver autonomy is defined by `agents/<receiver>/config.yaml` and the
90
+ scope-envelope contract in [`docs/protocol/autonomy.md`](docs/protocol/autonomy.md).
91
+
89
92
  ### Message Types
90
93
 
91
94
  | Type | Purpose | Response Expected |
@@ -224,6 +227,12 @@ reason_codes:
224
227
  - risk_threshold_passed
225
228
  ```
226
229
 
230
+ Autonomy audit results use a stable terminal-state taxonomy
231
+ (`done`, `paused`, `blocked`, `superseded`, `error`) plus
232
+ `completion_kind` for detailed outcomes. Post-acceptance scope drift is recorded
233
+ through the threshold checkpoint described in
234
+ [`docs/protocol/autonomy.md`](docs/protocol/autonomy.md).
235
+
227
236
  ### Brainstorm Lifecycle
228
237
 
229
238
  Brainstorm messages follow a simpler lifecycle: `received` → `researching` → `report_delivered`. No PR, no review loop. The dispatcher sees: `Sent` → `In progress` → `Responded`.
@@ -422,7 +431,7 @@ Credential scoping: [`docs/protocol/credential_scoping.md`](docs/protocol/creden
422
431
 
423
432
  ### Baseline Rules
424
433
 
425
- These defaults apply to all agents (Claude, Codex, Gemini) unless a project-level config explicitly overrides a specific rule. Safety defaults can only be made **stricter** by project rules, never relaxed.
434
+ These defaults apply to all agents (Claude, Codex, Cursor, Gemini) unless a project-level config explicitly overrides a specific rule. Safety defaults can only be made **stricter** by project rules, never relaxed.
426
435
 
427
436
  Autonomy introduces a separate receiver acceptance policy layer; it does not
428
437
  relax the safety floor. OACP distinguishes three layers:
@@ -438,12 +447,14 @@ relax the safety floor. OACP distinguishes three layers:
438
447
  after acceptance, such as editor edit approval, shell sandboxing, or Codex
439
448
  approval modes. OACP acceptance never grants runtime tool permissions.
440
449
 
441
- Regardless of autonomy mode, receivers must pause on any of: destructive command
442
- tokens (`rm -rf`, `--force`, `--no-verify`,
443
- `--dangerously-skip-permissions`), external side effects
444
- (push/deploy/merge/publish/rotate/install), or modifications to auth, config,
445
- secrets, dependencies, public repos, pricing/commercial content, or memory SSOT,
446
- unless explicitly authorized by a separate safety-default exception.
450
+ Regardless of autonomy mode, receivers must pause on destructive command tokens
451
+ (`rm -rf`, `--force`, `--no-verify`, `--dangerously-skip-permissions`) and on
452
+ actual requests for external side effects or sensitive scope: push, deploy,
453
+ merge, publish, credential rotation, dependency install, auth/config/secrets,
454
+ public repos, pricing/commercial content, or memory SSOT. Profileless message
455
+ types that are explicitly allowed for auto-review may log incidental
456
+ side-effect verb mentions as notes instead of hard stops, but destructive tokens
457
+ and real side-effect requests still pause.
447
458
 
448
459
  #### Git Safety
449
460
 
@@ -639,6 +650,7 @@ Scripts marked **CLI** are exposed as `oacp` subcommands. Scripts marked **scrip
639
650
  | `init_org_memory.py` | Scaffold org-level memory directory | CLI: `oacp org-memory` |
640
651
  | `write_event.py` | Write timestamped events to org-memory | CLI: `oacp write-event` |
641
652
  | `oacp_doctor.py` | Environment and workspace health check (flutter-doctor-style) | CLI: `oacp doctor` |
653
+ | `autonomy_gate.py` | Evaluates receiver autonomy scope-envelope decisions and checkpoint drift | script-only |
642
654
  | `validate_message.py` | Validates inbox/outbox message YAML | CLI: `oacp validate` |
643
655
  | `session_lifecycle_hooks.py` | Session init and close hooks (`init_session`, `close_session`) | CLI-wrapped |
644
656
  | `codex_session_init.py` | Codex startup protocol loader | CLI-wrapped |
@@ -0,0 +1,151 @@
1
+ # From `claude -p` to an interactive Claude Code session
2
+
3
+ On June 15, programmatic Claude usage — `claude -p`, the Agent SDK, Claude Code GitHub Actions, third-party tools — moves onto a separate metered monthly credit. Interactive Claude Code and chat stay on your subscription, unchanged.
4
+
5
+ It's a reasonable change: programmatic usage is heavier and burstier than a person typing. But if you run agents in automation, it's worth asking a different question than "how do I dodge the meter" — **why is the agent headless and synchronous in the first place?**
6
+
7
+ This guide is built to be handed to your agent. Read the first half for the *why*; paste the setup block into your Claude Code session for the *how*.
8
+
9
+ > **Setup is a one-time ~5 minutes. Every task after that is one `oacp send` — async, non-blocking, on your subscription.**
10
+
11
+ ## The shape of `claude -p`
12
+
13
+ `claude -p "do X"` is synchronous and headless:
14
+
15
+ - it **blocks** — your script waits for the agent to finish
16
+ - it runs **headless** — no session to glance at, attach to, or steer mid-run
17
+ - after June 15, it's **metered** — programmatic usage draws from the separate credit pool
18
+
19
+ That shape was always a compromise. You wanted to script an agent, and `claude -p` was the way to do it from a shell. Synchronous-and-headless came along for the ride.
20
+
21
+ ## The other shape
22
+
23
+ Run the agent as a **standing interactive Claude Code session**, and *send* it work.
24
+
25
+ ```
26
+ Before: claude -p "do X"
27
+ blocks · headless · metered after Jun 15
28
+
29
+ After: oacp send → a standing interactive session picks it up
30
+ async · you're not blocked · on your subscription
31
+ ```
32
+
33
+ Concretely — the call that replaces `claude -p "do X"`:
34
+
35
+ ```bash
36
+ oacp send my-project --from sender --to claude --type task_request \
37
+ --subject "do X" --body "...details..."
38
+ ```
39
+
40
+ Same prompt, different delivery. The text you'd have handed to `claude -p` becomes the message `--body`; `oacp send` drops it in the interactive session's inbox, and the session picks it up and runs it. Sending the prompt as an OACP message is the whole trick — it routes the work into a session running in interactive mode instead of a headless `claude -p` call.
41
+
42
+ The session is a real interactive Claude Code session — so it stays on your subscription. You're not spoofing interactive mode; you're using it, and feeding it a queue.
43
+
44
+ This isn't only about the credit. Async is the right shape for most automation — a build, an overnight refactor, a research job — none of it needs your script to sit and wait. And once tasks are messages in an inbox, you get real multi-agent coordination — review loops, handoffs, several agents on one project — instead of a pile of blocking shell calls.
45
+
46
+ ## Your options, honestly
47
+
48
+ Two real choices if June 15 affects you.
49
+
50
+ **1. Pay the metered credit (or API rates).** Simplest. Low programmatic volume — the included credit may cover you; past that it's API pricing. Already on the API — nothing changes. No new tooling; it just costs money at scale.
51
+
52
+ **2. OACP — run interactive for real, feed it a queue.** Run a real interactive Claude Code session and send it work. It stays on your subscription because it genuinely *is* an interactive session. Not a one-liner — it's a workflow change. In exchange you get real agent coordination, not just a credit workaround.
53
+
54
+ Option 1 is the no-effort path that costs money at volume. Option 2 is a one-time workflow change that doesn't. Pick on that.
55
+
56
+ ## What OACP is
57
+
58
+ OACP isn't a June-15 tool. It's a file-based protocol for coordinating AI agents — inbox/outbox messaging, structured review loops, shared memory — no server, no daemon, just files in a directory. It was built to run a multi-agent fleet; the `claude -p` transition is **one usage** of it. Full picture: the [README](../README.md) and [SPEC](../SPEC.md). The companion [oacp-skills](https://github.com/kiloloop/oacp-skills) repo packages the runtime guidance — skills that teach Claude, Codex, and other agents to operate the protocol.
59
+
60
+ ## Set it up — paste this into your agent
61
+
62
+ Open Claude Code in the repo you want the agent to work in, and paste this in:
63
+
64
+ ~~~
65
+ Set me up as an async OACP worker for this repo.
66
+
67
+ 1. Install the oacp-cli tool if it isn't already installed — check with
68
+ oacp --version. Package and docs: https://github.com/kiloloop/oacp
69
+ 2. Create an OACP project workspace for this repo, named after the repo.
70
+ Give it two agents: "claude" (you, the worker) and "sender" (whoever
71
+ dispatches tasks — my shell, my CI, or another agent).
72
+ 3. Wire this repo for the Claude Code runtime against that project (the
73
+ oacp setup command for the claude runtime).
74
+ 4. Install the companion OACP agent skills from
75
+ https://github.com/kiloloop/oacp-skills — at minimum the check-inbox
76
+ skill, so you know how to process a task when it lands in your inbox.
77
+ 5. Run oacp doctor --project <the project name> and confirm there are
78
+ no issues — plain oacp doctor only checks the environment; the
79
+ --project form checks this workspace's inbox, schema, and status.
80
+ 6. Start a Monitor that keeps oacp watch re-running for the claude
81
+ agent on this project. A single oacp watch does one scan and exits,
82
+ so it has to run on a loop — while true; do oacp watch --project
83
+ <project> --agent claude || true; sleep 120; done — otherwise you
84
+ only pick up tasks that happened to be there at setup time. Then
85
+ tell me the exact oacp send command I use to dispatch a task to you.
86
+
87
+ Protocol reference: https://github.com/kiloloop/oacp/blob/main/QUICKSTART.md
88
+ ~~~
89
+
90
+ When it finishes, that session is a standing worker, and it has told you your send command. It looks like this (swap `my-project` for whatever it named the project):
91
+
92
+ ```bash
93
+ oacp send my-project --from sender --to claude --type task_request \
94
+ --subject "do X" --body "...details..."
95
+ ```
96
+
97
+ Run that from your shell, your CI, or another agent — anywhere `claude -p` ran. The watcher fires, the session picks up the task, it runs async while you move on.
98
+
99
+ <details>
100
+ <summary>Manual setup — no agent, or you want the exact commands</summary>
101
+
102
+ ```bash
103
+ # install
104
+ uv tool install oacp-cli # or: pipx install oacp-cli
105
+
106
+ # create a workspace — "claude" does the work, "sender" dispatches
107
+ oacp init my-project --agents claude,sender
108
+
109
+ # wire this repo for Claude Code
110
+ oacp setup claude --project my-project
111
+
112
+ # verify the workspace is wired (not just the environment)
113
+ oacp doctor --project my-project
114
+ ```
115
+
116
+ Then, in a Claude Code session, arm the watcher in a Monitor. `oacp watch` does one scan and exits, so it has to run on a loop:
117
+
118
+ ```
119
+ while true; do
120
+ oacp watch --project my-project --agent claude || true
121
+ sleep 120
122
+ done
123
+ ```
124
+
125
+ Keep that loop running — it's now a standing worker, picking up tasks as they land. Send work with the `oacp send` command above.
126
+
127
+ </details>
128
+
129
+ **On verbosity.** `oacp send` is explicit by design — typed messages, priorities, threading. If you miss `claude -p "X"`, a shell alias closes the gap:
130
+
131
+ ```bash
132
+ oacp-do() {
133
+ oacp send my-project --from sender --to claude --type task_request \
134
+ --subject "$1" --body "${2:-$1}"
135
+ }
136
+ # now: oacp-do "refactor the auth module"
137
+ ```
138
+
139
+ ## Where it fits — and where it doesn't
140
+
141
+ **Fire-and-forget callers** — "build this," "refactor that," an overnight job, a research task. Clean fit. The caller never needed to block; async is strictly better.
142
+
143
+ **Request-response callers** — CI doing `RESULT=$(claude -p ...)` and using the output inline. Works too, but not a one-liner: the caller also arms `oacp watch --agent sender` to catch the reply. Worth it for a real pipeline — just know it's more than a swap.
144
+
145
+ **If you just want zero workflow change** and don't care about coordination — keep `claude -p` and pay the meter (option 1). OACP earns its setup cost when you have more than one agent, recurring work, or you want to see and steer what the agent is doing. If that's not you, we'd rather say so.
146
+
147
+ ## Try it
148
+
149
+ Do the setup above in a repo you actually work in, send one real task, watch the session pick it up.
150
+
151
+ If something breaks, the setup is rougher than it should be, or the docs are wrong — **[open an issue](https://github.com/kiloloop/oacp/issues)**. That feedback is what we're after; it's more useful than a star.
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Date**: 2026-04-29
4
4
 
5
- This is a capability comparison across 3 agent runtimes (Claude Code, Codex, Gemini), compiled from each runtime's self-report and current runtime changelogs. Use this as a reference when deciding which agent to assign for a given task.
5
+ This is a capability comparison across the currently profiled agent runtimes (Claude Code, Codex, Gemini), compiled from each runtime's self-report and current runtime changelogs. Cursor support is scaffold-only until Cursor-owned onboarding lands, so Cursor is intentionally excluded from this comparison table; see `docs/protocol/runtime_capabilities.md` for its conservative scaffold defaults.
6
6
 
7
7
  Claude was last checked against Claude Code `v2.1.123`.
8
8
 
@@ -5,7 +5,7 @@
5
5
  - `bash` 3.2+ (macOS default) or 4+ (recommended)
6
6
  - `python3` 3.9+ (for JSON state management, quality gate scripts, and inbox messaging)
7
7
  - `gh` CLI (optional, for GitHub operations — `gh auth login`)
8
- - Agent runtime CLI: `claude`, `codex`, or `gemini` (depending on your agents)
8
+ - Agent runtime CLI: `claude`, `codex`, `cursor`, or `gemini` (depending on your agents)
9
9
 
10
10
  ## 1) Install OACP
11
11
 
@@ -38,6 +38,12 @@ pip install -e .
38
38
  oacp init <project>
39
39
  ```
40
40
 
41
+ By default, `oacp init` creates `claude`, `codex`, and `cursor` agents.
42
+ Use `--agents` to include Gemini or custom agent names.
43
+
44
+ Cursor support is scaffold-only until Cursor-owned rules land. Cursor sessions
45
+ must set `OACP_RUNTIME=cursor` or pass `--from` explicitly when sending messages.
46
+
41
47
  With artifact symlinks from a repo checkout:
42
48
 
43
49
  ```bash
@@ -1,6 +1,6 @@
1
1
  # Agent Safety Defaults
2
2
 
3
- Cross-agent baseline safety rules. All agents (Claude, Codex, Gemini) follow these defaults unless a project-level `AGENTS.md` explicitly overrides a specific rule.
3
+ Cross-agent baseline safety rules. All agents (Claude, Codex, Cursor, Gemini) follow these defaults unless a project-level `AGENTS.md` explicitly overrides a specific rule.
4
4
 
5
5
  ## Git Safety
6
6
 
@@ -36,14 +36,16 @@ Receiver autonomy controls only whether a message can move from `received` to
36
36
  `accepted` without interactive human confirmation. It does not relax this safety
37
37
  floor.
38
38
 
39
- Regardless of autonomy mode, receivers must pause on any of:
39
+ Regardless of autonomy mode, receivers must pause on actual requests for:
40
40
 
41
41
  - Destructive command tokens: `rm -rf`, `--force`, `--no-verify`, `--dangerously-skip-permissions`
42
42
  - External side effects: push, deploy, merge, publish, credential rotation, dependency install
43
43
  - Sensitive scope: auth, config, secrets, dependencies, public repos, pricing/commercial content, memory SSOT
44
44
 
45
- The only exception is an explicit, separate safety-default exception. The
46
- Phase 1 autonomy RFC does not introduce any such exception.
45
+ Profileless message types that are explicitly allowed for auto-review may log
46
+ incidental side-effect verb mentions as notes instead of hard stops, but
47
+ destructive tokens and real side-effect requests still pause. The only exception
48
+ is an explicit, separate safety-default exception.
47
49
 
48
50
  ## Scope Discipline
49
51