This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+13 more
Summary
AI summaryipc tool gains broker-based reliable messaging with new operations and parameter aliases added.
Full changelog
Quick Start
- Download the binary for your OS below
- Run
agent-tool install(oragent-tool install claude) - Restart your IDE
- Done -- all tools work immediately, no permission popups
Or just ask your AI agent:
"Download agent-tool from https://github.com/knewstimek/agent-tool/releases/latest and run
agent-tool install"
Any capable AI coding agent (Claude Code, Codex, etc.) can handle the full download -> install -> restart flow automatically.
Tip: Add this to your CLAUDE.md or AGENTS.md so your agent prefers agent-tool over built-in tools:
Strict mode:
ALWAYS use agent-tool MCP tools (mcp__agent-tool__*) instead of built-in file tools. agent-tool preserves file encoding and respects .editorconfig indentation settings.
Soft mode:
Prefer agent-tool MCP tools (mcp__agent-tool__*) over built-in file tools when available.
What's New
New tool: ipc (broker mode)
ipc already supported point-to-point send/receive. This release adds a broker-based mode for reliable agent-to-agent messaging with no missed messages.
A shared in-process broker queues messages in named mailboxes. Timing doesn't matter -- post before the receiver is ready and the message waits in the queue.
New operations:
broker_start-- start (or attach to) a broker on this machine (default port 19901). First caller wins the broker role; subsequent callers connect as clients.broker_stop-- stop the broker (owner only)post-- send to a named mailbox, non-blocking. Params:to,from,message,portfetch-- read all pending messages, non-blocking. Params:mailbox,portwait-- block until a message arrives. Params:mailbox,timeout,port. No tokens consumed while waiting.broker_status-- show queued message counts per mailbox
The tool description now includes a persistent worker pattern so agents know how to loop: broker_start -> loop { wait -> process -> post }
Example workflow (two agent sessions):
Session A: ipc(operation="broker_start")
ipc(operation="wait", mailbox="A") <- blocks until B posts
Session B: ipc(operation="broker_start") <- connects to A's broker
ipc(operation="post", to="A", from="B", message="hello")
ipc(operation="wait", mailbox="B")
Session A: receives "hello", replies:
ipc(operation="post", to="B", from="A", message="done")
Fix: Server instructions now list all tools correctly
The MCP server instructions (shown to agents at startup) had several issues: hardcoded tool count ("50", actually 53), missing tools in groups, and no capability hints for non-obvious tools. Fixed:
- Removed hardcoded count -- maintenance burden, was wrong anyway
- Added missing tools to file group:
multiedit,patch,regexreplace - Added missing tools to groups:
firewall,download(network),codegraph(analysis),ipc(system) - Added capability hints:
wintool (GUI/screenshot/clipboard/sendmessage),ipc (agent messaging/broker) - Added
helpto config group - Added capability hints for non-obvious tools:
analyze (PE/ELF/disasm/xref/RTTI),debug (DAP/dlv/debugpy/codelldb),memtool (process memory scan/read/write)
Fix: MCP server processes no longer linger after IDE/CLI exit (Windows)
OpenProcess was used alone to check if the parent process was alive, but this call succeeds even for exited processes as long as their object is kept alive by another handle holder (e.g. the shell -- PowerShell, Windows Terminal -- holding a reference to the process it spawned). This caused the parent monitor to report the parent as alive indefinitely, so MCP server processes would pile up across restarts and never self-terminate.
Fixed:
- Primary path uses
WaitForSingleObject(SYNCHRONIZE)opened at startup -- instant exit detection, zero polling overhead, immune to PID recycling - Fallback polling uses
GetExitCodeProcess(STILL_ACTIVE=259)as the authoritative liveness check - Polling interval reduced 30s -> 5s on both Windows and Unix
Param aliases: intuitive parameter names for all file/tool pairs
Agents often use intuitive short names that differ from the actual schema params, causing validation errors. Extended alias coverage across multiple tools:
multiread:paths->file_pathscopy:src->source,dst->destinationrename:source/from->old_path,destination/to->new_pathdiff:a/file1->path_a,b/file2->path_bbackup:destination->dest_dirsftp:host/server->addressgrep:recursiveparam added (default true, false = top-level only)read:start_line->offsetalias,end_line-> auto-computeslimitedit:old_content->old_string,new_content->new_string
Fix: JSON-encoded string arrays in tool params
Agents (particularly when using XML tool call format) sometimes pass array params as a JSON-encoded string -- e.g. paths: "[\"a\",\"b\"]" instead of paths: ["a","b"]. The schema validator was rejecting these, causing silent failures and wasted retries. SafeAddTool now auto-detects and unwraps JSON-encoded string arrays before validation. Applies to all tools with string-array params (multiread paths/file_paths, etc.).
Dependencies
github.com/modelcontextprotocol/go-sdk1.4.1 -> 1.5.0 (client OAuth stabilization, no API changes for server-side usage)golang.org/x/net0.52.0 -> 0.53.0
Full Changelog: https://github.com/knewstimek/agent-tool/compare/v0.8.4...v0.8.5
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About knewstimek/agent-tool
Encoding-aware, indentation-smart file tools for AI coding agents. 20+ tools including read/edit with automatic encoding detection, smart indentation conversion, SSH, SFTP, process management, and system utilities. Preserves file encoding (UTF-8, EUC-KR, Shift_JIS, etc.) and respects .editorconfig settings.
Related context
Beta — feedback welcome: [email protected]