Agent-First HTTP Blog
Updates, deep-dives, and release notes for Agent-First HTTP.
Agent-First HTTP v0.13.0: The Jar Believed the Sender
A profile's cookie jar holds the logged-in state of every site that profile visits, and it took each response's Domain attribute at its word — so a page anywhere could write, and by RFC identity replace, the session cookie of a site it had nothing to do with. That is fixed, along with Max-Age, three errors that quoted the credential they were given, and a takeover panel you can now hand to another device.
Agent-First HTTP v0.12.0: Two Ceremonies Before the Command
Reaching a local host cost two steps before the actual command: read the token out of the container by hand, then push it through the shell as an environment variable. This release makes discovery answer for every command, gives --token-secret a typed source grammar, and turns the takeover panel into a window whose closing is the signal.
Agent-First HTTP v0.11.0: The Bugs Headless Cannot Have
Two defects lived on the takeover display and nowhere else: a permanent warning bar eating a strip of every session, and a native save dialog that swallowed downloads and blocked the display until a human clicked it. Both are invisible headless, and one of them the last release explicitly measured wrong. This release fixes both, drops the chrome-headless-shell backend, moves the images to Debian trixie, and adds a test that runs every CLI shape through its own handler.
Agent-First HTTP v0.10.0: The Browser Was Never the Variable
afhttp was launching Chromium with a flag that removed WebGL entirely, forcing a second flag that made the browser announce itself as automated, and shipping an image with two dozen font families. Then it measured which browser cleared bot walls better and blamed the browser. This release fixes all three, retracts the conclusion, and makes takeover backend-agnostic — plus a closed-world CLI registry and the response Content-Type on FetchResult.
Agent-First HTTP v0.9.0: Output You Can Trust
v0.9.0 reworks everything afhttp emits. `--help` is now a compact, progressively-scoped AFDATA result an agent reads one command at a time instead of a thousand-line dump. A new global `--output-to` routes results to stdout and errors to stderr by default, so a shell pipeline and a machine consumer finally agree. Credential-bearing URLs are scrubbed everywhere afhttp writes them — network.json, console origins, observation frames, storage snapshots, the host's recent-requests ring — with userinfo passwords and token-shaped query parameters masked before anything reaches disk. The human-takeover capability becomes `takeover_url_secret` behind a `handoff_secret=` parameter, redacted by default and revealed only by the one command that exists to hand it to a person. And every artifact moves to schema_version 2 with field names that say what they hold: `page_url`, `request_url`, `timestamp_epoch_ms`, `start_monotonic_ms`.
Agent-First HTTP v0.8.0: Every Build Says Exactly What It Is
v0.8.0 makes `afhttp --version` a structured event an agent can branch on — `name`, `display_name`, `version`, and a `build` field carrying the exact commit SHA the binary was built from, so a bug report or a capability check pins the precise tree, not just `0.8.0`. Under the hood it moves onto agent-first-data 0.22 and its protocol-v1 CLI contract, folds in the retired agent-first-config crate, and refreshes the stealth backends (chrome-for-testing 151, camoufox 152). The embedded skill moves to the standard `SKILL.md` layout and installs to Hermes alongside Codex, Claude Code, and opencode. And the README is now the single canonical guide — coverage map, host/driver roles, and worked examples end to end.
Agent-First HTTP v0.7.0: One Flag for the Hard Sites, Brave by Default
v0.7.0 collapses the hard-site dance into a single flag: `afhttp fetch <url> --takeover`. It auto-discovers the local host, gives each site its own isolated profile by default, and only asks a human to step in when a wall actually blocks it. `container install` is now takeover-ready out of the box on Brave — built-in ad/tracker blocking and the browser a human drives, no `--with` flags to remember. Secrets are redacted from agent-visible output by default, with an explicit `--reveal-token-secret` to opt in. The whole release is one thing: make afhttp simpler for an agent to use and harder to use wrong.
Agent-First HTTP v0.6.0: A 200 Isn't Proof
v0.6.0 is about not getting fooled. afhttp now recognizes a bot wall or security challenge on the cheap HTTP path — Cloudflare, Turnstile, generic access-denied — surfaces it as a `page_kind` plus warning, and auto-escalates to a real browser instead of handing the agent a 200 that isn't the page. The fetch trace gets honest too: per-stage timing, `current_stage`, `capture_reason`, `wait_mode`, so an agent can see where a fetch spent its time and why it stopped. Plus readiness tuning, a `takeover prepare` subcommand, a named display-provider abstraction, and a skill rewrite that tells the agent to reach for afhttp first.
Agent-First HTTP v0.5.0: When the Page Needs a Browser
v0.5.0 turns afhttp from an HTTP client into a full URL-acquisition tool. A single `afhttp fetch` covers the whole range — a plain HTTP request when that works, a real browser when it doesn't — and returns the page plus structured artifacts (rendered HTML, a DOM observation, a screenshot, network and console logs) an agent can branch on. It adds a browser-host / agent-driver split, a raw CDP escape hatch, deep network capture, an ops panel with optional real-display takeover for human login/captcha/2FA, and persistent profiles. The public contract converged in the process: flat `*_file` artifact paths, one profile per host, and no legacy aliases.
Agent-First HTTP v0.5.0: One Command to a Browser Host, in Any Runtime
v0.5.0 adds `afhttp container`: bring up the browser host in one command — Docker, Podman, or Apple Container — from a recipe embedded in the binary, no source tree required.
Agent-First HTTP v0.4.3: Release Hardening for Agent Tools
The v0.4.3 release moved afhttp into Agent-First Kit, tightened structured-output discipline, and hardened cross-platform packaging.
Agent-First HTTP v0.4: A Narrower Runtime with Complete Help
The v0.4 line removed the MCP server surface, generated CLI docs from clap definitions, and made --help complete for agents.
Agent-First HTTP v0.3.4: Output Formats Preserved Responses
The v0.3.4 update extended yaml/plain rendering to pipe mode while protecting server response bodies from formatter reinterpretation.
Agent-First HTTP v0.3.2: Requests Became Previewable
The v0.3.2 update added dry-run previews and actionable hints, so agents can inspect an HTTP request shape before it touches the network.
Agent-First HTTP v0.3: One Request, One JSON Line
The early Agent-First HTTP release line: a structured HTTP client for agents that turns requests, streaming bodies, and transport failures into stable JSON events.