feat(scanner): fail closed on plugin GitHub merge and release commands - #1170
Conversation
Lock gh pr merge and gh release create/upload/delete/edit as fail-closed findings. Keep issue create, PR review, release list, kubectl apply, and docker push as inventory. Relates to #1099.
Hook and manifest gh pr merge fail as claude-plugin-github-merge-command. gh release create, upload, delete, and edit fail as claude-plugin-github-release-command. Snippets are command labels, not tokens. Relates to #1099.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Stacked Draft on #1169 Local evidence: RED Do not Close #1099 or #1169. Checksum-mismatch stays #1169. Hardcoded PAT stays |
|
Stacked successor Draft #1171 ( |
Summary: - Snapshot 2026-09-07 23:23 UTC records Draft #1171 `9370a0d` stacked on #1170. - Host cookie/token stores beyond browser profiles fail closed. - Remaining leftover: deep directory recursion, Cosign/GPG, deployment-write. Rationale: - #999 is the single writer of the product-technical gap baseline. - Do not Close #1099, #1170, #1150, or #1137. Tests: - documentation-only; detector evidence lives on #1171 (2505/2505)
Summary: - Snapshot 2026-09-07 23:37 UTC records Draft #1172 `936311c` stacked on #1171. - Hook kubectl apply and docker push fail closed. - Remaining leftover: deep directory recursion, Cosign/GPG, terraform/helm. Rationale: - #999 is the single writer of the product-technical gap baseline. - Do not Close #1099, #1171, or #1170. Tests: - documentation-only; detector evidence lives on #1172 (1813/1813)
|
Current-head evidence — 2026-09-13: ordinary two-parent head |
Successor of #1169 / issue #1099. Does not Close those. Checksum mismatch stays #1169. Pass is not Noema admission.
Unique delta
Fail closed when a plugin hook or manifest runs GitHub CLI write verbs:
gh pr mergeasclaude-plugin-github-merge-command(CWE-269)gh release create|upload|delete|editasclaude-plugin-github-release-command(CWE-250)gh issue create,gh pr review,gh release list,kubectl apply, anddocker pushstay inventoryclaude-plugin-github-write-tokenCapability inventory keys remain evidence. Merge and release write verbs on hook/manifest surfaces are findings.
Evidence
527edb5then GREENb506b82tests/test_claude_plugin_github_merge_release.py16 passed plus inventory lockclaude_plugin_detector.pystatement coverage 2455/2455 on Python 3.13Relates to #1099. Relates to #1169.
Current shared GitHub command-context repair — 2026-09-08
RED
5bfad6273d0a1d507078d2c4e0689d14e599cc27proves that structural manifestcommandplus typedargswas missed, while descriptions, reporting commands, assignment values, noexec payloads, and near verbs were misclassified by raw whole-surface regex. GREEN exact headc17fc4fc628af573a4136aff8e2157ddcef3a4a2routes GitHub merge/release through the bounded shared command parser. Exact source/test AST passes with SyntaxWarning denied; production probes pass 10/10. Direct argv and boundedsh|bash -cremain positive; malformed/mixed argv, whitespace executable identity,merge-now,createLocal, and non-write verbs remain negative. This custom-base PR stays Draft because hosted integration and current-head independent review are absent.Current non-force restack — 2026-09-13
This Draft is an ordinary two-parent descendant of prior head
c17fc4fc628af573a4136aff8e2157ddcef3a4a2and current #1169 head7f9689b879a6b948a852ac5d78012385199eecff. Exact head isf5c75be09b9effa753f1c4f29d931ebe74bc786f; exact tree isab082b4e4aa67e012d62e6fe7cd4520057381332. GitHub compare reports 5 ahead / 0 behind and preserves the checksum nested-path and legitimate..safe.binboundaries together with every GitHub merge/release detector delta. Exact-tree targeted GitHub/checksum tests are 60/60; the complete Claude-plugin regression is 383/383; detector/test compile and diff checks pass. No hosted exact-head workflow or qualifying independent review exists, so this custom-base PR remains Draft. Earlier head/check strings are historical evidence only.