docs(claude-ops): re-verify userConfig unset-key render on 2.1.263 - #3826
Conversation
dd255fa to
3835edc
Compare
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @kyle-sexton's task in 2m 19s —— View job Review complete ✅
SummaryDocs-only change (4 files, +41/-23): re-verifies the I reviewed the diff (
The empirical claims themselves (what Claude Code 2.1.263 actually renders for No correctness or maintainability findings to report — nothing here rises to "a careful senior reviewer would block or flag." No inline comments posted. |
|
Claude finished @kyle-sexton's task in 42s —— View job Security review complete
Skip gate hit: no security-relevant surface. All four changed files are documentation/metadata only:
None of this introduces code paths, executable logic, command construction, credential handling, or CI/Actions changes — it's a documentation correction describing prior manual CLI probes ( No security issues found. Per the skip gate in |
|
Last security-reviewed head: |
|
Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3835edcb0c
ℹ️ 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".
A key set in real user settings substitutes into skill content; an unset sibling renders the literal placeholder, not the manifest default. The 2.1.261 control failed because its --settings pluginConfigs payload put the key directly under the plugin id; the effective shape nests it under options, and with that shape --settings substitutes too. SKILL.md carries the stamp, the shape and the --config recipe; scope-semantics.md records the nesting. Closes #3759 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
3835edc to
0eef130
Compare
Closes #3759
Summary
The
pluginsskill'sinstall_newrender rests on the claim that an unsetuserConfigkey renders the literal${user_config.<key>}placeholder rather than the manifest default. The 2.1.261 re-verification could not confirm or deny it because its positive control failed: a key set through--settingspluginConfigsrendered literal. Issue #3759 asked for a probe allowed to write real user settings so the two explanations (--settingsdoes not feed substitution, or substitution regressed) could be separated.Fix
userConfigstring keys, both with manifest defaults.claude plugin install <id> --config setkey=REALVALUEwrote the real user-settings entry. Rendered skill body: the set key substituted, the unset key rendered the literal placeholder (not its default),${CLAUDE_PLUGIN_ROOT}substituted. Claim holds; explanation (1) from the issue is the right one, and there is no regression.--settings '{"pluginConfigs":{"<id>":{"options":{"unsetkey":"VIA_SETTINGS_FLAG"}}}}': the flag-sourced value substituted alongside the user-settings one. So--settingsdoes feed skill-content substitution; the 2.1.261 control failed because its payload put the key directly under the plugin id instead of underoptions.SKILL.mdreplaces the "inconclusive" paragraph with the 2.1.263 stamp, theoptionsshape, the--configrecipe, and a note that the current plugins-reference page says the default "is used if specified" for an unset key while the render contradicts it for skill content.install_newneeds no fallback beyond the existing "placeholder meansask" rule. Frontmatter unchanged.scope-semantics.mdrecords theoptionsnesting in thepluginConfigssection and updates the preamble's not-re-run list.Verification
markdownlint-cli2over the touched markdown: 0 issues.typos: clean. No em dashes in added lines.SKILL.mdfrontmatter diffed byte-identical againstorigin/main.~/.claude/settings.json,installed_plugins.json,known_marketplaces.jsonall hash-identical to the pre-probe backups. ThepluginConfigsentry the probe wrote was removed by the uninstall.Related
🤖 Generated with Claude Code