You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added harness serve, a localhost web UI for creating and continuing sessions, with a responsive session sidebar, persistent multiline drafts, smart autoscroll, and live SSE updates. Requires socat; the browser asset is vendored with no build step.
Added web session titles and a title tool, live thinking, timestamps, collapsible thinking/tool calls/results, running-agent and queued-message status, a stop button, and retry controls for failed turns. User-selected expanded/collapsed state survives transcript updates.
Added messages during active web turns: new input joins the live conversation or queues for the next turn, with per-session serialization and collision-safe message sequencing.
Added a Tailscale plugin with harness tsnet commands for a dedicated userspace tailnet node, browser login or auth-key setup, persistent configuration, and optional systemd user services namespaced by node name.
Added optional tool-call intent descriptions, persisted with tool results and used as readable transcript summaries. Flat JSON tool inputs/results render as YAML with multiline block scalars, shared by web and terminal output.
Added automatic continuation after an output-token limit, bounded by HARNESS_LENGTH_CONTINUATIONS (default 2), instead of returning a truncated answer as complete.
Changed
Replaced the edit_file input protocol with atomic anchored edits: {at,end,content} replaces a range and {after,content} inserts lines. A required tag from read_file detects stale snapshots; all anchors validate before writing, and successful edits return fresh anchors for changed regions. Existing callers must migrate from the previous type/pos operations.
Changed the bash tool to return structured JSON with separate stdout/stderr, exit status, elapsed time, timeout, and whether it timed out.
Raised the default subagent timeout from 600 to 18000 seconds and added a per-call timeout override. Dispatch timeout wrappers allow tools time to report their own timeout results.
Raised default provider output limits to 64000 tokens for Anthropic, 16384 for OpenAI-compatible providers, and 131072 for ChatGPT. Updated z.ai to glm-5.3 with a 131072-token output limit.
Raised the provider HTTP wall-clock default to 5400 seconds, configurable via HARNESS_CURL_MAX_TIME.
Improved message assembly with JSONL accumulation and session-stat rendering with a single pass. Web updates send only changed message elements, with full resynchronization at turn boundaries.
Fixed
Fixed failed agent loops and interrupted provider streams reporting success; failures now propagate to CLI callers and subagents. Empty Anthropic streamed responses retry once before failing explicitly.
Fixed oversized Anthropic content/tool blocks exceeding shell argument limits and preserved thinking fences containing embedded backticks across message save/assembly.
Hardened streaming tool dispatch against corrupt FIFO input and partial result files: artifacts publish atomically, and invalid cached results fall back to canonical execution.
Fixed bash timeouts leaving command descendants alive on systems with setsid, orphaned watchdog timers after interrupted turns, tmux subagent panes surviving caller termination, and stream commands leaving their agent loop running after exit.
Fixed edits losing symlinks, cross-filesystem atomic replacement failures, stale writes arriving during edit preparation, and insertion after a line without a trailing newline.
Corrected input/cache token accounting and preserved concurrent user messages during assembly and length continuation.
Hardened web HTTP handling with validated request lengths, byte-accurate response framing, no-store caching, gzip negotiation, and origin/host checks with explicit proxy allowlists.
Fixed web SSE handling of carriage returns, partial records, truncated/regrown streams, reconnects, and turn boundaries; foreground-aware watchdogs recover stale connections without repeatedly reloading hidden tabs.
Removed
Removed HARNESS_MAX_TURNS and the core loop's iteration cap; hooks determine when the loop ends.