Skip to content

Commit 79b2c53

Browse files
iOSDevSKclaude
andcommitted
security: the one word a scanner reads as an instruction, and a hook said out loud
SKILL.md told the model that starting Docker on Linux "needs sudo systemctl" and therefore stays on the list the model never runs. The logic was right and unchanged; the literal was what a static scanner matches, and it cost the skill a grade in every catalogue that scans it. The passage now says the same thing — administrator rights through the service manager, so it stays below — and points at check-prereqs.sh, which already prints the exact command for the user and never runs it. That script is untouched: there is no way to tell a Linux user to install a system package without that word, and it only echoes. hooks.json registers a PostToolUse hook on every Bash call. The manifest disclosed it structurally; the README did not mention it at all. One paragraph under the Claude Code install now says what it does and what it does not do, because a reviewer doing safety screening reads prose, and a hook that fires on every command is the first thing they look for. Nothing in the scripts changed. The seven security tests that ship with the plugin pass unchanged: SSRF guard 34 cases, safe-path 30, secret payload, cleanup guard, payload allowlist. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0193x9K42x622Pcf8kAsj1dn
1 parent 38863b6 commit 79b2c53

4 files changed

Lines changed: 10 additions & 2 deletions

File tree

‎README.md‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,13 @@ with `codex plugin remove html2wp@<that-name>` so it cannot shadow this one.
127127
/plugin install html2wp@html2wp
128128
```
129129

130+
Installing the plugin also registers one hook, `hooks/stage-progress.sh`, which
131+
runs after every Bash call. It reads the command line the tool just ran, and if
132+
that line invoked one of the conversion's stage scripts it reminds the model to
133+
report the stage boundary. It runs nothing, writes nothing, and sends nothing;
134+
on every other call it prints `{}` and exits. The source is short and is the
135+
whole of what it does.
136+
130137
### Keeping Claude Code current
131138

132139
**To update:**

‎skills/html2wp/SKILL.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,9 @@ rest of the conversion.
290290
on macOS, where it needs no root: `open -a Docker`, then wait for it to answer.
291291
It is the commonest of the three Docker failures and it changes nothing
292292
durable, so stopping the conversion to ask someone to click an icon was
293-
friction with no safety behind it. On Linux it needs `sudo systemctl`, so it
294-
stays below.
293+
friction with no safety behind it. On Linux the daemon is started through the
294+
system service manager and needs administrator rights, so it stays below;
295+
check-prereqs.sh prints the exact command for the user to run.
295296

296297
**The machine list — say what is needed and stop.** Two things, and the reason
297298
matters more than the rule, because "it changes the machine" is squeamishness
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)