feat(claude): write plugin-namespace permissions and refresh CLAUDE.md block in update-plugin - #278
Conversation
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1eb4995a56
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| for tool in tool_permissions | ||
| .iter() | ||
| .cloned() | ||
| .chain(plugin_tool_perms()) |
There was a problem hiding this comment.
Remove plugin permissions on uninstall
After this starts adding mcp__plugin_tracedecay_tracedecay__* allow rules, ClaudeIntegration.uninstall() still removes only the legacy mcp__tracedecay__* prefix in uninstall_permissions. A user who installs or updates this version and then uninstalls TraceDecay keeps auto-approval entries for every TraceDecay plugin tool in ~/.claude/settings.json, so the integration is not fully removed from Claude config; include the plugin prefix in the uninstall filter as well.
Useful? React with 👍 / 👎.
1eb4995 to
ea6ed97
Compare
Root-cause fix for plugin under-adoption: the installer never wrote permission allowlist entries for the plugin MCP namespace (mcp__plugin_tracedecay_tracedecay__*), so every plugin tool call prompted interactively and hard-failed headless/subagent contexts. update_plugin now writes and migrates the allowlist (idempotent: twins derive from the union of existing and caller-supplied legacy entries) and refreshes the managed CLAUDE.md steering block so updated steering propagates to existing installs and their subagents. Rescued from an ended Codex session's working tree, then fixed: idempotency fixed-point bug and stale coercion-test expectations. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ea6ed97 to
307a17e
Compare
Full recovery manifest (all session + workflow ids)Main orchestrating session: Workflow runs (transcripts: session dir →
Research agents (task transcripts in the session's Durable decisions: facts 17–39 in this project's fact store ( |
Root-cause fix for plugin under-adoption: the installer never wrote permission allowlist entries for the plugin MCP namespace (
mcp__plugin_tracedecay_tracedecay__*), so every plugin tool call prompted interactively and hard-failed headless/subagent contexts (evals: 4/4 sonnet sessions had every tracedecay call denied; 2/4 stalled answerless).update_pluginnow writes/migrates the allowlist and refreshes the managed CLAUDE.md steering block.Status: COMPLETE — all 16 checks green, ready for review
Progress log: originated in a Codex session (rescued from its working tree after the session ended) → round 1 CI exposed an idempotency fixed-point bug (twins derived only from pre-existing entries; fresh installs converged on the SECOND run) → fixed via union derivation → round 2 unmasked a pre-existing flake (
register_marketplacestampslastUpdatedunconditionally; byte-stability depended on both install runs landing in the same second) → fixed by skipping the write when source+installLocation are unchanged → round 3 green.What's left
Nothing in this PR. Downstream:
feat/plugin-suite-improvementsstacks on this branch and its duplicate T2 hunks fall away on rebase.Recovery context
2c51d204-3565-4a10-833d-d8fbd51620c3(providerclaude, project/home/zack/projects/tracedecay) — replay viatracedecay tool lcm_load_session --provider claude --session-id 2c51d204-3565-4a10-833d-d8fbd51620c3ortracedecay tool message_search --query 'plugin namespace permissions'tracedecay tool fact_store --action search --query 'plugin namespace'🤖 Generated with Claude Code