threatlocker-v0.3.4
Fixed
-
recallandplaybook listtold your MCP host they were read-only tools. They were not.
Both were annotatedmcp:read-only=truewhile both open the writable learn store on every
call:recallinserts a learn event,playbook listappends an audit record. The annotation
is what an MCP host reads to decide what it may auto-approve without asking you, so the false
claim was the defect - a host was waving through a write it had been told could not happen.
Both now carrymcp:local-write=true, the tier this connector already used forteachand
playbook amend: the write lands only in this CLI's own local store, never in external state
and never in a file you would go looking at. Measured at the running MCP server, before and
after:recallandplaybook_listwent fromreadOnlyHint=true, openWorldHint=trueto
readOnlyHint=false, destructiveHint=false, openWorldHint=false.The writes themselves are unchanged. This is a truth fix, not a behaviour fix - both
commands still write exactly what they wrote before, and nothing you can call does anything
new. If you had approved these tools on the strength of the read-only annotation, that is the
decision worth revisiting. See issue #275 finding 4. -
learnings list,learnings candidatesandlearnings statskeepmcp:read-only, and
AGENTS.mdnow says what that does and does not promise. Each still opens the learn store
read-write and creates the database file when it is absent, but none of them records a
learning row, so the annotation stands. It is narrower than it sounds, and the prose no longer
implies otherwise.
Changed
- Install and remote-MCP instructions now describe the artifacts this repository actually
ships. The guide routed installs through the printing-press library (npx -y @mvanhorn/printing-press-library install threatlocker, and ago installfrom that repo's
module path) - neither publishes these binaries. It now points atskills/threatlocker/ install.sh/install.ps1, and says plainly that the installer downloads binaries and does
not register the skill with your agent or write any MCP client config;mcp-install.md
covers that separately. - The ChatGPT answer no longer sends you to a bridge package.
threatlocker-mcpspeaks HTTP
natively:threatlocker-mcp --transport http --addr :7777behind an HTTPS tunnel or your own
reverse proxy. The old text namedmcp-remote, which bridges the other direction. doctorexits 0 even when the credential is rejected, so the guide now tells scripts to
add--fail-on errorinstead of testing the exit code alone.- Interim
.mcpbnote. The Claude Desktop bundle'smanifest.jsonlaunches a binary name
the archive may not contain (issue #287). The download section now tells you to check with
unzip -l <file>.mcpb | grep bin/and to fall back to the shell installer if it does not
match.
Documentation
-
The upstream citations on this connector's two hand-fixes now record what upstream actually
did, instead of pointing at a dead issue. They citedmvanhorn/cli-printing-press#4165,
which had been closed as completed with both of these findings explicitly out of scope - so
the code sent readers to an issue that would never move. They were re-pointed at#4482,
which upstream then closed on 2026-09-01 by merging#4489(first shipped in press v4.31.5),
fixing both:doctornow skips read commands that need input, and the sync profiler binds a
child collection keyed by a required query parameter. Both citations say so, and neither
claims a tracker is still open.Nothing in the shipped binary changes. This connector is still generated on press 4.30.2, so
both hand-fixes are still doing their work; what changed is the instruction left for the next
reprint, which now says check rather than assume - and says what to check. Comments,
handfixes.jsonfollow-ups andreprint-patches.pyonly.