October 15, 2026
Timing and screenshot controls. Trade speed for stability per environment. See Configuration and Create an environment.
settle_ssets the seconds the agent waits after each action, from0to10. Browsers default to1.0, desktops to0.5.screenshot_max_widthcaps a desktop’s screenshot width, up to1920pixels.nullkeeps the host default. Screenshots are only shrunk, never enlarged.- Desktops wait 0.5 s after each action on every host (previously 0.1 s on your machine, 1.0 s in the cloud).
delete_after_min keeps its data for the retention period in your privacy settings. A value still deletes it sooner, and null adds no expiry beyond that period. Existing sessions keep their policy. See Create a session.October 15, 2026
October 9, 2026
Self-hosted Holo4 in local mode.
Inference.self_hosted(url, model="holo4-35b-a3b") or model="holo4-27b" runs the Holo4 harness against your own server. The harness follows the model you name. See Local mode.October 8, 2026
Local mode on Linux and Windows ARM64. The local runtime now ships for Linux x64 and Windows ARM64, next to macOS on Apple silicon and Windows x64. See Local mode.Local desktop safety.
- Double-Esc cancels the in-flight local desktop session on Windows and Linux, as on macOS.
- One process drives a desktop at a time: a second one fails with
DesktopBusyError.
October 7, 2026
Local mode (Python).
Client.local() runs the agent on your own machine, with the cloud’s sessions API and H’s hosted models or your own model server. See Local mode.Filter H’s agents. List agents takes reserved: true returns only H’s h/ agents, false only your organization’s.September 23, 2026
Holo4 for every agent.
holo4-27bandholo4-35b-a3bare available to all organizations as themodelof any agent or subagent.- New agents that leave
modelunset run onholo4-27b. - Holo4 honors every
reasoning_effortlevel and defaults tomedium.
hai-agents 1.2.0 (Python and TypeScript) ships with this release.September 22, 2026
Out-of-credit failures.
- A session whose organization has no plan usage or credit left ends
failedwitherror_code: insufficient_credit(previously reported asinternal). - Message: “The organization has no credit left to pay for the session’s model calls.”
- Top up credit or wait for the plan’s allowance to renew, then retry. See Error codes.
September 15, 2026
Session files. List, read, or write files on a cloud browser’s machine while a session runs.
- Base64 bodies, capped at 8 MiB, confined to
~/Downloads. - Addressed by the browser session id, published on the events stream as
RunnerSessionEvent. - Also exposed as
list_files/read_file/write_fileon the MCP server.
lazy: true on a Browser environment starts the cloud browser on the agent’s first browser action, not at session start. The first turn no longer waits for a boot, and an unused browser never starts. See Configuration.File transfer events. Every file the agent moves in or out of its browser is reported as a FileTransferEvent with direction (download or upload), path, and size_bytes. See Event types.Bounded tool results. Oversized tool output is cut to a 16 KiB head/tail preview before it reaches the model and the events stream. tool_result events carry truncated, plus output_artifact_path when a code sandbox holds the full text. See Agent activity.Session activity timestamp. List summaries carry last_activity_at, when the session’s latest event was ingested, to spot which live sessions are moving.July 16, 2026
Session retention controls.
delete_after_min deletes a finished session after a delay, and delete_screenshot_after_min expires its screenshots sooner. Both default to 30 days, and null keeps data indefinitely. See Create a session.Faster local desktop. Screenshots are downscaled and recompressed on your machine before upload, cutting per-step latency on high-resolution displays. Tune with --max-width, --image-format, and --quality on hai local desktop. See Local control.Sturdier local control (Python SDK and CLI).hai doctordiagnoses login, platform access, and local-control prerequisites, with fix-it hints.hai local stop(or double-Esc during a desktop turn) cancels the in-flight local session. Sessions auto-cancel when your process exits, and auto-started ones get defaultmax_steps/max_time_sbudgets.- On macOS, missing Accessibility or Screen Recording permissions fail fast at startup.
July 9, 2026
Local control. Set an environment’s
host to user_device and run a session from the Python SDK: the agent drives the browser or desktop on your own machine. It launches Chrome and connects your machine to H automatically. See Local control.Persistent browser profiles. See Persisting state back.persist_browser_profile: truewithbrowser_profile_idwrites the session’s final browser state (cookies, storage) back into the profile, so each run refreshes it for the next.- An exclusive write lock allows one persisting session per profile. Concurrent read-only use is unaffected.
- When the lock is held, a new persist session starts read-only instead of failing.
use_default_browser_profile: trueloads your default profile (auto-created empty on first use) and saves the final state back when the session ends (best-effort: concurrent sessions run read-only).- Promote a curated profile with
PUT /browser-profiles/{profile_id}/default. - Profiles report
is_default. The get-default and unset-default endpoints complete the set.
July 6, 2026
Scheduled sessions. Cron schedules start a session on each fire: five-field expressions in an IANA timezone, with pause/resume, manual trigger, and a run history showing whether each fire created a session or was skipped. See Schedules.Managed proxies. See Proxy.
- Browser environments can egress through an H-provisioned proxy:
network.managed_proxywith apool(residentialordatacenter), an optionalcountry, andstickyto keep one exit IP per session. - The platform resolves the provider and credentials server-side, so you never handle them.
- Mutually exclusive with
network.proxy_url.
last_delivery_status, last_delivery_error, last_delivery_at, last_success_at, and consecutive_failures. Poll retrieve to monitor an endpoint before it gets disabled. See Webhooks.July 3, 2026
Queue sessions instead of 429. Over-quota creates are accepted as
queued and start automatically, oldest first, as slots free up. Queued sessions fire webhooks on every transition and can be cancelled. queue: false on create keeps the old 429. See Queued sessions.Granular webhook events, retries, ping, secret rotation. See Webhooks.- Subscribe to specific types like
session.completedorsession.awaiting_tool_resultsinstead of thesession.status_updatedfirehose (event catalog). - Failed deliveries retry with backoff, and the platform disables endpoints that keep failing.
- Ping an endpoint or rotate its secret without downtime.
error_code (environment_error, no_answer, answer_validation, timeout, internal) next to the human-readable error, and every answer reports the agent’s self-assessed outcome (success, partial, infeasible, blocked). Build retry logic on codes, not strings. See Session failures.July 1, 2026
Browser
headless option. Browser environments accept headless: true to run without a visible window (default false). See Configuration.Registry packages skipped this version. Its changes shipped in the 1.0.4 packages.July 1, 2026
Browse the
h/ catalog without an API key. Listing agents, skills, and environments no longer needs authentication for the reserved h/ catalog. Authenticated calls also return your organization’s entries.CLI agent picker. hai run without --agent lists the live agent catalog and prompts for a choice, instead of assuming a default agent.June 29, 2026
Nested Browser
mode. A Browser’s mode is an object keyed by type, so viewport and text settings live with their mode. The old flat shape ("mode": "visual" with sibling width, height, page_chars) still parses. See Modes.visual(default):{"type": "visual", "width": 1200, "height": 1200, "markdown": false}.markdown: trueadds the page’s text to each screenshot (replaces the oldmultimodalmode).text:{"type": "text", "chunk_size": 20000}.chunk_sizereplaces the old top-levelpage_chars.