This release closes host-integration gaps found by a drift audit: several tool calls that previously reached a shell without analysis are now checked, and doctor no longer reports a host as protected while that host is skipping the hook.
Highlights
- Analyzed tool calls that previously ran unchecked: Devin
execworking directories andwrite_to_processkey input, Antigravity CLImanage_taskinput, Grok Build'srun_terminal_cmd,bash, andShelltools, and OpenCode's forcedopencode_worktree_remove. doctornow reportsdisabledinstead ofconfiguredwhen the host skips the hook: a Grok Builddisabled-hooksentry, an invalid Kimi Code[[hooks]]entry that makes Kimi drop every hook, or a Piextensionsfilter that does not load the extension.
Added
- Added Kimi Code plugin detection:
doctorreadsplugins/installed.jsonand reports the plugin configured, or disabled when it is installed but not enabled.updateskips the plugin and names the in-host step (/plugins, Installed tab) because it cannot run Kimi's own plugin update. (#257)
Changed
- Changed Claude Code to ask instead of deny in the
autopermission mode when standard mode cannot verify a command; the permission prompt still reaches a person there, and Claude Code's classifier cannot approve the call without it. (#254) - Changed Factory Droid denials to print the reason to stderr and exit 2 in addition to the JSON decision, so a co-installed allow or ask hook can no longer drop the block. (#253)
- Changed
install --droidseeding: when~/.factory/hooks.jsondoes not exist yet, it now carries over every event from the legacy~/.factory/hooks/hooks.jsonand onlyPreToolUsefromsettings.json, instead of freezing everysettings.jsonevent. (#253) - Changed Grok Build command-tool coverage, so
rule tool addnow refusesrun_terminal_cmd,bash, andShellas Grok Build built-ins. AbashworkdirorShellworking_directoryoutside the workspace root is denied, and a blank or non-string value fails closed. (#248)
Fixed
- Fixed Devin
execcalls ignoringworkdir, so a command is analyzed against the directory it runs in. (#247) - Fixed Devin
write_to_processanalysis:bytes_inputis analyzed as typed text with<CR>and<LF>ending lines, and a call whose text is combined with line-editing keys, an undocumented key token, or text in bothtext_inputandbytes_inputis denied rather than analyzed as a line the receiving program would not run. (#247) - Fixed Antigravity CLI
manage_taskwithAction: "send_input"reaching a running process without analysis; itsInputis now analyzed as a command. (#247) - Fixed grep-style tool calls skipping path checks on their filter arguments;
glob_pattern,dir_path, andinclude_patternare now checked, closing secret-file reads through Droid, Devin, and Gemini CLI grep filters. (#250) - Fixed Gemini CLI file paths being analyzed only as sent;
file_pathis now also analyzed as the host rewrites it, with NUL bytes removed and a leading@stripped when the literal path does not exist. (#250) - Fixed OpenCode Code Mode
opencode_worktree_removewithforce: truediscarding untracked files without analysis; it is now checked asgit worktree remove --force, matching the verdict for the shell form. (#251) - Fixed the OpenCode v1 shell dialect on Windows: with no configured shell, the adapter now follows
SHELLas the host does, instead of always assuming PowerShell. (#251) - Fixed
install --opencodeandupdatefailing withPlugin is not configuredwhen the OpenCode v2 service was not running. (#251) - Fixed
doctorandupdatemissing a Claude Code plugin install whenCLAUDE_CODE_PLUGIN_CACHE_DIRis set. (#254) - Fixed the Cursor check following
CLAUDE_CONFIG_DIR, which could advise removing Cursor's only working hook; Cursor imports the Claude Code plugin from~/.claudeonly. (#254) - Fixed
install --droidanddoctorfailing on a comment inhooks.jsonorsettings.json; both files are now parsed as JSONC, as Droid parses them. (#253) - Fixed GitHub Copilot CLI
disableAllHookshandling: a hook file that disables hooks for itself is no longer counted as active,disableAllHooksin the usersettings.jsonnow drops only that file's inline hooks instead of every method, and~/.copilot/config.jsonis no longer read for hooks. (#256) - Fixed the Kimi Code plugin install instructions and method prompt omitting the double-hook caution when the detected global hook was reported disabled by an invalid sibling hooks entry. (#257)
- Fixed unreadable host state aborting detection: an unreadable Grok Build
disabled-hooksfile or Kimi Codeplugins/installed.jsonis now reported as an error naming the file instead of stoppingdoctor,install, andupdatediscovery. (#257)
Security
- Documented four host behaviors CC Safety Net cannot correct:
openclaw agent execloads no plugin hook, Kimi Codekimi weband ACP sessions report the server's directory as the sessioncwd, OpenCode v1 on Windows can convert a POSIX-rootedworkdirdifferently than the adapter resolves it, andinstall --deepseek-harnesscovers thewebanddesktopprofiles only. SeeSECURITY.md. - Clarified reporting guidance: a redaction gap for a value the tool call itself supplied, appearing only in that caller's denial message or the local audit log, is an ordinary public bug, while disclosure of a secret the caller did not supply remains private disclosure.