Skip to content

Validate Codex/agents manifests in CI; close #47 hooks investigation - #48

Merged
jsirish merged 2 commits into
mainfrom
claude/codex-hooks
Aug 25, 2026
Merged

Validate Codex/agents manifests in CI; close #47 hooks investigation#48
jsirish merged 2 commits into
mainfrom
claude/codex-hooks

Conversation

@jsirish

@jsirish jsirish commented Aug 25, 2026

Copy link
Copy Markdown
Member

Summary

  • Extends CI (.github/workflows/ci.yml) and local-ci (.local-ci.json) manifest validation to cover .codex-plugin/plugin.json and .agents/plugins/marketplace.json, which shipped with zero validation coverage since PR feat: Codex CLI plugin as a 4th delivery format #46.
  • Adds a version-agreement check between .claude-plugin/plugin.json and .codex-plugin/plugin.json — nothing previously kept these independently-hand-maintained version strings in sync.
  • Closes out issue Wire and verify automatic capture hooks on Codex CLI (currently skills-only) #47 (Codex automatic-capture hooks) with a full empirical investigation via a live probe hook under real codex exec — see the issue for findings. Decision: not wiring hooks. Discovery is solved and double-registration is ruled out for the recommended pattern, but hooks require an interactive trust grant with no verified non-interactive path, so wiring it now would look automatic while silently not firing for most real usage (headless/CI needs a dangerous bypass flag; interactive needs an unverified manual step per install). No hooks.json changes — skills-only framing stands, now with evidence.

Test plan

  • /local-ci — 167/167 hook tests pass, shellcheck clean, all manifest/version-agreement checks pass
  • Codex marketplace install verified live: codex plugin marketplace add dynamic/throughlineadd → all 4 skills (handoff, onboard, consolidate, consolidate-memory) confirmed loading in a real codex exec session
  • Removed the stale hand-rolled ~/.codex/skills/{consolidate,handoff,onboard} symlink bridge now that the marketplace path is verified working
  • OpenCode hooks verified live in an isolated scratch project: prompt capture, bash-tool capture, and correct single end-marker across multiple turns (session.idle re-stamp behavior confirmed, not duplicated)

🤖 Generated with Claude Code

https://claude.ai/code/session_013cG9PVNGundwPjNB4Yz5AS

…gation

.codex-plugin/plugin.json and .agents/plugins/marketplace.json shipped with
zero CI coverage since PR #46 - extend the existing jq manifest validation
(local-ci custom check + GHA) to cover both, plus a version-agreement check
between .claude-plugin/plugin.json and .codex-plugin/plugin.json (independently
hand-maintained, nothing else keeps them in sync).

Issue #47 (Codex automatic-capture hooks) investigated empirically via a live
throwaway probe hook under real `codex exec` - findings posted to the issue.
Decision: not wiring hooks. Discovery is solved (explicit "hooks" key in
plugin.json, not convention) and double-registration is ruled out for the
recommended pattern, but hooks require a persisted-trust grant with no
verified non-interactive path - `codex exec` silently no-ops without
--dangerously-bypass-hook-trust, which the CLI itself scopes to "automation
that already vets hook sources," not a shipped plugin default. Wiring it now
would look automatic while silently not firing for most real usage.

No hooks.json changes; keeping the skills-only framing with evidence instead
of an inconclusive prior attempt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013cG9PVNGundwPjNB4Yz5AS
/review-pr on PR #48 found the local-ci form and the GHA form diverged when
both plugin.json files are missing: bash -c without -e let the failed jq
command substitutions silently produce empty strings that compared equal
(false pass), while GHA's default `bash -e` aborted correctly. Prefixing
with `set -e;` restores exit-on-failure semantics, matching GHA - verified
both the normal-pass and now-fails-fast-on-missing-file cases.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013cG9PVNGundwPjNB4Yz5AS
@jsirish
jsirish merged commit c70da10 into main Aug 25, 2026
2 checks passed
@jsirish
jsirish deleted the claude/codex-hooks branch August 25, 2026 19:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant