ZeroNoise Logo zeronoise
Post
The Agent Harness Is Becoming Self-Improving
2 hours ago
4 min read
69 docs
Exo’s rollback-protected recursive harness and Flue 2’s dynamic Agent Hooks point to a shift from static prompts toward evolvable, testable coding-agent control planes.

🔥 TOP SIGNAL

The harness is becoming the agent. Fred Schott’s Flue 2 makes an agent a JavaScript function that re-renders before every model call; its TypeScript hooks manage state and lifecycle, and attach skills, tools, and subagents dynamically—for example, adding account-management access only after a support bot verifies the user. Alex Krentsel’s Exo takes the harder route: policy lives in a stateless executor, history/secrets/snapshots in a protected harness, commands in a sandbox, and a guardian can rebuild the executor and roll it back if the new version breaks.

The practical consequence is not “give the model more autonomy”; it is “give autonomy explicit boundaries, snapshots, and evals.” Krentsel argues that architectural guarantees beat prompt-level rules for properties such as never deleting history, and warns that cost optimization without evals can reward-hack by simply stopping work.

⚡ TRY THIS

  • Close the context-cost loop. Add per-message cost annotations to the conversation log. Ask the agent to inspect its last expensive call, narrow context to the active conversation or thread, observe and test the change, and commit the improvement only after a functional eval. Exo reports taking a Discord call that cost 16¢ to roughly 96% cheaper this way; its own warning is the important part—without an eval, “do nothing” is the cheapest possible optimization.

  • Separate what can change from what must be protected. Keep the executor’s policy stateless; store conversation history, secrets, artifacts, and snapshots in the host-side harness; run shell/filesystem actions in an isolated sandbox. If the agent edits its own executor, let a guardian rebuild it for one step and automatically roll back on failure. Keep secrets out of the tool-visible container and inject them only into the model call.

  • Gate capabilities by workflow state instead of dumping every tool into context. In Flue 2, model the agent as a TypeScript/JavaScript function that re-renders before each model call. Use lifecycle/state hooks to add useTool() or useSubagent() only when the task warrants it; the concrete pattern in the launch discussion is verifying a support user before attaching an account-management tool.

  • Budget both tokenizer and context. Compare actual token counts and successful outcomes on your own corpus, not just advertised dollars per million: in one small mixed-text test, GPT-5.6 Sol used 766 tokens versus an estimated 1,170 for Claude Opus 5—about 34.5% fewer—and the recommendation is to measure price per successful outcome yourself. For local high-reasoning models, set the context length deliberately: Simon Willison’s Qwen 3.8 27B “extra high” run hit the default context limit, then succeeded after he increased it.

📡 WHAT SHIPPED

  • Flue 2 reached its first stable release. The React-style Agent Hooks API ships 16 built-in hooks—including useSkill(), useTool(), and useSubagent()—plus custom hooks, and is built on the minimal open-source Pi harness.

  • Multi-agents v2 added cross-model delegation. Builder @pvncher says models can now delegate to any supported model, including Luna, after reliability work; @thsottiaux frames the intended pattern as Sol managing a fleet of Luna agents. That is a useful routing primitive, but the posts provide no quality benchmark.

  • DHH’s plan-driven code-model comparison widened. DeepSeek Pro V4 Max reportedly completed the TerminalTextEffects Rust-rewrite challenge in 2h30m for $23, versus roughly $550 for Fable in 45 minutes and $55 for Grok 4.6 in 1.5 hours; DeepSeek V4 Flash and GPT Luna failed. Every implementation used the plan Fable wrote, so this is evidence about execution cost and plan-following—not independent project planning.

  • Exo has a real production signal, not just an architecture pitch. Krentsel says the harness and agents built on it are running in production at Braintrust; the project offers a one-line install, Discord/IRC/WhatsApp adapters, and Discord voice mode, though the latter is still a pipeline cascade rather than an interactive model. Study the EXO repository.

  • Antigravity’s Gemini 3.7 Flash integration targets cross-platform UI generation. Antigravity says the model can build complete native authentication screens across SwiftUI, React Native, Jetpack Compose, and Flutter; the update is available by download or upgrade. Treat this as a vendor demo claim—no benchmark is supplied in the announcement.

🎬 GO DEEPER

  • Exo cost-aware self-optimization segment — The useful implementation detail is per-message cost logging, thread-scoped context, and the reward-hacking caveat that makes evals mandatory.
  • Flue 2 launch post — Study the Agent Hooks model and the “no agent without a harness” thesis; the design is a practical counterexample to file-based routing and static tool configuration.

  • ttfx plan — Reuse the fixed plan as a controlled artifact when comparing models; it keeps planning quality separate from execution speed, cost, and reliability.

Editorial take: Models are becoming replaceable components; the durable edge is a harness that can change its policy without losing state, leaking secrets, or gaming its own objective.

Want personalized briefs on the topics you care about?

Create your own agent and get daily or weekly cited briefs on the topics you care about, shaped by the people, newsletters, podcasts, blogs, and channels you choose.