Repository navigation
feat(security): run every security skill without project adoption - #1787
Merged
Merged
Conversation
potiuk
enabled auto-merge (squash)
October 24, 2026 21:21
A maintainer who installed Magpie for themselves passed pre-flight and then stopped mid-run: vetted-ops and generate-cve-json only read the committed .apache-magpie-overrides/. Both now fall back to the personal layer; setup config drafts them. The personal vetted-ops policy gets the same tamper protection as the committed one (new required deny rules), and vetted-ops reads it only in those protected shapes and never through a symlink. A marketplace install had no <framework>/tools at all. The new magpie-security-tools substrate plugin carries the tools the security skills run; its session hook materialises a writable copy per version at ~/.cache/apache-magpie/framework/<version> with `current` pointing at it, so the skills' `uv run --project <framework>/tools/<tool>` works unchanged. Setup installs it with magpie-security, and pre-flight and upgrade name it when it is missing. Wording: <project-config> no longer claims to be the snapshot, user.md reads follow the documented order, and issue-fix never saves personal data into the committed overrides. Generated-by: Claude Opus 5
potiuk
force-pushed
the
feat/security-skills-solo-maintainer
branch
from
October 24, 2026 21:28
5abe53e to
2f3925e
Compare
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.
Summary
requires_configfrom the personal layer, but two tools only looked in the committed.apache-magpie-overrides/: vetted-ops (every tracker operation) and generate-cve-json (CVE JSON incve-allocate,issue-sync,issue-deduplicate). Both now fall back to the personal layer (<git-common-dir>/apache-magpie/tools/…, legacy.apache-magpie-local/), committed first.setup configgains a step that drafts both for an unadopted project.permissions.denyrules (//**/.git/**/apache-magpie/tools/vetted-ops/**,.svn/…,.apache-magpie-local/…), merged into the sandbox write-deny; vetted-ops reads a personal policy only in those protected shapes, and never through a symlink. The agent cannot write it — the user saves it from the draft.magpie-securityshipped onlyskills/, so<framework>/tools/<tool>did not exist without a framework checkout. New substrate pluginmagpie-security-toolscarries the tools the security skills run (packaged pyprojects drop the workspace-onlydevgroup and point inter-tool deps at sibling copies). Its session hook materialises a writable copy per version at~/.cache/apache-magpie/framework/<version>withcurrent→ it, so<framework>=~/.cache/apache-magpie/framework/currentand the skills'uv run --project <framework>/tools/<tool> …works unchanged (as doesuvx --from). Setup installs it withmagpie-security; pre-flight and upgrade name it when missing; Codex catalog included.<project-config>placeholder no longer claims to be the snapshot;user.mdreads use the documented resolution order, andissue-fixnever offers to save personal data into the committed overrides.Type of change
tools/vetted-ops,tools/cve-tool-vulnogram/generate-cve-json,tools/sandbox-lint,tools/security-management,tools/setup-preflight)<framework>)check-family-plugins.pypackaging, hook filter,plugins/pyproject.tomlexclusions)Test plan
prek runon every changed file passesuv run --project,uv run --directoryanduvx --fromfrom a read-only copy of the pluginroborevreview, findings fixedRFC-AI-0004 compliance
Notes for reviewers
issue-invalidate's canned-response links point into the tracker repo, so a solo user's posted link can be dead; local-tracker custom parsers still read only the committed directory.Gen-AI disclosure: drafted with Claude Code (Opus 5); reviewed by the submitter.
🤖 Generated with Claude Code