Repository navigation
Distinguish installed plugins from active session hooks - #107
Open
adit-chandra wants to merge 1 commit into
Open
adit-chandra wants to merge 1 commit into
adit-chandra wants to merge 1 commit into
Conversation
This was referenced Oct 23, 2026
adit-chandra
marked this pull request as ready for review
October 23, 2026 01:06
Codex Bug BotNo new bugs detected in this PR. |
adit-chandra
added a commit
that referenced
this pull request
Oct 23, 2026
## Motivation When a marketplace update removes a plugin version still referenced by a running session, Python exits with code 2 before the hook adapter starts. Codex interprets that infrastructure failure as an intentional hook block, potentially hiding the result of a command that already ran. ## Summary Embed a Python launcher in portable hook commands so it survives deletion of plugin files. Portable context hooks now report bounded failure diagnostics and exit successfully; native JSON hooks retain their authored blocking semantics. Execution remains in-process so cancellation reaches handlers. Stack: this PR targets `main`; #106 adds retained runtime bundles on top, and #107 separates installation from current-session activation. ## Validation - Full suite: 1,053 passed. - Focused hook suite: 59 passed, covering deleted adapters, entrypoints and helpers across Claude, Codex and Cursor; script exit 2; and native blocking behavior. - Repository-wide Ruff lint/format and ty passed (using the worktree environment). - Generated commands exercised in local subprocesses; live desktop-host acceptance and marketplace publication are not part of this PR.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
A marketplace update can install new files while the current session still holds old hook commands. The update skill previously reported a single reload result, allowing a skill discovery refresh to be mistaken for hook activation.
Summary
Record installed versions before and after updates, preserve partial failures, and report current-session activation separately. In Codex, skill discovery and hook listings do not establish hook activation; require evidence from a supported current-session reload, otherwise report a pending restart. In Claude, wait for the native
/reload-pluginsresult or user confirmation instead of claiming a shell command or second process reloaded the session.Document independent activation in other sessions and the first-rollout limitation: old loaded commands cannot gain the durable launcher merely because new files were installed. Keep old caches and retained bundles intact during activation.
Stack: depends on #106, which depends on #105. This PR changes the compiler-owned update skill sources and README only.
Validation
skill-validator checkwithout warnings.