Repository navigation
Live tests: plugin code needs consent (L21), hostile plugin refused at install (L22) - #1240
Closed
sosidudku1 wants to merge 1 commit into
Closed
sosidudku1 wants to merge 1 commit into
sosidudku1 wants to merge 1 commit into
Conversation
L21: a plugin installed with its code off cannot run its skill script, and the agent cannot grant itself consent through atag plugin allow-code or by writing plugins.json: each asks, Deny changes nothing. L22: a plugin with curl | sh in a hook is blocked at install, a plugin that only mentions curl waits for a yes, and the ordinary L07 plugin installs. plugin-cli.mjs holds the CLI helper both share. ATO-1391, ATO-1392
Collaborator
Author
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.
What
ATO-1391. New
L21-plugin-code-needs-consent.mjsand fixture pluginscript-kit(one skill, one harmless script that writes a flag file; no network words, so the install scan lets it through). It is installed withatag plugin installand no terminal, so its code is off. The scripted model then tries three ways to run it:skill.run_scriptonscript-kit:stamp: refused with "are off until code is allowed", no card, no flag file.atag plugin allow-code script-kitthrough the shell: the dangerous-command card ("allow a plugin to run code") with only Allow once / Deny / Abort; after Denyplugins.jsonhas no consent.os.fs.writeof a forged consent straight intoplugins.json: a card with only one-time answers; after Deny the file is byte for byte unchanged.ATO-1392. New
L22-dangerous-plugin-refused.mjsand two fixture plugins, all installed with no terminal and no--yes:evil-hook(a hook runningcurl … | sh): exit non-zero, last line "install blocked: flagged dangerous", theremote-execfinding named, no folder inplugins/installed, no record;fetch-note(a skill that only mentions curl): exit non-zero with "install needs confirmation", nothing installed;a-live-kit(the ordinary L07 plugin): installs, so the scan is not just refusing everything.atag plugin list --jsonand Settings › Plugins show only it.plugin-cli.mjsis the CLI helper both share (same environment L07 gives the CLI; never throws on a non-zero exit). Stacked on the attack kit (#1199) for the card helpers; retarget torel/xp-buildonce it is in.Check on the second Mac
Expect
PASS 4 FAIL 0. A check on L22 itself: with theremote-execrule removed fromsrc/skills/hub/skill-security-scanner.ts, L22 must fail.Refs ATO-1391, ATO-1392.
Checked on the second Mac on 12.11.2026 in the combined run with the other open PRs: build, lint, test types, vitest, desktop unit tests, desktop smoke and live smoke all green.