Skip to content

feat(scanner): reject dynamic eval on plugin hook surfaces - #1145

Draft
seonghobae wants to merge 2 commits into
feat/claude-plugin-postinstall-download-1099from
feat/claude-plugin-dynamic-eval-1099
Draft

feat(scanner): reject dynamic eval on plugin hook surfaces#1145
seonghobae wants to merge 2 commits into
feat/claude-plugin-postinstall-download-1099from
feat/claude-plugin-dynamic-eval-1099

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Current repair boundary — 2026-09-12

Summary

  • Fail closed on eval( / exec( / compile( / new Function( / shell eval on plugin hook, script, and command surfaces (claude-plugin-dynamic-eval).
  • print() and evaluate() remain negative. Repo-root Python is not a plugin hook surface.
  • Does not invent a second download family; feat(scanner): reject plugin postinstall downloads #1144 postinstall download stays unique.
  • scan_result=pass is not Noema admission.

Stacked on #1144. Unique remaining #1099 dynamic-evaluation slice. Do not Close #1099 or #1144. Do not steal G-06 #1133.

Test plan

  • RED then GREEN (tests/test_claude_plugin_dynamic_eval.py)
  • Detector statement coverage 1006/1006 with plugin suites
  • Exact-head Checks on this head
  • Keep Draft until current-head gates are GREEN

Relates to #1099. Relates to #1144.

eval/exec/compile, new Function, and shell eval on hooks/scripts/commands
fail admission. print() and evaluate() stay negative. Relates to #1099.
@coderabbitai

coderabbitai Bot commented Sep 7, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

seonghobae added a commit that referenced this pull request Sep 7, 2026
Snapshot 2026-09-07 13:58 UTC: #998 8b95c2b Tests/AST/Noema/OpenCode GREEN;
Strix FAILURE is STRIX_PROVIDER_UNAVAILABLE (G-07). #1145 1d42ac5 rejects
hook eval/exec. Do not Close #983 or #1099.

Copy link
Copy Markdown
Contributor Author

Unique remaining #1099 dynamic-evaluation slice on #1144 c66dfaf.

Exact head 1d42ac55df6b576a61e693e5dca57e238ec8d388. Hook eval/exec/compile/Function fail closed. Detector statement coverage 1006/1006. Keep Draft. Do not Close #1099 or #1144.

Copy link
Copy Markdown
Contributor Author

Stacked successor: Draft #1146 (feat/claude-plugin-hidden-executable-1099) targets this branch for the unique remaining #1099 hidden undeclared executable/config slice (claude-plugin-hidden-undeclared-executable). It does not Close #1099 or this PR, does not change the eval/exec delta, and does not treat .git metadata as a plugin executable surface.

seonghobae added a commit that referenced this pull request Sep 7, 2026
Summary:
- Snapshot 14:09 UTC records Draft #1146 `94946c7` stacked on #1145.
- Hidden undeclared executable/config surfaces fail closed.
- `.git/` and `.gitignore` stay outside that class.

Rationale:
- #999 is the single writer of the product-technical gap baseline.
- #1099 remaining surfaces stay on stacked successors, not Close.

Tests:
- documentation-only; detector evidence lives on #1146 (1428/1428)
@seonghobae seonghobae added enhancement New feature or request priority: medium Normal-priority or P2 work labels Sep 8, 2026 — with ChatGPT Codex Connector
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: medium Normal-priority or P2 work

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant