Tool Schema Caching Lands on Native Anthropic - 70% Spend Cut on Tool-Heavy Agents

NOTE: X API v2 and OpenRouter both returned 402 today - systemic billing outage. This roundup is sourced from GitHub PR discovery.
Tool schema caching on Anthropic (#76032)
On tool-heavy Hermes agents, the ~12K-token tool schema was re-sent uncached on every internal LLM call. That was roughly 70% of input spend - issue #20880 measured $0.45 for three short turns.
PR #76032, a salvage of rodboev's #37611 by kshitijk4poor, landed today. It re-plans the 4-breakpoint Anthropic cache budget as static-system-prefix + tools[-1] + last-2 completed-transaction endpoints. The tool schema becomes a cached prefix. Every other route - OpenRouter, third-party Anthropic-wire gateways, chat_completions - keeps the current message-only layout byte-for-byte.
The adapter wire plumbing for tool cache_control has been on main since #23828 (anthropic_adapter.py:1768). This PR is its first in-tree emitter.
The PR touched 13 files: +855/-57 across agent/prompt_caching.py (new build_prompt_cache_plan), agent/conversation_loop.py, agent/chat_completion_helpers.py, agent/agent_runtime_helpers.py, agent/auxiliary_client.py, agent/moa_loop.py, run_agent.py, and six test files. All 294 targeted tests passed. End-to-end probes confirmed the budget invariant (marker count never exceeds 4 across six adversarial shapes), prefix stability across turns, byte-identical non-native fallback, and marker survival through OpenAI-to-Anthropic wire tool conversion. Plan cost on 533KB/199-message history: 0.41 ms per call.
The PR notes that open PR #27170 (which strips tool markers with a budget sanitizer) is superseded and should be closed.
Non-blocking ACP startup (#75985)
ACP was the last Hermes surface that still ran MCP discovery synchronously - acp_adapter/entry.py blocked asyncio.run() for the full connect time of every configured server. That is 2-5 seconds when healthy, and worse when a server is dead.
PR #75985 salvages Prontsevich's #32811: ACP now uses the same background-discovery design that CLI, TUI, and gateway already adopted (hermes_cli/mcp_startup.py). A bounded snapshot wait runs before agent build, with a cache-safe pre-first-turn late refresh. Four files changed: +463/-7, plus 327 lines of new tests.
Compression guard: skip LLM when there is nothing to compress (#76084)
When the compressible middle section of a conversation falls below 10% of threshold_tokens - and at least one prior ineffectiveness strike has been recorded - PR #76084 makes compress() skip the LLM summarisation call entirely and fall through to the deterministic message-dropping path. A salvage of Wpnx330's #68334. Three files: agent/context_compressor.py (+127/-14), agent/conversation_compression.py (+4/-0), and 201 lines of new tests.
Cache TTL disable now honoured (#76015)
Setting prompt_caching.cache_ttl to a falsy value - false, null, "off", "disabled", "no", "none" - now fully disables prompt caching. Previously these values were silently ignored. Five files: +100/-1. This is the smallest PR of the day but one of the most requested: users who turned off caching in config expected it to actually turn off.
Desktop: session workspace tracks focus (#75988)
OutThisLife landed a desktop UX refinement: the statusbar workspace indicator now follows the focused session (tabs or tiles), not the primary $currentCwd. A shared displayPath collapses home to ~/... across chrome surfaces. And Cmd+N / Cmd+T inherit the focused chat's project cwd. Fifteen files: +452/-69.
What the day's work says
kshitijk4poor landed four PRs today, all salvages of older community work (rodboev, Prontsevich, Wpnx330) carried forward to current main. The pattern is consistent: the original author's commit is cherry-picked with authorship preserved, then adapted for current APIs and tested. The tool schema caching PR - 13 files and eight new tests - is the most impactful single change. On a tool-heavy agent, cutting 70% of Anthropic input spend moves the cost needle for anyone running Hermes in production.
[^1]: kshitijk4poor. "perf(prompt-caching): cache tool schemas on native Anthropic without history loss." NousResearch/hermes-agent #76032. August 1, 2026. [^2]: kshitijk4poor. "perf(acp): non-blocking startup via background MCP discovery + cache-safe late refresh." NousResearch/hermes-agent #75985. August 1, 2026. [^3]: kshitijk4poor. "fix(compression): pre-LLM feasibility check with streak-neutral boundary accounting." NousResearch/hermes-agent #76084. August 1, 2026. [^4]: kshitijk4poor. "fix(caching): honor prompt_caching.cache_ttl disable in config." NousResearch/hermes-agent #76015. August 1, 2026. [^5]: OutThisLife. "Session workspace tracks focus - and paints as ~/-." NousResearch/hermes-agent #75988. August 1, 2026.