diff --git a/src/agentseam/data/vendors/codex_cli.json b/src/agentseam/data/vendors/codex_cli.json index e2f91ce..e22caa7 100644 --- a/src/agentseam/data/vendors/codex_cli.json +++ b/src/agentseam/data/vendors/codex_cli.json @@ -68,7 +68,7 @@ "loads_claude_plugins": { "basis": "vendor-source", "date": "2026-10-17", - "test": "tests/test_claude_plugins.py::test_each_entry_records_the_discovery_row" + "test": "tests/test_claude_plugins.py::test_only_the_witnessed_agents_carry_a_witness" }, "tools": { "basis": "live-run-partial", @@ -131,7 +131,8 @@ "loads": "yes", "notes": "hooks from the manifest's hooks, else hooks/hooks.json; per-hook trust state unmeasured; an HSO deny needs a non-empty permissionDecisionReason and exit 2 needs non-empty stderr; Sync handlers only", "payload": "Claude Code snake_case, Codex tool names", - "source": "openai/codex@ce0323f codex-rs/exec-server-protocol/src/protocol.rs, codex-rs/core-plugins/src/loader.rs (org-plan discovery/2026-10-17-claude-plugin-compat.md)" + "source": "openai/codex@ce0323f codex-rs/exec-server-protocol/src/protocol.rs, codex-rs/core-plugins/src/loader.rs (org-plan discovery/2026-10-17-claude-plugin-compat.md)", + "witnessed": "guard (shell command) and gate (file write) refused by PreToolUse deny with its reason; codex-cli 0.163.0 on Windows 11, 2026-10-17; plugin installed by codex plugin marketplace add then codex plugin add chock-witness@chock-local (org-plan witness/results/witness-codex-claude-plugin-2026-10-17.md at eb303f4)" }, "needs_trust": true, "tools": { diff --git a/tests/test_claude_plugins.py b/tests/test_claude_plugins.py index 4a797db..87b8a49 100644 --- a/tests/test_claude_plugins.py +++ b/tests/test_claude_plugins.py @@ -38,6 +38,18 @@ "witness/results/witness-copilot-cli-claude-plugin-2026-10-17.md", "6516f57", ), + "codex_cli": ( + "guard", + "gate", + "refused by PreToolUse deny with its reason", + "codex-cli 0.163.0", + "Windows 11", + "2026-10-17", + "codex plugin marketplace add ", + "codex plugin add chock-witness@chock-local", + "witness/results/witness-codex-claude-plugin-2026-10-17.md", + "eb303f4", + ), } #: (loads, hooks, deny_reply) per agent, as org-plan discovery/2026-10-17-claude-plugin-compat.md records them. diff --git a/tools/recount/claude_plugins.json b/tools/recount/claude_plugins.json index 1b86a31..4914648 100644 --- a/tools/recount/claude_plugins.json +++ b/tools/recount/claude_plugins.json @@ -43,7 +43,8 @@ "loads": "yes", "notes": "hooks from the manifest's hooks, else hooks/hooks.json; per-hook trust state unmeasured; an HSO deny needs a non-empty permissionDecisionReason and exit 2 needs non-empty stderr; Sync handlers only", "payload": "Claude Code snake_case, Codex tool names", - "source": "openai/codex@ce0323f codex-rs/exec-server-protocol/src/protocol.rs, codex-rs/core-plugins/src/loader.rs (org-plan discovery/2026-10-17-claude-plugin-compat.md)" + "source": "openai/codex@ce0323f codex-rs/exec-server-protocol/src/protocol.rs, codex-rs/core-plugins/src/loader.rs (org-plan discovery/2026-10-17-claude-plugin-compat.md)", + "witnessed": "guard (shell command) and gate (file write) refused by PreToolUse deny with its reason; codex-cli 0.163.0 on Windows 11, 2026-10-17; plugin installed by codex plugin marketplace add then codex plugin add chock-witness@chock-local (org-plan witness/results/witness-codex-claude-plugin-2026-10-17.md at eb303f4)" } }, "cursor": { diff --git a/tools/recount/sourced.py b/tools/recount/sourced.py index 96116b6..ce841e0 100644 --- a/tools/recount/sourced.py +++ b/tools/recount/sourced.py @@ -26,8 +26,8 @@ #: Whether each agent loads a Claude Code plugin, transcribed from org-plan #: discovery/2026-10-17-claude-plugin-compat.md (CC-1, read 2026-10-17); unknown and partial -#: rows stay so. Grok (org-plan 25b9d9d) and vscode_copilot's Copilot CLI (org-plan 6516f57) add -#: the owner's witness runs, from witness/results. +#: rows stay so. Grok (org-plan 25b9d9d), vscode_copilot's Copilot CLI (org-plan 6516f57) and +#: codex_cli (org-plan eb303f4) add the owner's witness runs, from witness/results. with open(os.path.join(os.path.dirname(__file__), "claude_plugins.json"), encoding="utf-8") as _fh: LOADS_CLAUDE_PLUGINS = json.load(_fh) _CLAUDE_PLUGINS_READ = "2026-10-17"