Skip to content

Latest commit

 

History

History
873 lines (844 loc) · 113 KB

File metadata and controls

873 lines (844 loc) · 113 KB

Changelog

All notable user-facing changes to omnigent are documented here. This file is generated at release time from each PR's ## Changelog section, tagged by the PR's Type of change (e.g. [UI]); the concise, curated highlights live on the website under /releases.

[v0.10.0] — 2026-08-19

  • [Bug fix / Test/CI] Host daemons now honor standard proxy environment variables without forwarding (#1029)
  • [UI / Feature] Route host- and session-scoped server requests to the replica holding the host's tunnel, and signal wrong_replica (HTTP 400 / WS 4400) so clients re-address on a miss. (#2037)
  • [Bug fix] Keep serve-mcp responsive to pings and additional requests during slow tool calls. (#2813)
  • [UI / Feature / Docs / Test/CI] White-label the web UI from server config with custom names, headings, safe logo assets, favicon, and optional Omnigent attribution. (#2857)
  • [Bug fix] A transient server hiccup no longer pins a session to the wrong working directory for the rest of the conversation. (#3017)
  • [Bug fix] Claude SDK agents now discover large MCP tool definitions on demand instead of loading every schema up front. (#3134)
  • [Bug fix / Docs] Sub-agents no longer inherit their parent's bundle directory (skills, local tools); resolvable children use their own, while unresolvable children never fall back to the parent's (#3567)
  • [UI / Bug fix] Native-harness sessions no longer leave a stale duplicate of your message (or of the assistant's reply) pinned to the bottom of the web transcript. (#3595)
  • [Feature] GitHub policy blocks tag pushes (--tags / --follow-tags / refs/tags/ refspecs) by default; opt out with deny_tag_push: false. (#3620)
  • [Bug fix] Server URLs and log paths in omni host status are now proper clickable links instead of text the terminal has to guess at (#3862)
  • [UI / Bug fix / Feature] agy sessions now mirror tool calls and sub-agents into the web UI, and no longer duplicate or truncate replies (#3890)
  • [Bug fix] force_sandbox (and any declared os_env.sandbox) now actually applies to a Claude Code native session's file/shell tools, not just the terminal process (#3910)
  • [Bug fix] Native sessions no longer fail with "terminal failed to start" when the host daemon was launched from a directory that has since been deleted (#3974)
  • [UI / Feature] The server can offer several sandbox providers at once (sandbox.providers), and the new-session picker lists one option per provider (#4006)
  • [Bug fix / Feature / Chore] Switching between conversations is instant — background conversations stay connected, so returning to one shows messages that arrived while you were away (#4113)
  • [Bug fix] omnigent pi now uses each model's real context window and output limit, instead of compacting early and truncating long replies on high-context models. (#4178)
  • [Feature] Route a host's tunnel, its runners, and its session traffic to one replica so multi-replica deployments keep host-scoped requests sticky. (#4185)
  • [Bug fix] A custom agent that declares its own provider auth now launches on codex-native instead of stalling on the Codex sign-in screen. (#4208)
  • [Bug fix] omnigent server --host 0.0.0.0 with OMNIGENT_LOCAL_SINGLE_USER=1 no longer 401s every request and 403s the host tunnel; the single-user marker is honored on network-exposed binds, with a warning that the server serves unauthenticated requests (#4224)
  • [UI / Bug fix] New chats in a project with a default base branch now fork a fresh branch off that default instead of reopening your last-used worktree (#4229)
  • [UI] New-chat landing header uses tighter Otto sizing and responsive headline scale (#4233)
  • [Bug fix] Changing effort or model mid-conversation on a Claude Code session no longer risks wedging the terminal or silently keeping the old setting. (#4250)
  • [Bug fix] omnigent chat <remote-url> can now start a new conversation with an agent registered on the remote server (#4260)
  • [UI / Bug fix] Collapsed "Worked for …" rows in a chat transcript now sit at an even spacing and draw their full-width divider (#4284)
  • [UI / Bug fix] Voice dictation now inserts text at your cursor instead of appending it to the end of the composer (#4290)
  • [UI / Feature] The file panel can now browse anywhere the session can reach, not just the folder it started in (#4306)
  • [UI / Bug fix] Navigating to another session while a new one is still being created no longer yanks you into the new session when it finishes (#4307)
  • [UI / Bug fix] New polly and debby sessions now show the same "Starting up…" spinner as claude-code, instead of a "Connecting…" row under the composer (#4312)
  • [Bug fix] Duplicate-detection comments no longer ask you to close your issue when the matching issue is already closed — an already-fixed match now asks whether you're on a build with the fix, and treats a still-reproducing report as a regression. (#4313)
  • [Bug fix] Kimi and Hermes sessions launch again — their version checks compared against the wrong version series and rejected every current CLI. (#4314)
  • [UI / Feature] Organizations can preconfigure Omnigent server URLs through Android managed configuration, and they show up ready to tap in the app's server list. (#4315)
  • [Feature] omnigent host --background starts the local server and registers this machine as a host without tying up a terminal. (#4317)
  • [UI / Breaking] Reverts the shared-session approval-authority and message-attribution features (#2150 stack); session approvals are again available to any shared editor. (#4318)
  • [UI] Administrators can preset the iOS app's server URLs with a managed app configuration, so managed users pick their organization's server instead of typing it (#4319)
  • [Bug fix] Fixed a bug where an archived session (or an archived sub-agent) could be gated as if it had spent nothing, letting a tool call proceed over its actual budget. (#4320)
  • [Feature] omnigent start starts the local server and registers this machine as a host — the on switch to go with omnigent stop. (#4321)
  • [Bug fix / Test/CI] Fix omnidev restart loop on Linux caused by non-mutating file access events (#4330)
  • [Feature / Docs] Issue triage now explains its impact assessment and priority in one bot comment instead of adding severity labels. (#4334)
  • [UI / Bug fix] Opening the left sidebar no longer squeezes the chat below its minimum width — the browser/workspace panel yields instead and restores its width when the sidebar collapses. (#4337)
  • [Bug fix] Pi sessions on a Databricks workspace no longer hang when the workspace model list is unavailable — non-Claude models are routed by family, and a model that truly can't be served now says so instead of never replying (#4339)
  • [Chore] Files in the viewer load faster — workspace-file reads are now gzipped, cutting a 1 MB text file from ~2.3 s to ~1.3 s (#4341)
  • [Bug fix / Chore] A claude-native session no longer shows "Working…" forever when Claude exits (#4344)
  • [UI] The sidebar "Needs response" badge now uses the brand accent color (pink by default), matching the unread indicator. (#4346)
  • [UI] Refreshed modal styling — larger rounded corners, softer drop shadow, and roomier padding (#4347)
  • [Bug fix] Pi sessions on a proxy that exposes both Anthropic and OpenAI surfaces now send each model to the surface its family speaks, instead of routing everything through Anthropic and hanging (#4348)
  • [Bug fix] Session snapshots no longer fail when a session contains a malformed legacy agent id. (#4350)
  • [Bug fix] A session whose message the runner refuses now reports the failure and its reason instead of appearing to finish successfully. (#4354)
  • [UI / Feature] Hover the collapsed sidebar toggle to peek the conversation list without pinning it open. (#4355)
  • [Bug fix] Generic-ACP / Goose / Qwen turns that fail now report the exception type instead of a blank "inner executor error: " with no detail. (#4362)
  • [UI / Bug fix] Messages sent from the chat UI no longer stop reaching the agent after a dropped network request (#4366)
  • [UI / Chore] The Files panel is now split into separate Files (folder tree) and Changes (changed files) tabs (#4367)
  • [UI / Feature] Chat messages now show their timestamp beside the Copy/Fork actions. (#4372)
  • [Bug fix] A conversation link copied from your browser now works wherever a server URL is expected, instead of failing later with an opaque "Method Not Allowed" crash (#4374)
  • [UI / Bug fix / Test/CI] Clicking a sidebar session that needs a response no longer runs its title under the "Needs response" tag, and the Inbox count badge now matches the sidebar's pink accent (#4375)
  • [UI / Bug fix] Maximized workspace panel no longer shows chat content through a transparent background in dark mode. (#4376)
  • [Bug fix] Agents now inherit your ssh-agent, so git-over-SSH and SSH-cert-authenticated tooling work in agent shells and terminals (#4377)
  • [Bug fix] The sidebar remembers your session filter across reloads instead of resetting to "All sessions" (#4381)
  • [Feature / Docs / Test/CI] Blaxel is now available as a sandbox provider for CLI and managed-host deployments. (#4383)
  • [UI] The Chat/Terminal switcher is now a segmented toggle — both views are visible at a glance and switching takes one click (#4385)
  • [Bug fix / Feature] omnigent run --server local runs against a local server, overriding any configured server default — and the no-AGENT omnigent run --server "" no longer fails with Agent path not found: https: (#4387)
  • [UI / Bug fix] Terminal-first sessions return to chat automatically when the runner stops or disconnects, instead of stranding on an empty "No terminals available" terminal view (#4388)
  • [Bug fix] The build-omnigent skill is available again in native omnigent claude and omnigent codex sessions (#4391)
  • [Bug fix] A custom ACP agent can declare the environment variables it authenticates with via env_passthrough, and a stalled ACP handshake now reports which call timed out instead of failing with an empty message. (#4392)
  • [Bug fix / Feature] The Copilot harness now authenticates with your existing gh auth login session, and a GitHub Enterprise host can be set via omnigent setup (#4396)
  • [Bug fix] MCP server configs can now use ${VAR} placeholders in the url field, not just in headers — so a config can be committed to version control without hardcoding the endpoint. (#4398)
  • [Bug fix] kimi-native sub-agents honor executor.config.yolo: true (launching kimi --yolo) and antigravity-native sub-agents honor permission_mode: bypassPermissions, so server-spawned workers no longer stall on interactive approval prompts. (#4401)
  • [Bug fix] Resuming a claude-native session no longer drops a message sent right after the session starts. (#4403)
  • [Bug fix] A sub-agent session no longer logs a spurious "did not resolve in the parent spec" warning on every turn. (#4435)
  • [UI / Bug fix] Bulk-select sessions and move them to a project in one action via the new folder icon in the selection bar. (#4452)
  • [UI] Codex's bypass-approvals option now matches Claude's clean permission UX — no more red warning banners (#4467)
  • [Bug fix] Compaction snapshots no longer store raw image data, which cuts the size of newly written compacted conversation rows substantially. (#4470)
  • [UI / Bug fix] The new-session workspace picker now navigates to ~/… paths and shows a clear error when a typed path doesn't exist (#4480)
  • [UI / Feature] Harness launch failures now show a clear title, cause, and suggested fix instead of a raw error code and truncated log tail. (#4485)
  • [UI / Feature] Sub-agents are now auto-assigned readable structured names (e.g. researcher-1) and a task-derived display label in the Agents panel (#4489)
  • [UI] Restored the down chevrons on the new-session composer's chips and made every dropdown trigger show a pointer cursor (#4493)
  • [UI / Bug fix] Modal dialogs and the workspace "Open new" menu no longer render behind the embedded browser pane (#4500)
  • [Bug fix] Named sys_session_send no longer returns a spurious 404 on the second and later sub-agent sends from a bundled agent (#4501)
  • [Bug fix] Session search no longer hangs on "Searching…" — content search is now backed by a trigram index and bounded by a timeout. (#4502)
  • [Bug fix / Test/CI] Fixes an HTTP client resource leak when OpenAI Agents SDK executors shut down. (#4508)
  • [Bug fix / Test/CI] Honor OmnigentClient timeout for ordinary Python SDK HTTP requests. (#4509)
  • [Bug fix] Sessions ride out brief runner-tunnel drops (laptop sleep-wake, ingress recycles) without flashing Failed or truncating the streaming reply. (#4516)
  • [Bug fix] omnigent no longer crashes on startup when your shell sets a SOCKS proxy (e.g. ALL_PROXY=socks5://…) and the httpx[socks] extra isn't installed (#4517)
  • [UI / Bug fix] Attaching an unsupported file in a new chat now tells you why up front and keeps your message instead of losing it (#4519)
  • [Bug fix] omni now works on machines with an HTTP proxy configured, and reports an unreachable server as a clear error instead of a crash. (#4520)
  • [Bug fix] Sessions that outlive their 60-minute runner bearer no longer permanently lose runner→server auth when the token re-mint is rejected — the runner now falls back to the machine's SDK/OIDC credential. (#4521)
  • [Bug fix] Harness logs now go to a file under ~/.omnigent/logs/harness/ (or the runner's log), and a failing ACP turn quotes the agent's own error output instead of dropping it. (#4523)
  • [Bug fix] An openai-agents agent with no pinned model no longer fails with a confusing "install databricks-sdk" error when only OpenAI credentials are missing (#4526)
  • [Bug fix] Claude native sessions now report per-turn token usage (gen_ai.usage.input_tokens / output_tokens) to MLflow and other OpenTelemetry backends. (#4530)
  • [UI / Bug fix / Feature] Move a running session to another machine from the host badge in the composer. (#4531)
  • [Bug fix] Upgrading omnigent in place no longer breaks harness launches on already-running runners (#4539)
  • [Chore] The session-search index migration builds its Postgres indexes concurrently, so upgrades no longer block writes while the indexes build. (#4541)
  • [Feature] The Android app now opens Databricks workspaces on their /omnigent app instead of the workspace landing page. (#4543)
  • [Bug fix] omnigent host pointed at a local server that has exited now stops after ~5 minutes with a clear error instead of reconnecting forever. (#4544)
  • [Bug fix] Runners no longer crash-loop at session start when signal-handler registration fails; they log one warning and keep working. (#4545)
  • [Bug fix] Session search now returns results instead of timing out on large workspaces. (#4546)
  • [UI / Bug fix] Modal buttons like Stop session and Clone now show a spinner while the action is running, instead of just greying out. (#4548)
  • [UI / Bug fix] The desktop server picker moved from the window title bar to the bottom of the sidebar, fixing an overlap with the chat header on narrow windows — and Windows and Linux desktop now have it too (#4551)
  • [UI] The embedded terminal connects in the background and stays connected across Chat/Terminal flips and recent-session switches, so opening it is near-instant instead of reconnecting every time. (#4552)
  • [Bug fix] The Android app no longer shows the Databricks workspace navigation bar around Omnigent when connecting to a workspace-hosted server. (#4555)
  • [UI / Feature] On the macOS desktop app, the sidebar header now shares the title-bar row with the window controls — the empty strip above the sidebar and the redundant wordmark row are gone, and the Collapse/Search/Settings buttons sit beside the traffic lights. (#4557)
  • [Bug fix] Codex sessions on a ChatGPT-account or API-key login launch again, instead of failing with "model is not supported when using Codex with a ChatGPT account" (#4558)
  • [UI] Connecting the iOS app to a Databricks workspace now opens Omnigent directly and hides the workspace navigation bar (#4559)
  • [Bug fix] kiro sessions no longer fail the first message with a connection error when the kiro TUI is slow to start (#4562)
  • [Bug fix] omnigent host now warns once and backs off when a server accepts connections but never responds, waits out (up to 120s) a slow-booting local server instead of stranding it — stopping it if it truly fails — recovers fast runner starts after a zygote crash, and no longer leaves empty log files behind. (#4563)
  • [Bug fix] Named sys_session_send no longer returns a spurious 404 on the second and later sub-agent sends from a bundled agent (#4564)
  • [UI / Bug fix] Deleting a session removes it from the sidebar immediately instead of waiting for the server to finish tearing it down (#4566)
  • [Bug fix] Session search no longer times out on large workspaces. (#4567)
  • [UI / Bug fix] Fixed iOS controls rendering under the status bar on Databricks workspace-hosted servers (#4568)
  • [UI / Feature] You can now leave a session someone shared with you — pick "Leave session" from its sidebar row menu to clear it from your sidebar without asking the owner (#4571)
  • [UI / Bug fix] The workspace Files panel now shows hidden files by default, and its eye icon shows whether they are visible rather than what clicking will do. (#4575)
  • [Bug fix] Switching a session's agent now updates the tools its native harness can call, instead of leaving the previous agent's tools in place (#4576)
  • [Bug fix] The native pane reaper no longer kills a terminal that is actively producing output when the harness status pipeline stalls; it now checks tmux's own activity clock before reaping. (#4577)
  • [Bug fix] A silently stalled claude-native transcript forwarder now self-recovers within five minutes and logs exactly where it stalled, instead of freezing mirroring and session status indefinitely. (#4578)
  • [Bug fix] A claude-native transcript forwarder that stops — cancelled, crashed, or returned — now always logs an attributed exit line instead of dying silently. (#4579)
  • [Bug fix] A stray hook event from another Claude session can no longer silently redirect a claude-native session's transcript mirroring; session identity now changes only via SessionStart announcements. (#4580)
  • [Bug fix] omni claude streaming, statusline, and typing during tool-running turns now respond at native speed: hook subprocesses skip the framework's eager import graph, and the blocking hook path runs as shell + a loopback curl relayed by the long-lived runner instead of spawning a Python interpreter per event. (#4582)
  • [UI / Bug fix / Feature] Fork a sub-agent to promote it into a top-level session of its own. (#4584)
  • [Bug fix] Upgrading omnigent in place no longer breaks runner launches on already-running hosts (#4587)
  • [UI / Bug fix] Native-harness sessions no longer briefly drop your in-flight message bubble when an interrupt marker is reconciled at the same time. (#4591)
  • [UI / Bug fix / Chore] Native assistant text now reconciles cleanly with committed transcript messages without duplicate streaming output. (#4593)
  • [Bug fix] The embedded browser pane no longer lingers over the welcome screen after switching or disconnecting from a server (#4595)
  • [Chore] Removed the "A new version of Omnigent is available" prompt and browser PWA install support; the desktop and mobile apps remain the installable clients. (#4617)
  • [Chore] OpenTelemetry exporters and automatic instrumentors are now installed through omnigent[tracing] instead of the default package. (#4621)
  • [Bug fix] Development builds no longer show an update reminder for the matching final release. (#4628)
  • [Bug fix] omni host no longer prints a zygote traceback — and keeps copy-on-write runner forking — when started from a directory that contains an omnigent checkout (#4631)
  • [UI / Bug fix] Clicking a file an agent mentions in its reply now opens it, including path:line citations and markdown links (#4644)
  • [UI / Bug fix] Fixed long unbroken text or inline code in chat messages overflowing or getting cut off at narrow window widths. (#4651)
  • [Bug fix] Fixed a duplicate assistant message that could appear after reconnecting to a Claude Code (native) session (#4656)
  • [Bug fix / Chore] Resuming or forking a Claude Code session containing screenshots no longer duplicates image payloads into metadata and inflates the request past the context limit. (#4659)
  • [UI / Bug fix] Archiving the current session now redirects to the home page instead of leaving you on the archived session (#4671)
  • [UI / Feature] Usage page shows session costs, daily spend timeline, and breakdowns by harness and model (#4673)
  • [Bug fix] Sessions whose workspace is an omnigent checkout no longer run a different omnigent than the one you installed (#4688)
  • [Bug fix] omnigent run --harness acp:<agent> now launches the ACP agent you asked for instead of the first one configured (#4689)
  • [UI / Bug fix] The desktop app now auto-selects this machine after "Run on this machine" (#4691)
  • [UI / Bug fix] The managed sandbox host option (and other capability-gated UI) now appears on its own after a slow /v1/info probe, instead of staying hidden until a page reload. (#4694)
  • [Chore] Runner-backed resource APIs now avoid redundant session reads, improving responsiveness under load. (#4695)
  • [Bug fix] ACP agents now report cached-read tokens, so token usage reflects what was actually billed (#4699)
  • [Bug fix] Built-in ACP agents like Grok Build now appear in omni setup instead of being invisible (#4700)
  • [Bug fix] omnigent run --harness acp:<slug> now works with remote servers by resolving the slug client-side and embedding the full agent config in the spec. ACP agent settings (session_id_mode, send_model, omnigent_mcp, env_passthrough) are now preserved through embedding. (#4702)
  • [Bug fix / Feature] /model now switches an ACP agent's model mid-conversation instead of being ignored, and keeps the chat history (#4703)
  • [Bug fix] A host name set in config.yaml is now kept when no host_id is present — the id is generated instead of overwriting your chosen name. (#4708)
  • [Bug fix] omnigent resume now lists only your own sessions, not ones shared with you (#4709)
  • [UI / Bug fix] The Inbox count badge now uses the same text and background colors as the selected session item in the sidebar (#4714)
  • [UI / Feature] Multi-session delete now shows a table of worktree branches you can pick to clean up (with a tri-state select-all header), instead of blocking branch cleanup behind single-session delete (#4715)
  • [Bug fix] OpenCode 1.18.x installs are now accepted; the version gate no longer rejects users who installed OpenCode via its official upstream route. (#4725)
  • [UI / Bug fix / Chore / Test/CI] Approval prompts now name the assistant that asked (Claude Code, Codex, Cursor, Antigravity, Kiro, Goose, Qwen Code, Hermes) instead of an internal policy id (#4735)
  • [UI / Bug fix] Opening the workspace folder browser no longer flashes an "Up one level" tooltip over the listing (#4742)
  • [Feature] Kubernetes sandbox runners now use Jobs with automatic restart on crash (up to 3 retries) and a liveness probe, replacing bare Pods that required manual intervention after a failure. (#4744)
  • [UI / Bug fix] The chat transcript now detects a silently dead live connection and reconnects on its own — worst case 45 s, instantly on tab refocus — instead of freezing until the page is reloaded. (#4750)
  • [Bug fix] Chat messages sent while the terminal's Claude composer is covered by the ctrl+r history search or a hand-opened /model picker now dismiss the overlay and deliver, instead of silently vanishing (#4751)
  • [Bug fix] Creating a session from the web UI is faster end-to-end: the chat page opens immediately and the terminal is ready sooner — including the first session after a host restart, which no longer pays a multi-second warmup. (#4752)
  • [UI / Bug fix] Answered question and plan cards stay outside the "Worked for" fold, read as settled, and survive a page reload (#4760)
  • [UI / Feature] Web terminals now attach directly over loopback when the runner is on the same machine as the browser, cutting keystroke echo from ~250 ms to under 10 ms against a remote server. (#4763)
  • [UI / Bug fix / Test/CI] The Sessions filter is now always visible, so session filtering is discoverable without hovering the sidebar header. (#4764)
  • [Feature] New OMNIGENT_REQUIRE_WRAPPER env var lets operators require the CLI be run through a wrapper (e.g. isaac omni) and refuse direct omni calls (#4766)
  • [UI / Bug fix / Chore / Test/CI] Chat output stays visible above a growing composer; bottom-following readers remain pinned while readers who scroll up—even just 50px—keep the same visible content. (#4767)
  • [Bug fix] omnidev --vite-port once again starts the frontend on the requested port. (#4770)
  • [Feature / Test/CI] macOS desktop app now ships an Intel (x64) build alongside Apple Silicon. (#4772)
  • [UI / Feature / Docs] Usage and web-driven harness setup can now be enabled per deployment with OMNIGENT_FEATURES. (#4775)
  • [UI / Bug fix / Feature] In-chat errors now provide expandable diagnostics and recovery-aware Retry, copy, and dismiss actions without replaying failed input, and cancelled retry requests no longer leave stale recovery results cached. (#4787)
  • [Feature / Docs] ArgoCD quick-start overlay for deploying Omnigent with the kubernetes sandbox provider (#4788)
  • [Bug fix] omnigent[antigravity] no longer crashes with a protobuf gencode/runtime version mismatch on startup. (#4795)
  • [UI / Bug fix] Server URLs in copyable connection and reconnect commands are now safely quoted. (#4817)
  • [Bug fix] Resumed Codex conversations now keep the authentication provider selected in Codex configuration. (#4818)
  • [Bug fix] omnidev omnigent commands now keep runtime state and configuration inside their development pod. (#4822)
  • [Bug fix] Native Windows: harness CLIs (codex, pi, claude-sdk, antigravity) no longer hang on spawn due to missing SYSTEMROOT/COMSPEC; Windows drive-letter workspace paths (C:\…) are now accepted; pre-release harness CLI versions (e.g. 0.146.0-alpha.9.2) no longer fail the version gate. (#4886)
  • [UI / Feature] Background tasks that keep running after a turn ends now show as a pill above the composer instead of a "Working…" spinner (#4893)
  • [UI / Bug fix] Maximizing the workspace panel in the desktop app no longer tucks its tab icons under the macOS window controls. (#4897)
  • [Feature] Configured ACP agents (e.g. Devin) and installed ACP CLI harnesses (e.g. Grok Build) now appear in the web New Chat picker, like the native harnesses (#4909)
  • [Bug fix] Managed codex, claude-sdk (Polly/Debby), and pi harnesses resolve their launch model from the workspace's Unity Catalog model services, so they no longer fail against a Databricks AI Gateway that has retired the legacy databricks-* model namespace (#4915)
  • [UI / Feature] Devin is now a built-in harness — set it up in omni setup, launch it with --harness devin or from the New Chat picker, no acp: config needed (#4920)
  • [Bug fix] omni setup and the New Chat picker no longer show a duplicate — or silently ignore — a built-in ACP harness you configured yourself under the same name; your own command wins. (#4927)
  • [UI] Chat error banners are now a compact centered pill with inline Retry, matching the design prototype (#4931)
  • [UI / Feature] The chat header now shows the conversation's name, its project folder, and the sub-agent path, and title bars are a consistent 48px. (#4940)

[v0.9.0] — 2026-08-11

  • [UI / Bug fix] Recent servers remain one-click connectable and now include a separate copy action. (#2555)
  • [Feature] New nimble_extract and nimble_research builtins: pull structured web data through a (#3117)
  • [Bug fix] Claude SDK sessions no longer inline base64 image/document tool results into replayed history, guarding against context overflow on resume (#3120)
  • [Bug fix] Session metadata now exposes the last persisted activity time so orchestrators can detect running sessions that have stopped advancing. (#3279)
  • [Feature / Docs] Agent YAML now supports sandbox.type: auto to explicitly select the platform-default sandbox. (#3339)
  • [Feature / Breaking] Managed runner Pods are now labelled with the agent they are running, so admission policies and Pod selectors can target a single agent's sandboxes. Breaking: session create and patch now reject client-supplied omnigent.sandbox.* labels, a namespace reserved for server-internal sandbox lifecycle state. (#3361)
  • [Bug fix] Conversation retrieval uses sqlite index. (#3451)
  • [Bug fix] The GitHub and working-directory policies now gate commands wrapped in sudo -u, env -i, command -p, time -p and exec -a — including bundled short options like sudo -nu root — instead of letting them through (#3559)
  • [Feature] GitHub policy blocks force-push (--force / -f / --force-with-lease) by default; opt out with deny_force_push: false. (#3570)
  • [Bug fix] omni server start works again as a deprecated alias for omni server --background, fixing "Start locally" on desktop clients older than v0.7.0. (#3578) (#3597)
  • [Bug fix] Codex sessions opened from the desktop no longer time out while waiting for a hidden project-trust prompt. (#3709)
  • [UI / Bug fix] Archiving a session no longer waits for its runner to stop — the row leaves the sidebar immediately while the server stops the session in the background (#3783)
  • [UI / Feature] Completed turns in the chat view fold their working steps behind a "Worked for Xs" row, so the final answer is where reading starts (#3786)
  • [UI / Bug fix] Forking a session in a project now files the clone into the same project, and it appears in that folder immediately (#3793)
  • [Bug fix] Project creation now works on Databricks Apps deployments — the entrypoint wires the project store so the Projects API is mounted. (#3866)
  • [Bug fix] Antigravity workers now wait for model initialization before starting a fresh conversation. (#3878)
  • [Bug fix] omnidev no longer fails to start when a global UV_PYTHON points at an unsupported interpreter (#3883)
  • [Chore] DELETE THIS WHOLE SECTION — internal runtime tuning, no user-facing change. (#3901)
  • [Feature] DELETE THIS WHOLE SECTION — internal runner infrastructure, no user-facing change. (#3921)
  • [Bug fix / Test/CI] The desktop app's version now tracks the release version automatically (previous releases shipped the desktop shell still reporting 0.6.0) (#4005)
  • [Feature] Database observability integrations can identify semantic FileStore and ConversationStore queries. (#4007)
  • [Bug fix] Long context compaction no longer fails with a 240s idle-watchdog timeout on near-full sessions (#4013)
  • [Bug fix] Managed-host wake now reports launch progress ("Starting host") instead of a frozen "Provisioning sandbox" band. (#4016)
  • [Bug fix / Feature] omnigent run --profile <name> authenticates a remote --server with a named Databricks profile (enables headless service-principal access to a deployed app) (#4017)
  • [UI] Text and borders now use the Zinc neutral palette. (#4019)
  • [UI / Chore] The sidebar and side panel now sit flush against the window edges, with the background gradient moved onto the sidebar. (#4020)
  • [UI] Tightened body and chat text to the design's 13/18 type scale. (#4021)
  • [Bug fix] Fixed a bug where a transient IP ACL block mid-session could permanently brick the runner's token factory, requiring a manual restart to recover. (#4024)
  • [Bug fix] omnigent host now survives a dropped VPN — a 401/403 on an already-connected host retries and auto-reconnects instead of exiting (#4025)
  • [UI / Bug fix] Error messages that mention environment variables like $LLM_API_KEY no longer render as garbled math (#4026)
  • [Bug fix] Native Codex and Claude provider credentials are kept out of child process arguments. (#4030)
  • omni host status is significantly faster when stale daemon records have accumulated. (#4031)
  • [Feature / Docs / Test/CI] New issues now receive duplicate guidance; high-confidence duplicates are labeled and linked, with automatic closure available behind a default-off repository variable. (#4037)
  • [UI / Bug fix] Switching between two terminal-view sessions no longer shows the previous session's stale terminal history (#4043)
  • [UI / Bug fix] The landing screen headline has a new look, and the sidebar is no longer transparent over the conversation on narrow screens. (#4052)
  • [UI / Bug fix / Feature] Sessions can now be filtered by All, My, Shared, or Archived from the Sessions heading, and the Projects menu offers both Expand all and Collapse all. (#4055)
  • [Feature / Chore / Test/CI] Database operations now expose stable semantic query names for tracing and logging. (#4059)
  • [Bug fix] Approving a plan from the web UI now works for Claude Code sessions, including "Yes, and use auto mode" (#4067)
  • [Bug fix] The "Starting MCP servers" line in Codex sessions now clears as soon as the agent starts working, instead of lingering for the whole first turn (#4071)
  • [Feature] Boxlite sandboxes support a configurable disk size via sandbox.boxlite.disk_size_gb (#4072)
  • [Bug fix] brew install omnigent works again, and installs prebuilt wheels instead of (#4080)
  • [Bug fix] Claude sessions routed through the Databricks AI gateway now send the x-databricks-use-coding-agent-mode header the gateway requires (#4082)
  • [Feature / Docs / Test/CI] Comment /reopen on a closed pull request to reopen it yourself (#4084)
  • [UI / Bug fix] A disconnected host now always shows its name with a red dot in the composer, and clicking it opens the reconnect instructions (#4090)
  • [UI / Bug fix / Test/CI] Reasoning indicators now stay stable during active turns instead of switching between thinking and elapsed-time labels. (#4091)
  • [Bug fix] Fix host tunnel disconnecting with "ping timeout" when a harness CLI probe hangs during the readiness refresh (#4092)
  • [UI / Bug fix] The composer no longer briefly shows the previous session's model when you switch between Codex and Claude Code sessions (#4093)
  • [UI / Bug fix] The "new session in project" composer now picks up a project's edited default settings immediately, without having to click away and back. (#4097)
  • [Bug fix] Pi and Pi-native no longer fail with a 404 when a model ID like `system.ai.claude-opus-5[1m]` is configured against the Databricks AI Gateway. (#4105)
  • [UI / Bug fix] [UI] Chat messages no longer crowd the conversation tick rail on narrow layouts (#4106)
  • [UI / Feature] The harness picker now leads with the fully supported harnesses, Claude Code and Codex, and promotes any harness you've launched before out of the "More" group. (#4107)
  • [UI / Feature] Adds an "Execution logs" debug column to the conversation page when `?debug=1` is in the URL, letting developers inspect raw session items for the main thread and any subagents. (#4109)
  • [UI / Feature] Adds a live SSE event viewer to the execution logs debug panel (?debug=1) — click the SSE tab to see raw stream events as they arrive from the server. (#4111)
  • [Feature] Issue rankings now use a deterministic, explainable severity and component scoring model. (#4117)
  • [Feature] Issue-priority rankings can now be generated as a paused, review-first Databricks job. (#4118)
  • [Feature] Issue prioritization can safely propose and apply severity, priority, and component labels without overwriting maintainer judgment. (#4119)
  • [Feature] Dashboards can query the latest issue-priority ranking through one stable Unity Catalog view. (#4120)
  • [UI / Bug fix] Inline code and other small text no longer render undersized in the web UI (#4122)
  • [UI] Assistant message actions now stay hidden until you hover the response (#4123)
  • [UI / Bug fix] Switching conversations shows a loading spinner again instead of painting a (#4124)
  • [UI / Bug fix] Shell tabs now persist per session — opening a shell, switching sessions, and coming back keeps the tab open (#4125)
  • [Feature] Add dev/resolve-agent: resolve a repro-agent reproduction by reviewing an (#4127)
  • [Bug fix] Claude Code sessions with a background task running no longer queue new messages — they start a fresh turn immediately. (#4132)
  • [UI] The composer's send button is now a rounded square with a full-size up arrow, and the home-page composer starts at a single row. (#4134)
  • [Bug fix] omnigent codex now keeps the terminal's session link and the exit --resume (#4138)
  • [UI] The harness selector in the composer is now a single split button — hovering either the harness name or the settings gear highlights the whole control. (#4142)
  • [Chore] N/A — internal repository organization only. (#4149)
  • [UI / Chore] Interface font size now scales captions, descriptions, and menu subtitles along with body text (#4150)
  • [Bug fix] Policy-evaluation failures now report the underlying cause instead of an opaque 502 page. (#4154)
  • [Bug fix] A managed sandbox whose host process crashes now restarts it in place, keeping (#4155)
  • [UI / Bug fix] Steering a native session mid-tool-use no longer shows a raw "[Request interrupted by user]" line and a blank bubble — the interruption renders as a muted marker and your attachments stay on your message. (#4160)
  • [UI / Bug fix] The chat composer no longer pushes the conversation around when you add newlines with Shift+Enter (#4161)
  • [UI / Bug fix] Unarchiving a session from Settings now opens it, instead of leaving you on the settings page. (#4171)
  • [UI / Bug fix] Scheduled /loop iterations in claude-native sessions now render as separate turns with their own "Worked for" folds that stay closed between ticks (#4174)
  • [Bug fix] Runner tunnel HTTP 401 errors now suggest stopping stale host instances with omnigent stop. (#4175)
  • [UI / Bug fix] [UI] New sessions open right away instead of waiting for the runner to start (#4183)
  • [UI / Bug fix] Conversation images load in parallel, stay cached between visits, and no longer (#4187)
  • [UI / Bug fix] The chat view no longer loses its working indicator mid-session on Claude Code sessions, and says when the agent is parked on a prompt. (#4195)
  • [UI / Bug fix] The sidebar's Pinned and Projects sections now stay put when you switch the (#4200)
  • [Bug fix] Archiving a session now also unpins it, so it won't reappear pinned when unarchived (#4202)
  • [UI / Bug fix] Scrolling back through a conversation no longer fights you when older messages load (#4204)
  • [UI / Feature] Projects can set a default base branch that pre-fills when starting a new worktree session (#4205)
  • [UI] Composer footers no longer show a shaded tray behind the status chips (#4215)
  • [Bug fix] omni host stop now tells you to retry with --force when the session-list pre-check times out (#4216)
  • [UI / Feature] Shared elevation shadows for composers, menus, cards, and tooltips (#4218)
  • [UI] Chat header icon controls are smaller (24px) and more evenly spaced (#4219)
  • [Feature / Docs] Issue prioritization can now grade maintainer issues and refresh rankings with short-lived GitHub App credentials. (#4221)
  • [UI] Sidebar uses tighter padding and gaps around the header, nav, and session list (#4222)
  • [Feature] Duplicate-detection comments now ask the reporter to close their own issue when (#4223)
  • [UI] New Chat composer footer selectors no longer show chevron icons (#4225)
  • [UI] Dropdowns and menus use one consistent popup style across the app (#4228)
  • [Bug fix] Fix a spurious "runner didn't come online in time" failure when starting a session in a large git workspace, by running git status off the runner's event loop. (#4259)
  • [Bug fix] Fixed a hermes-native session losing an assistant turn's tool call or prose when a mirror post failed partway through a message row (#4261)
  • [UI / Bug fix] Sending a message now works immediately while an agent's background tasks are still running, instead of queueing behind a "Steer" button, and the sidebar no longer shows a session as busy for background work alone (#4266)
  • [UI / Bug fix] Claude Code / Codex / OpenCode sub-agent sessions now show the product name instead of the (#4267)
  • [UI / Bug fix] Renaming a session in the sidebar no longer flashes the previous name as the edit field closes (#4277)
  • [UI] New-session and chat surfaces now use consistent navigation, composer, and interaction styling. (#4288)
  • [UI / Bug fix] Opening a session no longer keeps loading older messages and shifting the transcript while you read (#4291)
  • [Bug fix] A runner disconnecting no longer marks finished sub-agents as failed — the Agents tab keeps their "Done" state and shows an interrupted session as a recoverable "Disconnected" instead of a red "Failed". (#4293)
  • [Bug fix] Runner errors that tell you to check the logs now name the exact log file to open (#4295)
  • [Bug fix] Signing in to Databricks-hosted deployments on Android now happens in the app (#4296)
  • [UI / Breaking] Reverted the shared-session approval-authority and message-attribution features. Breaking: session approvals are once again available to any shared editor, not just the session owner. (#4318)
  • [UI] The Chat/Terminal switcher is now a segmented toggle — both views are visible at a glance and switching takes one click. (#4385)
  • [Bug fix] claude-native routing now counts managed-settings AI Gateway backing, so gateway-backed claude-native sessions route correctly. (#4491)
  • [Bug fix] MCP tool search stays enabled for gateway-backed native sessions. (#4533)
  • [Bug fix] The runner preserves CLAUDE_CODE_USE_GATEWAY / ENABLE_TOOL_SEARCH, keeping tool search working for gateway-backed Claude sessions. (#4553)
  • [Bug fix] Codex sessions on a ChatGPT-account or API-key login launch again, instead of failing with "model is not supported when using Codex with a ChatGPT account". (#4558)

[v0.8.2] — 2026-08-04

  • [Bug fix] Claude sessions routed through the Databricks AI gateway now send the x-databricks-use-coding-agent-mode header the gateway requires (#4086)

[v0.8.1] — 2026-08-03

  • [UI] Reverted the v0.8.0 "Chat/Terminal switcher in the header" change; the switcher returns to its previous location. (#3931)

[v0.8.0] — 2026-08-03

  • [Bug fix] Cursor YOLO sessions no longer stall piloted parents on mirrored tool-approval cards when Cursor leaves a lingering pending gate. (#2338)
  • [Feature] codex-native startup-timeout errors now name the resolved provider/model routing (and the login-fallback case) instead of pointing at the runner log (#2843)
  • [UI / Bug fix / Feature] Pi can now create task plans and display them in the shared Tasks panel without requiring an optional Pi extension. (#2884)
  • [Feature] detect_loop builtin policy catches agents stuck retrying the same tool call and prompts for approval to break the loop (#3158)
  • [Feature] New detect_thrashing builtin policy detects when an agent is stuck in a failure loop and alerts the user to intervene. (#3160)
  • [Bug fix] kimi sub-agents now report completion to a parent orchestrator instead of leaving the fan-out waiting forever. (#3166)
  • [UI / Bug fix / Chore / Test/CI] Conversations show their newest messages immediately, pin the latest turn below the header, and load older context smoothly near the top. (#3228)
  • [Docs / Chore / Breaking] The run_<x>_native launchers accept a uniform extra_args; the per-harness <x>_args keyword is deprecated and will be removed in 0.9.0. (#3244)
  • [Bug fix] Intelligent routing no longer drops the first message on a new claude-native session (#3257)
  • [Feature] linux_bwrap sandboxes and their egress rules now run on the Databricks Lakebox backend. (#3258)
  • [Feature] sandbox.kubernetes.secret_mounts projects a Secret as a rotation-friendly read-only file volume on the runner (#3280)
  • [Bug fix] Session cost panel now shows a per-model breakdown for sub-agents/second heads (e.g. Debby's GPT head, Polly's codex sub-agents) running on an unpinned codex model, instead of folding their usage into the total with no per-model entry. (#3287)
  • [Bug fix] Fix antigravity-native readiness detection for agy CLI installs on macOS where OAuth credentials live in Keychain (#3289)
  • [Bug fix] Fixed a race condition where deleting two admins at nearly the same time could leave a deployment with zero admins and no way to recover through the API. (#3304)
  • [Docs / Chore] Resuming a goose / hermes / antigravity / qwen / opencode native session now attaches to the live TUI instead of double-posting each message through the Omnigent REPL. (#3314)
  • [UI / Feature] Workspace rail now shows files and shells as editor-style tabs, opens shells in-rail instead of replacing the chat, adds a full-screen toggle, and adds a "+" menu for creating shells with a remembered type picker (#3333)
  • [UI / Bug fix / Feature / Test/CI] omnigent setup can import OpenClaw/acpx coding agents from an auto-detected or user-selected config into the generic ACP harness picker, and omnigent run --from-openclaw <agent> can try one without saving it. (#3354)
  • [Feature] Polly can launch supported Claude and Codex implementation children in goal mode. (#3362)
  • [Bug fix] Claude sessions started with a model alias (e.g. Opus) no longer fail on gateway setups that can't pin the alias — the launch resolves to a routable model id. (#3378)
  • [Feature] omni setup now supports signing in to Antigravity with Google OAuth through agy, alongside Gemini API keys. (#3391)
  • [UI / Feature] Archived sessions in Settings are now grouped by date (Today, Yesterday, Previous 7/30 days, month/year) for easier browsing. (#3394)
  • [UI / Bug fix] Subagent graph view nodes are now clickable and navigate to the selected session. (#3395)
  • [Bug fix] Dedupe codex-native's per-session plugin cache to reclaim disk (#3401)
  • [Bug fix / Test/CI] Shared-session sub-agent completion notices are attributed to the collaborator who dispatched the sub-agent. (#3409)
  • [Bug fix / Test/CI] N/A — test-only change. (#3410)
  • [Bug fix / Test/CI] Codex sessions keep their selected permission mode when resumed on a replacement host. (#3411)
  • [Bug fix] Only session owners can approve tools that run with owner credentials in shared sessions. (#3416)
  • [Bug fix] Fixed a bug where a malformed or unrecognized tool-call payload on certain harnesses (notably OpenCode) could silently bypass a configured tool-call policy instead of being blocked or asked. (#3418)
  • [Bug fix / Feature / Docs / Test/CI] ACP agents can opt out of Omnigent’s MCP relay with omnigent_mcp: false, enabling compatible OpenClaw Gateway ACP registrations. (#3420)
  • [Feature / Docs] Shared-session agents can distinguish who wrote each message without changing whose credentials execute the session; operators can hide model-visible author labels with an environment flag. (#3422)
  • [Bug fix] /model and the startup header no longer name an Omnigent provider and model for ACP-backed sessions, which run on the agent's own auth and model. (#3431)
  • [Bug fix] Session tokens saved by omnigent login are now created owner-only, so a JWT is never briefly world-readable on first login, and an interrupted write no longer discards every stored token. (#3441)
  • [Feature / Docs / Chore / Test/CI] Model selection can now represent provider choices through stable intents and normalized capability metadata. (#3443)
  • [UI / Feature] Session owners can grant trusted collaborators permission to approve privileged actions without transferring ownership; ordinary editors can reject but cannot approve. (#3446)
  • [Bug fix / Feature / Docs / Chore / Test/CI] Default model selection now follows the active provider catalog instead of release-specific model names baked into runtime harnesses, while retaining general-purpose selection policy and Databricks gateway routability. In cold-cache Databricks environments without GitHub egress, configure executor.model or a provider models.default. (#3448)
  • [Feature / Docs / Chore / Test/CI] Smart routing now chooses only from models discovered on the active runner instead of falling back to release-specific model names. (#3450)
  • [Feature / Docs / Chore / Test/CI] The Kiro model picker now follows the models and metadata reported by the installed Kiro CLI. (#3452)
  • [Feature / Docs] Minimal omnigent run agents now discover their default model instead of using a release-specific built-in endpoint. (#3455)
  • [Feature / Docs / Test/CI] Provider setup and unconfigured provider runtimes now select current catalog models instead of release-specific built-in defaults, and fail with explicit configuration guidance when discovery is unavailable. (#3456)
  • [Docs / Chore] The Kimi launcher example now respects the default model configured in Kimi Code. (#3457)
  • [Bug fix] omni resume now accepts a conversation id pasted with stray punctuation (trailing period, quotes, backticks) instead of crashing (#3465)
  • [UI / Bug fix] Sidebar New session, Automations, and Inbox icons now sit on the same left column (#3468)
  • [Chore] Android app now targets Android 16 (API 36) to stay compliant with Google Play's (#3470)
  • [Feature / Test/CI] Nightly prerelease builds: every night a X.Y.Z.devYYYYMMDD tag of main is cut automatically; install or update with scripts/update_nightly.sh or omni upgrade --nightly (#3475)
  • [Bug fix / Breaking] Agent CLIs (qwen, goose, kimi, hermes, and generic ACP agents) no longer receive unrelated host credentials such as cloud tokens and other providers' API keys; an agent that authenticates from a variable outside its own family now declares it in os_env.sandbox.env_passthrough. (#3479)
  • [UI / Bug fix] Conversation sidebar text now scales with the Interface font size setting (#3480)
  • [Bug fix] Fixed two claude-sdk steering bugs: messages sent during an active turn were answered one turn late (a permanent chat desync), and steering several messages at once dropped all but the last. Steered messages are now buffered correctly and all of them reach the model. (#3484)
  • [Bug fix] Fix the first message being silently dropped when a session resumes on a managed sandbox / lakebox (#3488)
  • [UI / Bug fix] The workspace file view keeps its scroll position — both the file tree and the open file — when you switch between sessions (#3490)
  • [UI / Bug fix] Deleting a pinned session now removes it from the sidebar's Pinned section immediately, and sidebar rows no longer grow or shift while being deleted or renamed (#3492)
  • [Chore] Faster initial load — syntax-highlighting language grammars now load on demand instead of all upfront. (#3496)
  • [UI / Feature] Markdown file previews render fenced Mermaid diagrams. (#3498)
  • [Bug fix / Feature] Antigravity (agy) sub-agents now reliably receive their first turn, get their approvals dismissed in the terminal, and stop showing as still-running after they have finished. (#3499)
  • [Docs / Chore] qwen-native's terminal-start error label now reads "Qwen Code" (consistent with the other native harnesses) instead of "qwen". (#3500)
  • [UI / Bug fix] Terminal view scrolling now works with macOS trackpads and with TUIs that enable mouse tracking at startup (OpenCode, Claude Code) (#3510)
  • [Bug fix] Runners now retry login-page redirects with refreshed credentials instead of exiting, so a hosted session survives an expired bearer (e.g. after the machine slept through a token's lifetime) and reconnects on its own. (#3511)
  • [UI / Bug fix] The chat view shows the "Starting up…" spinner while a message is waking a disconnected runner, instead of nothing until the runner boots; the sidebar row shows a spinner while a session is starting up (#3514)
  • [UI / Bug fix] Renaming a session in the sidebar no longer hits the wrong row when the list reorders — row order holds while the pointer is over the list or a rename is in progress (#3515)
  • [UI] Collapsed tool runs in the chat view are labeled by what they did ("Ran 1 shell command, read 2 files") instead of "See N steps" (#3518)
  • [Feature] Sandbox dotfile hiding is now top-level only by default (opt into the full-tree walk with cwd_hidden_scan_recursive: true), and mask_paths hides named files or folders. Untrusted-tree sandboxes that relied on recursive masking should set cwd_hidden_scan_recursive: true on upgrade. (#3519)
  • [UI / Bug fix] Cloning a session that runs in a git worktree now pre-fills the original repo with the worktree branch (instead of the worktree path as the working directory), and the clone dialog blocks creation when the picked working directory doesn't exist on the host (#3521)
  • [Bug fix] omnigent sandbox create --provider openshell no longer crashes against openshell SDK >=0.0.86; workspace is configurable via sandbox.openshell.workspace or $OMNIGENT_OPENSHELL_WORKSPACE (defaults to "default"). (#3524)
  • [Bug fix] Shared-session agents distinguish speakers without treating claimed roles as authorization. (#3527)
  • [Bug fix] Direct omnigent.llms.Client Anthropic reasoning requests now select adaptive or fixed-budget thinking from live model capabilities. (#3529)
  • [Chore / Test/CI] N/A — internal lint cleanup. (#3545)
  • [Bug fix / Chore / Test/CI] N/A — internal lint cleanup. (#3546)
  • [Chore / Test/CI] N/A — internal lint cleanup. (#3548)
  • [Chore / Test/CI] N/A — internal lint cleanup. (#3549)
  • [Bug fix / Docs / Chore] Model context limits now follow live provider catalog maximum-input metadata instead of adding output capacity or relying on stale built-in model IDs. (#3551)
  • [Test/CI] N/A — internal CI enforcement only. (#3552)
  • [Bug fix] User messages no longer risk a React hook-order crash when changing from a system marker to regular content. (#3553)
  • [Chore] N/A — internal code-quality cleanup only. (#3554)
  • [UI / Feature / Test/CI] Choose a Codex model before starting a Web UI session (#3556)
  • [Chore] N/A — internal code-quality cleanup only. (#3571)
  • [Bug fix / Docs / Chore] Pi now routes Databricks models through the API advertised by the live model catalog instead of a release-specific model allowlist. (#3572)
  • [Bug fix] Bulk conversation actions now report structured errors when only some items fail. (#3573)
  • [Chore] N/A — internal code-quality cleanup only. (#3574)
  • [Chore] N/A — internal code-quality cleanup only. (#3575)
  • [Feature] omnigent import --force replaces a previously imported chat with the latest local transcript. (#3576)
  • [UI / Feature] Subagent graph panel now has zoom in, zoom out, and fit-to-view buttons for easier navigation of large agent trees (#3583)
  • [UI / Bug fix] Change a session's model and effort from the config gear while the session is asleep — the change is saved immediately and applies when the next message wakes it. (#3584)
  • [Feature / Test/CI] Add a Locust WebSocket load test (dev/loadtest/) with a one-command runner and result summary (#3591)
  • [Feature] Sandbox now hides dotfiles (.env, .aws, .ssh, ...) under write_paths roots, not just cwd and read_paths (#3596)
  • [Test/CI] N/A — internal CI enforcement only. (#3600)
  • [Feature] GitHub policy blocks destructive operations (deletes) by default across MCP tools, git push --delete, and gh * delete; opt in with allow_destructive: true. (#3622)
  • [Feature / Chore] The Cursor model picker now follows the models advertised by your installed Cursor CLI. (#3624)
  • [Feature / Docs / Chore] Pi gateway sessions now list the models currently available from the workspace instead of a release-specific bundled menu. (#3629)
  • [Docs / Chore] Setup and tool help no longer recommend release-specific model ids. (#3630)
  • [Feature / Docs / Chore] Static model catalog responses now identify fallback ownership and advertise the current GPT 5.6 Sol, Luna, Terra, and GPT 5.5 Codex aliases. (#3632)
  • [Feature] Catalog-backed model defaults now reuse a validated last-known-good provider catalog during transient upstream outages or empty responses. (#3641)
  • [Chore] N/A — internal typing cleanup only. (#3643)
  • [Chore] N/A — internal typing cleanup only. (#3645)
  • [Chore] N/A — internal typing cleanup only. (#3646)
  • [Docs / Chore / Test/CI] Repository lint now permits unavoidable static model aliases only through auditable owned fallback records. (#3647)
  • [Chore] N/A — internal typing cleanup only. (#3649)
  • [Chore] N/A — internal typing cleanup only. (#3650)
  • [Chore] N/A — internal typing cleanup only. (#3651)
  • [Chore] N/A — internal type cleanup only. (#3652)
  • [Chore] N/A — internal type cleanup only. (#3653)
  • [Chore] N/A — internal type-safety refactor. (#3655)
  • [Chore] N/A — internal type-safety refactor. (#3657)
  • [Chore] N/A — internal type-safety refactor. (#3659)
  • [Bug fix] An undeclared sub-agent name on session create is now rejected instead of silently running the child as the parent agent (#3662)
  • [Chore] N/A — internal type-safety refactor. (#3663)
  • [Chore] N/A — internal type-safety cleanup. (#3664)
  • [Chore] N/A — internal type-safety refactor. (#3665)
  • [Chore] N/A — internal type-safety cleanup. (#3666)
  • [Chore] N/A — internal type-safety cleanup. (#3667)
  • [Bug fix] The Codex model picker now hides OpenAI models that the installed Codex CLI cannot run. (#3668)
  • [Chore] N/A — internal type-safety cleanup. (#3669)
  • [Chore] N/A — internal type-safety cleanup. (#3671)
  • [Chore] N/A — internal type-safety cleanup. (#3674)
  • [Chore] N/A — internal type-safety cleanup. (#3675)
  • [Chore] N/A — internal type-safety cleanup. (#3676)
  • [UI / Feature] Redesigned the sidebar's bulk-select bar and added per-section selection: pick sessions from the flat list or from within project folders (#3677)
  • [Chore] N/A — internal type-safety cleanup. (#3678)
  • [Chore] N/A — internal type-safety cleanup. (#3679)
  • [Chore] N/A — internal type-safety cleanup. (#3680)
  • [Chore] N/A — internal type-safety cleanup. (#3681)
  • [Chore] N/A — internal type-safety cleanup. (#3683)
  • [Chore] N/A — internal type-safety cleanup. (#3684)
  • [Chore] N/A — internal type-safety cleanup. (#3686)
  • [Chore] N/A — internal type-safety cleanup. (#3687)
  • [Chore] N/A — internal type-safety cleanup. (#3689)
  • [Chore] N/A — internal type-safety cleanup. (#3691)
  • [Chore] N/A — internal type-safety cleanup. (#3695)
  • [Chore] N/A — internal type-safety cleanup. (#3696)
  • [Chore] Malformed tools, retry, and MCP YAML now fails with actionable parser errors instead of leaking untyped values. (#3705)
  • [Chore] N/A — internal type-safety cleanup with no user-facing behavior change. (#3706)
  • [Chore] N/A — internal ASGI type cleanup with no user-facing behavior change. (#3707)
  • [Chore] N/A — internal migration decoding hardening with no supported-input behavior change. (#3708)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3729)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3734)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3735)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3736)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3737)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3739)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3740)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3741)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3742)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3743)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3744)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3745)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3746)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3747)
  • [Bug fix / Chore] Managed Islo hosts now receive configured provider gateways during startup. (#3748)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3751)
  • [Chore] N/A — internal type cleanup with no user-facing behavior change. (#3752)
  • [Bug fix] Antigravity sessions without an explicit model now follow the installed SDK's current default. (#3762)
  • [UI / Bug fix] Moving a session into a project updates the sidebar instantly instead of after a multi-second wait (#3784)
  • [UI / Feature] omnigent --help now groups launch commands under a Harnesses section, colorizes the output, hides harnesses whose optional extra isn't installed (with a notice pointing at omnigent setup), drops the duplicate update alias line, and tidies the command descriptions (#3795)
  • [Feature] omni upgrade now preserves requested extras for uv tool and pipx installs, supports --extra, --target-version, and --dry-run, and refuses to auto-upgrade pip / uv pip installs because those installers don't record extras. (#3796)
  • [UI / Chore] omnigent --help command descriptions are tidied (harness rows read "Launch with Omnigent"), and the duplicate update alias line is hidden from the listing (#3797)
  • [Bug fix] Prevent list_files from running without a conversation scope. (#3804)
  • [Bug fix] Reject stale harness continuation requests that cannot resolve an agent model. (#3806)
  • [Chore] N/A (internal type cleanup) (#3830)
  • [Chore] N/A (internal type cleanup) (#3831)
  • [Chore] N/A (internal type cleanup) (#3832)
  • [Chore] N/A (internal type cleanup) (#3833)
  • [Chore] N/A (internal type cleanup) (#3835)
  • [Chore] N/A (internal type cleanup) (#3836)
  • [Chore] N/A (internal type cleanup) (#3837)
  • [Chore] N/A (internal type cleanup) (#3838)
  • [UI / Bug fix] New sessions created inside a project appear under that project immediately instead of briefly showing under "Sessions" (#3869)
  • [Bug fix / Breaking] The "GitHub Repo & Branch Access" and "Block Working Directory & Worktree (#3888)
  • [Feature] claude-native sessions now derive their Working/idle status from Claude Code's own session file for faster, more accurate turn-edge detection (falls back to the terminal watcher on older Claude versions) (#3906)
  • [UI] Tightened the sidebar's spacing so nav, sections, and session rows sit on a consistent vertical rhythm (#3908)
  • [UI / Bug fix] Sidebar rows no longer stay highlighted in "Select sessions" mode unless explicitly selected (#3912)
  • [UI / Feature] Opening a shell on a sleeping session now wakes its runner automatically instead of failing with "no runner available" (#3919)
  • [Bug fix] Pi-native sessions now retain Omnigent system tools and the comment relay. (#3920)
  • [Chore] N/A — no user-facing behavior change. (#3923)
  • [Bug fix] Fixed a leak where native Codex sub-agents left orphaned codex app-server processes after idle reaping, TUI exit, runner shutdown, or a hard host/runner death (#3925)
  • [Bug fix / Chore] OpenCode-native model options now fall back to the authenticated server catalog when CLI discovery fails. (#3926)
  • [UI / Bug fix] The sidebar's My sessions / Shared with me switch stays visible while bulk-selecting sessions (#3927)
  • [Feature] omnigent diagnose prints a secret-free environment snapshot (CLI/server versions, OS, auth mode) for bug reports (#3928)
  • [UI / Bug fix] Hide the empty Projects header menu (⋯) when you have no projects (#3930)
  • [UI] Moved the Chat/Terminal switcher for terminal-first sessions from the composer into the session header (#3931)
  • [UI / Bug fix / Feature] Recent conversations reopen instantly while catching up without reordering live response output. (#3932)
  • [Bug fix] pip install / uv sync no longer hangs when pnpm is provided by a corepack (#3986)

[v0.7.0] — 2026-07-27

  • [Bug fix] Hermes thinking now appears in mirrored web conversations. (#1645)
  • [Bug fix] Image and file attachments now survive session relaunches on remote host runners; attachments that fail to load show a visible marker instead of silently disappearing. (#2085)
  • [UI / Feature] Voice dictation in the composer now works in Electron, Firefox, and Chromium via optional server-side transcription (omnigent[dictation]) — local models, live streaming partials, audio never leaves your server. (#2093)
  • [UI / Bug fix / Test/CI] Hide Claude task completion control messages from conversation history while preserving them for resume context. (#2104)
  • [Bug fix / Feature / Docs] Operators can mount pre-created PersistentVolumeClaims (NFS/SMB/SAN) into Kubernetes sandbox runners via sandbox.kubernetes.pvc_mounts (read-only by default) (#2435)
  • [Bug fix / Test/CI] /compact no longer races when multiple compact requests hit the same session at once (#2585)
  • [Bug fix / Test/CI] sys_call_async / sys_cancel_async now consistently use handle_id as the cancel identifier. (#2586)
  • [Bug fix / Test/CI] Runner idle timeout no longer kills sessions waiting on async tools, timers, or approval prompts (#2588)
  • [Bug fix] Misconfigured runner tool policies deny tool calls instead of silently allowing them (#2589)
  • [UI / Feature] Slash-command menus now match any part of a command's name, so /using-superpowers finds /superpowers:using-superpowers (#2655)
  • [Bug fix] Host-launched runners now reuse delegated credentials instead of repeating Databricks authentication during startup. (#2762)
  • [Feature] Projects are now a first-class entity with a /v1/projects CRUD API (create, list, rename, delete) and per-session membership. (#2765)
  • [Bug fix] Hermes forwarder introspects state.db columns to survive cross-version schema drift (#2774)
  • [Feature] omni usage reports your LLM cost for today / the last 7 / 30 days, with a per-session per-model cost breakdown (#2787)
  • [Feature / Chore] Native Claude sessions start faster by coalescing runner initialization into one handshake. (#2793)
  • [UI / Bug fix / Feature / Docs / Test/CI] Claude-native launch and in-session pickers now share the selected host's live model catalog, including Claude Code's managed routes. (#2831)
  • [Bug fix] Managed BoxLite sandboxes remain available after provisioning so agent launches can execute commands reliably. (#2846)
  • [Feature] Server-side smart routing can now call an external routes:select router via routing.provider: external, with provider-agnostic auth (api_key) and model-name mapping (model_prefix) (#2864)
  • [UI] Chat code blocks no longer load the syntax-highlighter engine until the first (#2886)
  • [UI / Bug fix] The main chat "Working…" indicator now clears reliably when the session goes idle, instead of occasionally staying lit after a reply completes. (#2900)
  • [Bug fix] The performance benchmark harness now records HTTP failures and continues the rest of the suite instead of aborting, and excludes fully-failed runs from the summary averages. (#2917)
  • [Feature / Test/CI] Scheduled tasks can now be created without a workspace or a pinned host for non-code work (research, summaries, chat-only, MCP-only); an unset host runs on your live host at fire time, and an unset workspace defaults to the host's home directory. A pinned host is now authorized (existence + ownership) at create time rather than only at fire time. (#2946)
  • [Chore / Test/CI] N/A — internal benchmark/dev tooling; no user-facing impact. (#2947)
  • [Feature] Set OMNIGENT_CONTAINER_RUNTIME=podman to use Podman (or another supported runtime) globally instead of Docker, without editing every agent's YAML. (#2949)
  • [Bug fix] Sending a message to a session whose Claude Code terminal crashed no longer (#2951)
  • [Bug fix] The desktop app now always quits within a few seconds even if its background cleanup stalls or the OS re-quit is dropped. (#2972)
  • [UI / Bug fix] Messages send immediately when a session's only remaining work is a background job, instead of being held in the queue until it finishes (#2974)
  • [UI / Feature] Desktop update notifications now appear in a native corner toast that works (#2975)
  • [Bug fix / Chore] Runner startup no longer waits several seconds for Git's optional untracked-file cache probe. (#2976)
  • [Feature / Test/CI] omnigent benchmark harness gains --network-delay-ms and per-journey HTTP request counts (#2977)
  • [UI / Bug fix] Pi sessions now show reasoning while it streams and after conversation history reloads. (#2979)
  • [Feature] The runner log now records why the runner exited (crash traceback, signal, idle timeout, tunnel close, or parent death) (#2985)
  • [UI / Feature] Set up a missing agent from the New Chat dialog with a guided, step-by-step checklist (#2987)
  • [UI / Bug fix / Feature] HTTP headers can now be set and edited for HTTP MCP servers in the session agent info panel. (#2989)
  • Capped unbounded DB list queries in the permission store and reduced session opens in check_access/get_permission_level from 2–3 to 1. (#2995)
  • Deleting a conversation with many descendants now issues a single FTS DELETE instead of one per descendant. (#2999)
  • [UI / Bug fix] Android auto theme and system-bar icons now stay readable with both device themes and explicit in-app theme overrides. (#3006)
  • [UI / Feature] 3D model files (STL, 3MF, OBJ) now render an interactive preview in the file browser (#3007)
  • [UI / Bug fix] Subagents panel Graph View now shows the same status dot colors as List View (#3009)
  • [Feature / Test/CI] Scheduled-task runs now transition to a terminal state (succeeded/failed) as soon as the dispatched turn finishes, instead of staying running forever; run history is readable at GET /v1/scheduled-tasks/{id}/runs. (#3014)
  • [Feature / Chore] When enabled, new sessions receive concise semantic titles in the background without adding work or latency to the active agent turn. (#3024)
  • [Feature] Offload dictation speech-to-text to a remote worker with (#3025)
  • [Bug fix / Docs / Test/CI] Codex-native subagents now appear in the Agents panel with their live conversations. (#3028)
  • [Bug fix] Credential proxy no longer attaches injected credentials to TRACE/OPTIONS requests, and the egress proxy now honors Max-Forwards as a conformant intermediary. (#3029)
  • [Docs] N/A — internal documentation cleanup. (#3031)
  • [Feature] Import local Qwen, Kiro, Pi, and Kimi coding chats into Omnigent (#3032)
  • [UI / Feature] Press ⌘⌥V (Ctrl+Alt+V) to toggle voice dictation from anywhere; while dictating, Enter keeps the text and Esc discards it (#3044)
  • [UI / Feature] Added: "Auto · smart routing" harness option in the new-chat picker — lets the intelligent router pick both harness and model based on the task description (#3045)
  • [Feature] Import existing OpenCode chats, including files and tool activity, with omnigent import (#3046)
  • [Bug fix] Dictation streams now reliably release their worker slot when a browser disconnects abruptly. (#3048)
  • [UI] New-session composer moves harness configuration into a gear-icon modal, with a cleaner agent picker (needs-setup and custom agents folded into flyouts) and Smart Routing offered as a model option. (#3050)
  • [Bug fix / Feature] The Slack bot can now run against an Omnigent server deployed on Databricks Apps, (#3051)
  • [Feature] Sessions can now be filed into first-class projects via PATCH /v1/sessions/{id} and listed with GET /v1/sessions?project=<name>, which dual-reads first-class membership and legacy project labels. (#3053)
  • [Bug fix / Test/CI] Fixed SDK session telemetry always recording harness: null in server deployments not started via the CLI. (#3054)
  • [Test/CI] N/A — test-only reliability change. (#3056)
  • [Bug fix] Databricks OAuth CLI profiles no longer fail with a misleading "malformed profile" error; the message now explains the real fix (install omnigent[databricks] or refresh the OAuth session). (#3059)
  • [Bug fix] An idle runner shutting down after inactivity no longer shows a scary "disconnected" error — just send a message to wake it back up. (#3060)
  • [UI / Feature] The sidebar now uses first-class projects: create empty projects, rename and delete them, and file sessions into them — while existing label-based projects keep working. (#3061)
  • [UI / Bug fix] The "Host is offline — click to reconnect" prompt now appears in the composer's host badge instead of a separate banner below the composer (#3062)
  • [Test/CI] N/A (test-only change) (#3063)
  • [Feature / Docs / Test/CI] New databricks_cli credential-proxy type lets sandboxed agents use the Databricks CLI without the real token entering the sandbox (#3080)
  • [UI / Feature / Test/CI] Polly sessions running on Claude SDK can start Goal mode from the chat composer. (#3084)
  • [UI / Bug fix] The Configure agent modal's footer no longer shows a gray background band behind Cancel/Save (#3089)
  • [UI / Feature] The Sidebar is more compact and polished, with clearer status indicators and richer session details on hover. (#3092)
  • [UI] Reordered the project-folder header buttons (new-session before the menu), (#3096)
  • [Chore / Breaking] omni server start is removed; use omni server --background to launch the (#3105)
  • [Bug fix] omnigent server --host 0.0.0.0 now enables accounts (login) mode automatically instead of silently 401-ing every request (#3107)
  • [Feature] Projects can store default session settings (host, workspace, harness, model, …) via a new config field on the projects API. (#3108)
  • [Bug fix] Databricks-served Claude models no longer break non-streaming responses (prompt-policy and smart routing) when returning typed content blocks (#3109)
  • [Feature] omnidev omnigent <args…> runs an omnigent command against the current checkout's pod via uv run omnigent, with the pod's isolated env applied (#3110)
  • [UI / Feature] Configure a session's model, effort, and smart routing mid-chat from a new gear icon in the composer (#3111)
  • [UI / Feature / Test/CI] Add the /tasks Scheduled Tasks page with sidebar navigation, task rows, empty states, suggestion chips, create-dialog entry points, and Playwright E2E coverage. (#3112)
  • [Bug fix] Reading image files in a Claude Code native session no longer bloats conversation history and breaks resume/compaction on large sessions (#3113)
  • [Bug fix / Test/CI] The iOS app no longer follows cross-origin redirects when probing a newly approved server for the Databricks workspace mount, so a consented host can't redirect the probe to a different origin. (#3115)
  • [Bug fix] Forked native sessions (Claude Code, Codex, Pi, Qwen) again resume with their prior conversation history. (#3116)
  • [UI / Feature / Test/CI] Workspace pane icons now explain themselves on hover, with a cleaner right-side session layout and compact Share action. (#3122)
  • [UI / Bug fix / Feature] Add a dialog for creating recurring scheduled agent tasks. (#3123)
  • [UI] Sidebar session hover flyouts and rows now align with the project rows — matching flyout style, title size, and right-edge padding. (#3124)
  • [Bug fix] Resuming a session with large images stored in history no longer overflows the context window or breaks compaction, on both the SDK and native Claude Code paths (#3133)
  • [Feature] omnigent session import loads a session export JSONL back into a server as a new session (#3141)
  • [Feature] Telemetry now records the agent name for Polly and Debby sessions. (#3152)
  • [Chore / Breaking] omni integration slack start is removed; use omni integration slack --background to launch the (#3153)
  • [UI / Bug fix / Docs / Chore] Slack device login now requires a fresh password at the consent screen, closing a device-code phishing gap where an already-signed-in user could approve a login by reflex. (#3156)
  • [Feature] omnigent claude keeps tool search enabled when launched with CLAUDE_CODE_USE_GATEWAY=1. (#3161)
  • [Test/CI] Fix test_session_stream_emits_heartbeat_on_idle after _session_labels_for_runner_spawn was extracted into omnigent.runner.native.orchestration; patch the heartbeat cadence on omnigent.runner.app where it is defined and consumed. (#3163)
  • [Bug fix] Crash reports are no longer lost when a process crashes more than once in the same second. (#3173)
  • [Bug fix] Custom codex-native agents launch on the model declared in the agent spec (executor.model) instead of silently falling back to the provider default (#3175)
  • [Bug fix] Single-file agent YAMLs that nest the executor under type:/config: (the bundle config.yaml shape) now fail at load time with the correct flat spelling, instead of silently running a harness inferred from the model prefix (#3178)
  • [UI / Bug fix / Feature] Use native Codex goal mode from Polly's Goal control (#3181)
  • [UI / Bug fix] Renaming a session now updates the name in the sidebar instantly instead of after a short delay. (#3185)
  • [UI / Bug fix / Feature / Test/CI] Edit scheduled tasks and type exact run times, with a scrollable time picker and a consistent, fully-visible dialog. (#3186)
  • [UI / Feature] Pinned sessions now persist server-side per user, so pins follow you across devices and browsers. (#3189)
  • [Feature] New sessions now receive concise semantic titles automatically without additional configuration. (#3191)
  • [Test/CI] /rerun PR comment re-runs failed CI on the current commit without dismissing approvals (#3195)
  • [Feature] Native Codex sessions can now receive concise automatic background titles. (#3199)
  • [Bug fix] Qwen3, inkling, and other non-OpenAI models now work in the Pi SDK executor harness (#3203)
  • [Chore / Breaking] Slack-on-Databricks deploy: renamed OMNIGENT_SLACK_WEBAUTH_BASE_URL to OMNIGENT_SLACK_DATABRICKS_APP_URL (--app-url), removed the WEBAUTH_PORT / DATABRICKS_WORKSPACE_HOST overrides, and dropped deploy-time uv lock in favor of in-container uv run. (#3206)
  • [UI / Bug fix] Sidebar session titles use the available space cleanly and reveal branch and action details only when needed. (#3208)
  • [UI / Bug fix] Removed the redundant "Create new project" option from the sidebar project picker — create projects with the + icon next to Projects (#3210)
  • [Feature] Smart routing now activates automatically when a server llm: block or an external routing: block is configured — no OMNIGENT_SMART_ROUTING env var needed (#3215)
  • [UI / Feature / Test/CI] Scheduled task rows now show when each task will next run ("Next run in 15h") and a "Run now" action in the ⋯ menu to fire a task immediately, with refreshed row styling. (#3218)
  • [UI / Feature] Projects now carry default session settings (host, working directory, agent, optional git worktree) that pre-fill the new-session composer. (#3221)
  • [Bug fix] Fixed per-model cost attribution for native harnesses so a session's per-model (#3223)
  • [UI / Bug fix] Codex task plans now stay in Tasks instead of being duplicated in chat. (#3249)
  • [UI / Bug fix] Smart Routing no longer appears in the model dropdown for native terminal sessions (Claude Code, Codex, Pi), where it had no effect (#3259)
  • [Bug fix] Sandboxed agents can now run tools managed by update-alternatives (awk, python3, editor, and similar) on Linux. (#3263)
  • [Bug fix] Egress proxy now trusts corporate/MDM CA roots installed under the system capath directory, so TLS to hosts behind a corporate MITM works from a sandboxed agent. (#3264)
  • [Bug fix] Large historical attachments no longer inflate replay and compaction context as inline base64 text. (#3267)
  • [Docs] Contributors can now use omnidev as the documented worktree-safe local testing flow. (#3277)
  • [Bug fix] Custom OpenAI Agents can use Unity AI Gateway Model Services with fully qualified model names when a Databricks provider or profile is configured. (#3288)
  • [UI / Bug fix / Feature] Configure recoverable dangerous shell commands to ask for approval or deny execution, while always blocking catastrophic operations. (#3297)
  • [Bug fix / Feature] Pi harness now routes kimi, inkling, GLM, qwen3, Gemini 3+, and Llama through the correct AI Gateway endpoints, fixing "Stream ended without finish_reason" errors and ensuring system.ai.* ids are used throughout. (#3307)
  • [Feature] Add a top-level justfile with recipes for launching the iOS Simulator, running the Android debug build, starting the omnigent dev pod, and running pre-commit/lockfile normalization. (#3310)
  • [UI / Bug fix] Sidebar header action buttons are now vertically centered with section titles. Session row hover is smoother, and active items no longer flash when hovered. (#3311)
  • [UI / Bug fix] Aligns project folder icons and color with the rest of the sidebar. (#3317)
  • [Bug fix] Unsupported Claude Code slash commands are now escaped and sent as regular user messages instead of leaving the native terminal in an undriveable state. (#3319)
  • [Feature] omnigent server now tells users they can set OMNIGENT_AUTH_ENABLED=0 to override automatic multi-user mode when binding to a non-loopback interface. (#3320)
  • [Chore / Breaking] [Breaking] The deprecated OMNIGENT_ACCOUNTS_ENABLED environment variable has been removed; use OMNIGENT_AUTH_ENABLED instead. (#3322)
  • [UI / Bug fix] Fixed pinned sessions being lost when the web UI was updated before the server. (#3323)
  • [UI / Feature] Automations list: tasks now render as cards and show a live-updating relative next-run time ("Next run in 3 hours"). (#3324)
  • [UI] Settings → Appearance no longer has a separate Sidebar font size control, and a new "Reset to defaults" button restores every appearance preference after confirmation. (#3326)
  • [UI] Starting a session inside a project now names the project in the new-session (#3327)
  • [UI] The Files workspace tab now uses a stacked-files icon. (#3329)
  • [UI / Feature] Automations: scheduled tasks can now pick a model and reasoning effort in the create/edit dialog (defaults to the agent's settings). (#3331)
  • [UI / Bug fix] Fixed sessions pinned in the updated web UI being lost after the server was updated. (#3332)
  • [UI / Feature] Native harness setup now checks the installed CLI version and prompts to upgrade if it is too old. Cursor's missing-binary case is normalized to the same structured binary-missing signal as the other CLI-backed native harnesses. (#3335)
  • [Bug fix] Pi sessions now show a clear error when their Databricks login has expired, instead of silently accepting messages with no reply (#3336)
  • [Test/CI] N/A (internal CI change). (#3338)
  • [Bug fix] claude-sdk harness now surfaces harness-level failures (expired login, auth error) as structured errors instead of storing them as assistant messages. (#3342)
  • [UI] Align the sidebar brand row with the rest of the navigation. (#3346)
  • [UI / Bug fix] Short links like #3090 in chat markdown tables no longer stack one character per line (#3350)

[v0.6.0] — 2026-07-21

  • [Bug fix] sys_os_shell commands no longer inherit omnigent's own PYTHONPATH entry, so project subprocesses resolve their own installed packages instead of omnigent's. (#1861)
  • [Bug fix] Stopping a Goose turn no longer leaves stale ACP session state behind when the subprocess is terminated. (#1928)
  • [Bug fix] Cancelling or deleting a session during agent cold start no longer leaks the harness subprocess. (#1982)
  • [Bug fix] macOS sign-in with a hardware security key (e.g. YubiKey) works again. (#2036)
  • [UI / Bug fix] Tool-call cards keep their live spinner when a superseded response terminates mid-turn (fixes a first-turn "no spinner" on native-terminal harnesses). (#2045)
  • [Bug fix] hermes-native tool-call cards now show a live spinner and elapsed timer while a tool runs, including on the first turn. (#2046)
  • [Bug fix] Fix blank white page on Safari/iPadOS older than 16.4 caused by regex lookbehinds on the web UI boot path (#2105)
  • [UI / Feature / Chore] A project's "new session" pencil now prefills the composer from the project's latest session — host, repo, agent, and a fresh git worktree branch — so starting a new chat in a project is one prompt away. (#2133)
  • [UI / Feature] Filter the Archived sessions view by project (#2134)
  • [Bug fix / Docs / Test/CI] Polly now verifies pytest test-count discrepancies against collected cases before recording miscount/fabrication claims. (#2140)
  • [Bug fix] Evict the cached claude-sdk client when a turn is cancelled so the session recovers on the next turn (#2169)
  • [UI / Bug fix] Tapping an Android notification now opens the waiting session (or the inbox). (#2210)
  • [Bug fix] Fixed the headless Hermes harness registering no Omnigent MCP server (agent had no builtin tools). (#2216)
  • [Feature / Breaking] Ids are now bare 32-character hex (no conv_/ag_/host_ prefixes) stored as 16-byte binary; existing prefixed ids in URLs, configs, and clients keep working. (#2228)
  • [Bug fix] sys_list_models no longer misreports codex cli-config providers and cursor workers as having no usable model provider. (#2237)
  • [Bug fix] Cursor sessions now run shell tools in the declared workspace directory instead of the runner's working directory (#2244)
  • [UI / Bug fix / Feature] Conversation view gains a turn-rail minimap for jumping between messages (#2285)
  • [Feature / Docs] sandbox.host_config in the server config injects verbatim host config.yaml content (e.g. a providers: gateway block) into managed sandboxes before the host starts (#2306)
  • [Bug fix] omnigent server now accepts documented boolean server-config values like sandbox.kubernetes.in_cluster: false instead of rejecting them at startup. (#2314)
  • [Bug fix] Chat sessions now recover automatically from a brief reverse-proxy 404 during a backend restart, instead of freezing until a manual page refresh. (#2316)
  • [UI / Bug fix] Bulk select-all/delete/archive in the sidebar now correctly handles collapsed sections (#2377)
  • [Bug fix / Feature] omnigent run --harness <name>-native now launches every registered native harness with matching prompt and model behavior. (#2379)
  • [Feature / Docs / Test/CI] Harness bench now reports Omnigent MCP relay support separately from vendor-native tool calling. (#2380)
  • [Bug fix] Sessions are now stopped server-side before archive or delete, so SDK and API callers get the same stop-first behavior the web UI provides. (#2400)
  • [UI / Bug fix / Test/CI] Sidebar session tabs no longer overflow their background on narrow widths. (#2425)
  • [Bug fix] Local server startup now works when a system proxy intercepts loopback traffic. (#2433)
  • [Bug fix] Native TUI harnesses (opencode, pi, hermes) no longer render multibyte UTF-8 as mojibake on deployments whose environment lacks a UTF-8 LANG/LC_ALL. (#2440)
  • [Bug fix] Claude native sessions now back off rejected cost updates instead of retrying on every poll. (#2453)
  • [Feature] Server now collects opt-out usage telemetry for session created, stopped, and deleted events to help understand product usage patterns. (#2457)
  • [UI / Bug fix] Confirming a Japanese IME conversion with Enter no longer submits the session rename or new-project name inputs (#2459)
  • [Feature] Server llm: config accepts an optional fallback_models: list; LLM-backed policies now retry alternate models before failing closed. (#2462)
  • [Feature] Harden the LLM prompt-classifier policy against prompt injection by spotlighting untrusted content behind an unguessable per-evaluation marker. (#2463)
  • [Feature / Docs / Test/CI] Harness bench now reports whether forked sessions retain and replay their source conversation history. (#2472)
  • [Bug fix / Test/CI] Harness benchmark live tables now distinguish not-applicable capabilities from skipped probes. (#2475)
  • [UI / Bug fix] New sessions respond faster to their first message, and the "Working…" indicator now appears immediately on the first turn instead of staying dark while the runner finishes connecting (#2478)
  • [Bug fix] A policy-denied message (e.g. hitting the cost budget) now shows immediately instead of only after a page refresh (#2481)
  • [Bug fix / Feature / Docs / Test/CI] Codex sessions using Databricks custom model aliases can surface reasoning summaries, and the harness benchmark now reports observable reasoning support. (#2482)
  • [Feature / Docs / Test/CI] The harness benchmark can run selected capability dimensions and pin an exact model directly in each harness argument. (#2485)
  • [Bug fix / Test/CI] Polly Cursor workers no longer ask for tool permissions by default (YOLO / auto) (#2493)
  • [Feature] Polly defaults to Sonnet 5 for its brain and Claude Code workers, and Cursor Grok 4.5 for Cursor workers (#2500)
  • [Bug fix] Polly Cursor workers default to grok-4.5 (#2503)
  • [Bug fix] Polly Claude brain and Claude Code workers default to the sonnet alias (#2504)
  • [Bug fix] Polly Claude brain and Claude Code workers inherit the provider default model again (#2507)
  • [Bug fix] Codex-harness sub-agents no longer crash on macOS when the runner inherits a read-only working directory (e.g. / from the desktop app). (#2512)
  • [UI / Feature / Test/CI] New chats can start with the Workspace panel collapsed via Appearance settings (#2516)
  • [Bug fix] sys_advise_models is only offered to agents when intelligent routing is configured on the server. (#2517)
  • [UI / Feature / Test/CI] OpenCode-native sessions now show their available models in the web model picker. (#2519)
  • [Bug fix] Pi's /model command now shows all LLM models available on your Databricks workspace (fetched live from the serving-endpoints API) instead of a hardcoded list (#2525)
  • [UI / Feature] The changed-files panel now shows a per-file line-change count (+N −M) beside each file. (#2526)
  • [Bug fix] Telemetry rollout percentages now honor 0% and 100% exactly. (#2528)
  • [Bug fix] Pi no longer shows a blocking "Trust project folder?" dialog when launched via Omnigent in a project with .pi/ settings or extensions (requires Pi 0.79+) (#2529)
  • [Feature / Docs / Test/CI] Harness metadata can now declare resume, steering, live queue, image, and compaction support for capability conformance checks. (#2530)
  • [UI] Admin Settings pages (Members, Policies, Sharing) now share the same left and top alignment as the rest of Settings. (#2532)
  • [Bug fix] Pi's /model command now shows GLM, Llama, Qwen, and other non-GPT Databricks models alongside Claude and GPT models (#2534)
  • [UI / Bug fix] The Members and Sharing settings pages and the Share buttons are hidden in single-user mode (#2536)
  • [Bug fix] Pi's /model command now correctly lists all available Databricks models when using the AI Gateway (cli-config) setup — the NXDOMAIN error that caused single-model fallback is fixed (#2540)
  • [UI / Feature] Native Pi sessions can now switch model mid-session from the web composer, with the picker scoped to your logged-in models and synced to in-terminal /model changes (#2543)
  • [UI / Feature] Add an opt-in "Hide unconfigured harnesses" setting that filters the new-chat picker to harnesses set up on the selected host (#2544)
  • [Bug fix] Sending a message to an idle native Pi session no longer gets stuck in the "queued" state until you switch tabs (#2545)
  • [Feature / Docs / Test/CI] Add omnigent uninstall for safely removing the CLI, installer-managed shell/config edits, and optionally local Omnigent state. (#2550)
  • [Bug fix] Pi's /model command now shows all available Databricks models for ucode / Codex app profile-switched setups (#2552)
  • [UI / Feature] Added a Nord color theme (arctic frost-blue palette) to the Appearance settings palette picker. (#2561)
  • [Bug fix] Fix uv tool install of the databricks extra failing to build pyarrow from source on Python 3.14 (#2563)
  • [Bug fix] Sessions list no longer does a workspace-wide id pre-fetch for the archived filter, restoring the single indexed query on the sidebar path. (#2568)
  • [Bug fix] The CLI now shows a clear error instead of a raw traceback when the server is too slow or unreachable while starting a session. (#2572)
  • [Bug fix] Pi harness: Databricks GLM/DeepSeek reasoning models no longer fail with "Stream ended without finish_reason" (#2573)
  • [UI / Bug fix] Clicking a pinned session that belongs to a project no longer re-opens the project section after you've collapsed it. (#2583)
  • [Bug fix] Claude-native messages that fail to reach Claude (or stall unsent) now surface the failure instead of silently disappearing. (#2591)
  • [UI / Bug fix] The file editor now follows Omnigent's selected web and desktop color theme instead of the operating-system theme. (#2594)
  • [UI / Feature] Hovering a pinned session now shows its project name in a flyout (#2595)
  • [UI] Sidebar rows, section headers, and nav items now line up on a consistent grid (#2596)
  • [Bug fix] Queued follow-up messages in the Pi web UI now dispatch immediately when Pi finishes replying (#2597)
  • [UI / Bug fix] Pinned-session project flyout no longer opens (and gets stuck over the chat) when tapping a session on mobile (#2599)
  • [UI / Feature] Diff viewer gains a "Wrap lines" toggle, and Find / Download / diff toggles now live in a single "⋯" View settings menu (#2600)
  • [UI / Bug fix] Mobile session menu opens the project picker in place instead of an off-screen side flyout (#2602)
  • [Bug fix] sys_session_send now reliably accepts model overrides when spawning named sub-agent sessions with a specific model (#2603)
  • [Chore / Breaking] omnigent[memory] is renamed to omnigent[hindsight]; the Hindsight memory extra is now the canonical name. (#2605)
  • [Bug fix] omnigent host status now hides the session table by default (use --sessions to show it), making the command significantly faster. (#2606)
  • [Feature] omnigent://<hostname>/c/<session_id> links open that session in the desktop app, reusing an open window on that server in-place (#2607)
  • [Bug fix] Fix native Claude sessions overflowing the context limit on reconnect when the conversation contained screenshots (#2609)
  • [Feature] Session creation requests from the web UI now send an explicit X-Omnigent-Client header, enabling the server to record the exact client surface (web/desktop/ios/android) in telemetry without relying on User-Agent parsing. (#2615)
  • [UI / Bug fix] Mobile: the Chat/Terminal toggle no longer reappears over the sidebar when opening a session's kebab menu (#2617)
  • [UI] Project sidebar headers show a chevron in place of the folder icon on hover instead of a persistent caret next to the name (#2618)
  • [UI / Feature] PDF files now preview inline in the file viewer, with scrollable pages and zoom (#2619)
  • [UI / Bug fix] Find in file now toggles the editor's find bar closed on a second click, and its close button no longer shows a stray keyboard-hint tooltip (#2621)
  • [UI / Bug fix / Feature] Find in file now works in the markdown editor — highlights and cycles matches, including terms split across bold/italic formatting (#2628)
  • [Bug fix] Clicking an Omnigent session URL printed inside the embedded terminal now stays in the web app instead of opening a duplicate browser tab/window. (#2639)
  • [Docs] Clarify optional install extras in the quick-start docs. (#2640)
  • [Bug fix] use_responses: false now correctly selects the Chat Completions API in standard config.yaml bundles. (#2641)
  • [Bug fix / Feature] Import existing Claude Code or Codex chats with omni import. (#2649)
  • [UI / Feature] Customize a built-in color theme with shared light/dark accent, tint, contrast, and two-rail sidebar translucency controls. (#2650)
  • [UI / Bug fix] Pinned sessions no longer show duplicate rows after upgrading — legacy pin ids are migrated to the new id format automatically. (#2651)
  • [UI / Feature] Long-running Codex commands now stream their output into the web tool card while they run. (#2652)
  • [UI / Feature] Randomize accent and background tint colors with a playful new dice button. (#2653)
  • [Feature] omnigent://<hostname>/c/<session_id> links open that session in the iOS app, reusing the open window on that server in-place (#2661)
  • [Bug fix] Pi's /model command now shows and correctly routes GPT, Kimi, Llama, GLM, and Gemini 3.x models alongside Claude (#2665)
  • [UI / Bug fix] The Add Global Policy dialog now shows all available policies, including ones already applied. (#2668)
  • [UI / Bug fix] The Add Policy dialog for sessions now shows all available policies, including ones already applied. (#2670)
  • [Bug fix] Deleting or archiving a session now also stops any still-running sub-agent children, instead of leaving them running as unreachable orphans. (#2673)
  • [UI / Feature] Find in file now works in the markdown and notebook preview — highlights and cycles matches in the rendered document (#2674)
  • [Bug fix] Codex sessions through a Databricks gateway profile no longer fail with "Invalid Token" when the environment's DATABRICKS_HOST points at a different workspace than the profile (#2675)
  • [UI / Feature] The file panel (changed files, browsing, diffs, and file contents) stays viewable when a session's runner is offline but its host is still connected — no need to send a message to wake it. (#2676)
  • [UI / Feature] Select text in a PDF preview to add review comments with inline highlight overlays. (#2677)
  • [UI / Feature] Codex plans now show up in the Tasks panel, the same way Claude Code todos do (#2678)
  • [UI / Bug fix] Token expiration and other harness startup errors now appear immediately in the chat transcript instead of requiring a page reload. (#2681)
  • [UI / Feature] Switching back to a recently-opened chat now renders instantly from cache instead of blanking and reloading over the network. (#2688)
  • [UI / Bug fix] Fixed the comment box being hidden behind the keyboard when commenting on a file in the iOS app (#2694)
  • [Bug fix] Host-bound sessions relaunch immediately after a Stop or host restart instead of waiting out the runner-connect grace. (#2699)
  • [Test/CI] Add a checkout_sha input to the Benchmark workflow so nightly benchmarks can be run ad-hoc against a specific commit. (#2700)
  • [Bug fix / Test/CI] Fresh installs no longer resolve an OpenAI SDK combination that crashes every OpenAI Agents harness turn. (#2713)
  • [Feature] omni import --harness <claude|codex> --last N can now import up to 50 recent local chats at once. (#2724)
  • [UI / Bug fix] Cursor setup now distinguishes CLI readiness from SDK API-key configuration and shows install/login guidance before web chat launch. (#2733)
  • [UI] The Gateway option in model setup no longer cites OpenRouter as an example — use the dedicated OpenRouter option instead (#2738)
  • [Bug fix] Sandboxed (darwin_seatbelt) agents now boot when the helper interpreter or the wrapped CLI is reached through symlinks — uv-installed Pythons and the standalone Claude CLI no longer die with Operation not permitted. (#2743)
  • [Bug fix] A sandboxed claude-sdk agent no longer dies at connect time when its sandbox can't wrap the Claude CLI — it starts with native tools disabled (file/shell access stays sandboxed via the sys_os_* tools) and logs why. (#2749)
  • [Feature] omnigent setup can now install Hermes directly before configuring its model provider. (#2751)
  • [Bug fix] Sandboxed (darwin_seatbelt) agents no longer die at startup with "No usable temporary directory" — the private scratch tmpdir is now granted in the sandbox profile before the process is jailed. (#2759)
  • [Feature / Docs / Test/CI] Benchmark reports now measure cold restarts of existing sessions whose runner is offline. (#2761)
  • [Docs / Chore / Test/CI] Website release posts now use the narrative, prose-driven MLflow style (#2764)
  • [Bug fix] opencode-native carries the user config's model default into the synthesized config when no model is pinned (#2775)
  • [Feature] New sessions automatically get concise, useful titles generated by the agent already handling the conversation. (#2778)
  • [Bug fix] Forking a Claude Code session onto pi (or other CLIs) no longer fails to start with required_terminal_exited (#2780)
  • [Bug fix] Native Codex and Claude now resolve their CLI from common global install dirs and an OMNIGENT_CODEX_PATH / OMNIGENT_CLAUDE_PATH override when it isn't on the host daemon's PATH (#2788)
  • [Feature] Nightly benchmark report now includes server CPU% and RSS memory usage (mean/min/max) alongside latency metrics. (#2795)
  • [Bug fix] The changed-files panel now shows per-file line-change counts even when the list is served by the host (runner offline). (#2802)
  • [Bug fix] Harness readiness now finds CLIs installed in common global dirs (nvm/npm/homebrew) that aren't on the host daemon's PATH, matching what the launch resolves (#2805)
  • [UI / Bug fix / Feature] Config-file policies (declared via omni server -c) now appear in the admin Global Policies page as read-only entries labeled "Config". (#2807)
  • [Bug fix] Codex sessions now inherit global AGENTS.md instructions. (#2809)
  • [UI / Feature] Switching back to a recently-opened chat now renders instantly from cache instead of blanking and reloading over the network. (#2810)
  • [Bug fix] Allow the ACP prompt deadline to be configured without changing its default. (#2817)
  • [Feature] The Slack bot now handles tool approvals and questions inline — Approve/Deny (#2820)
  • [UI / Feature] The Share dialog now shows a QR code so you can open a session in the mobile app by scanning it with your phone. (#2824)
  • [Bug fix] Harness setup warnings now clear automatically without reconnecting the host. (#2828)
  • [UI / Feature] Android app shows a floating server switcher pill with a dropdown menu for quick server switching (#2829)
  • [Feature] Crash reports now show a calm, branded screen with a compact traceback and a one-tap prompt to file a pre-filled GitHub issue (#2841)
  • [UI / Bug fix] Parallel sub-agent dispatch now explains when to use distinct task titles instead of accidentally reusing and serializing one child session. (#2860)
  • [Bug fix] Fixed a context-window overflow on a live-streamed turn, leaking its harness process instead of ending the turn cleanly. (#2869)
  • [Bug fix] Fixed /model show (and list/status/current) bricking the session. (#2888)
  • [Bug fix] Clicking "Stop session" no longer shows a spurious "runner disconnected" error (#2903)
  • [UI / Bug fix] New-session Send button shows a spinner while the session is being created, instead of looking frozen (#2907)
  • [Feature / Breaking] Per-harness startup command/args overrides via a polymorphic harness: config key + OMNIGENT_<NAME>_PATH env-var standardization (legacy HARNESS_*_PATH deprecated, slated for v0.8.0 removal) (#2933)
  • [Bug fix] omnigent[memory] is restored as a backwards-compat alias for omnigent[hindsight] (the memory extra was dropped by #2605); it will be removed in 0.70. (#2938)
  • [Feature] OMNIGENT_SESSION_RENAME=on re-enables the automatic first-turn session rename (disabled by default) (#2944)

[v0.5.1] — 2026-07-10

  • [UI] The desktop Browser tab is now hidden on older desktop builds that don't support the embedded browser, instead of showing a tab that does nothing (#2393)

[v0.5.0] — 2026-07-10

  • [Bug fix] Messaging a long-idle session no longer risks the new turn being killed mid-flight by the idle reaper (#1834)
  • [UI / Feature] Introduce more secure sharing modes and the ability to toggle public chats on/off. (#1835)
  • [UI / Feature] Added: .ipynb notebooks render as read-only previews in the workspace file viewer (raw JSON still available via the source view) (#1848)
  • [Feature] OMNIGENT_OIDC_SKIP_EMAIL_VERIFICATION=1 lets OIDC logins through when the IdP omits the email_verified claim (e.g. standard-tier Okta with directory-provisioned users) (#1859)
  • [UI / Feature] User message bubbles now have a copy button, matching assistant responses (#1900)
  • [UI] Renamed the sidebar's "Chats" section to "Sessions" to match the "New session" button (#1903)
  • [UI / Bug fix] Brain-harness override (e.g. claude-sdk vs openai-agents) is now remembered across sessions per agent (#1904)
  • [UI / Bug fix] "Back to Omnigent" from Settings now returns you to the conversation you were viewing instead of the home page (#1905)
  • [Bug fix] Release notes now list only user-facing bug fixes and call out breaking changes in their own section (#1909)
  • [Test/CI] Auto-drafted docs now stage on a per-minor X.Y-docs branch and publish to the live site at release, instead of deploying on merge. (#1915)
  • [UI] Removed the collapse toggle from the Files panel "Working folder" header — the file list is always visible (#1916)
  • [UI / Bug fix] Opencode agents addressed as native-opencode now render with their native terminal UI instead of falling back to plain chat. (#1929)
  • [Bug fix / Chore] Fixed harness workers (claude, codex, etc.) failing to start when omnigent is launched from a macOS or Linux GUI client due to a stripped PATH. Fix now lives in the Electron launcher (web/electron/src/main.js) per reviewer guidance. (#1935)
  • [Feature] Child-session lookup by (agent, title) now filters server-side instead of fetching all children and scanning in Python. (#1944)
  • [Bug fix] Sandboxed claude-sdk harnesses now authenticate from an existing host Claude login (~/.claude/.credentials.json is bound into the sandbox). (#1946)
  • [Chore / Test/CI] Runner MCP servers are shared across matching agent specs and started lazily to reduce local memory use. (#1948)
  • [Bug fix] Fixed: resumed claude-native sessions no longer crash on compaction ("Cannot destructure property 'cumulativeDroppedTokens'") (#1957)
  • [UI / Feature] The Claude model picker now offers Fable and both Sonnet generations (Sonnet 5 and Sonnet 4.6) as separate selections (#1981)
  • [Bug fix] Stop rendering a false "terminal did not become ready" error when sending a message to Claude Code mid-turn (#2001)
  • [UI] [UI] The "Working…" indicator now stays visible for the whole turn and rotates through a few different labels. (#2006)
  • [Bug fix] Members page now shows a clear "not available in single-user mode" message instead of a confusing auth error when running without accounts or OIDC. (#2013)
  • [UI / Bug fix] Global Policies settings page now appears correctly in single-user/header auth mode instead of showing a "no permission" error. (#2017)
  • [Feature] intent_gate policy now prompts for user approval (ASK) instead of hard-blocking (DENY) tool calls that don't match the session's original intent. (#2024)
  • [UI / Bug fix] Submitting the Codex goal dialog no longer shifts the footer buttons — the loading spinner replaces the button label in place instead of widening the button (#2032)
  • [UI / Feature] Add a UI font size setting in Appearance to scale the interface (#2040)
  • [Bug fix] /compact on a claude-sdk agent with a pinned Anthropic model no longer 500s — the compaction summarizer was routing bare claude-* ids to OpenAI instead of Anthropic. (#2043)
  • [UI / Feature] Set a custom UI font family in Settings → Appearance (type any installed font; blank = system default). (#2047)
  • [UI / Bug fix] Fix the Appearance font-size input so you can clear and retype a value instead of it clamping mid-edit (#2053)
  • [Bug fix] Native Claude sessions no longer get stuck showing "Stop" after switching models in the terminal with /model (#2082)
  • [UI / Feature] The sidebar "Search" now opens the command palette (⌘K) to search sessions by title and chat content, with a keyboard-shortcut hint on hover (#2086)
  • [UI / Feature] Start a new session directly in an existing git worktree by picking it from the worktree field. (#2088)
  • [Bug fix] Stop rendering a false "terminal did not become ready" error when sending a message to Claude Code mid-turn with many subagents running (#2089)
  • [UI / Feature] Generate a unique worktree branch name from the new-session composer. (#2094)
  • [Feature] The harness capability bench now observes native harness tool calls (Tool (#2096)
  • [Bug fix] Report missing bubblewrap when building a web_fetch researcher instead of failing during spawn (#2097)
  • [UI / Feature] Sessions started in an existing git worktree now show the branch in the sidebar and can delete the worktree + branch from the session delete dialog. (#2098)
  • [Bug fix] Fixed OpenShell k8s managed sandboxes failing due to Landlock LSM denying /home/sandbox; changed home path to /sandbox (#2106)
  • [UI / Bug fix] The share dialog no longer overflows when a grantee's email is long — the name truncates and the domain stays visible. (#2108)
  • [Bug fix / Test/CI] Keep claude-native model, permission mode, and effort overrides stable across wrapped Claude Code restarts that preserve the settings sidecar. (#2116)
  • [Feature] Kubernetes sandbox runner Pods can now schedule on arm64 nodes: set sandbox.kubernetes.node_selector: {kubernetes.io/arch: arm64} (amd64 remains the default). (#2123)
  • [Feature / Test/CI] New official omnigent-server-kubernetes image ships the kubernetes sandbox provider SDK — the sandbox-runners overlay now works against published images, no custom build needed. (#2124)
  • [UI / Bug fix] codex-native sessions now show MCP server startup progress in the chat, name servers that failed or were cancelled, and Stop can abort a slow MCP startup (#2128)
  • [Bug fix] Host-spawned runners now inherit DATABRICKS_AUTH_STORAGE, so a runner authenticates against the same Databricks token store as the host (fixes a runner tunnel 401 when the store is selected via env var rather than ~/.databrickscfg). (#2132)
  • [UI / Feature] Set the code editor and terminal font size and family from Settings → Appearance (#2135)
  • [Bug fix] Intelligent routing now correctly routes claude sessions instead of leaving them (#2136)
  • [Bug fix] Fixed inbox approvals not resuming the gated tool call. (#2142)
  • [UI / Feature] Pick a color theme (Omnigent, Dracula, GitHub, Catppuccin, or Gruvbox) in Appearance settings, independent of light/dark mode. (#2147)
  • [UI / Feature] Choose a terminal theme (light or dark) independent of the app theme in Settings, Appearance (#2154)
  • [UI / Feature] Sessions shared with you now live in a dedicated "Shared with me" sidebar tab (multi-user servers only) (#2156)
  • [Feature] Tightened conversations.title DB column to NOT NULL; untitled conversations are now stored as '' instead of NULL. (#2158)
  • [Feature / Test/CI] Add a performance-benchmark harness for HTTP user journeys, with a seeded corpus, a SQLite+Postgres backend matrix, and a nightly workflow (uv run dev/benchmarks/omnigent/run.py) (#2159)
  • [Bug fix] Sub-agent hermes sessions no longer wake their parent orchestrator before the turn's final answer is mirrored into the transcript (#2161)
  • [UI / Feature] Session search now shows a preview of the matching message so you can see why a session matched, with the search term highlighted (#2162)
  • [Feature / Test/CI] Host runner start logs now include the conv_* conversation ID alongside the runner token and log path. (#2170)
  • [Bug fix] The harness capability bench now reports a real native Policy DENY verdict (#2171)
  • [UI / Bug fix] Cancel in the add-policy dialog now returns to the policy list instead of closing it (#2183)
  • [UI / Feature] Users can now edit the policy name in the Add Policy dialog before submitting. (#2196)
  • [Feature / Test/CI] Add a performance-benchmark harness for HTTP + full-turn user journeys (uv run dev/benchmarks/omnigent/run.py), with a seeded corpus and SQLite+Postgres backend matrix (#2202)
  • [UI / Bug fix] The new-session picker now remembers the host you last picked instead of resetting to the default. (#2218)
  • [Bug fix] Fixed the Hermes pre_tool_call hook double-gating Omnigent relay tools, which parked a (#2220)
  • [UI / Chore] Redesigned Appearance settings: separate Mode and Color theme sections, app-preview Mode tiles, and a color-theme dropdown. (#2225)
  • [UI / Feature] Added: auto-routing decisions now show as a collapsible card (model pill, tier, rationale, expandable raw verdict) matching the SmartRoutingCard style (#2246)
  • [Bug fix] Sessions shared with you no longer appear under "My sessions" when they belong to a project — they stay under "Shared with me" (#2249)
  • [Test/CI] Doc-sync site PRs are now titled after the documentation change instead of the source PR number. (#2250)
  • [UI / Bug fix] Stop-session dialog now shows the actual server error instead of a generic message. (#2252)
  • [UI / Bug fix] Project picker menu rows now align on the left and share a consistent height (#2260)
  • [Feature] The harness bench can now probe any registered harness by name — including the (#2265)
  • [UI / Feature] A default base branch can be set in Settings › Git to auto-fill the base when naming a new worktree branch (#2267)
  • [Feature] omnigent debug logs tails runner, server, or CLI diagnostic logs; --session scopes runner logs to a specific session across relaunches (#2273)
  • [Bug fix] omni run --harness acp:<slug> now launches a configured ACP agent instead of failing on the colon in the synthesized agent name. (#2280)
  • [UI / Bug fix] [UI] Fix iOS crash when granting camera or voice-dictation permission in the app (#2282)
  • [Test/CI] DELETE THIS WHOLE SECTION — CI-only change, not user-facing. (#2288)
  • [Bug fix / Feature] Fixed: intelligent routing now overrides any model the orchestrator specified in sys_session_send when the parent session has the routing toggle on (#2291)
  • [Bug fix] Fixed a crash when resuming a Claude-native session whose history contained a TaskOutput (or similar) result, so resume no longer times out with a terminal-not-ready error. (#2293)
  • [Test/CI] DELETE THIS WHOLE SECTION — CI-only change, not user-facing. (#2295)
  • [UI / Bug fix] "Select all" in bulk selection mode now only selects sessions in expanded sidebar sections, not hidden or archived ones. (#2311)
  • [Bug fix] Fix pi (and opencode policy) losing live web-UI updates on multi-instance deployments by sending their out-of-process callbacks to the same server instance as the runner. (#2328)
  • [Bug fix] Default policies created via the API (POST /v1/policies) now take effect on sessions. (#2333)
  • [Feature] omnidev dev pods now get their own isolated config.yaml (seeded from ~/.omnigent/config.yaml), so server-config edits while testing in a pod no longer touch your real config (#2360)
  • [Bug fix] Session search returns matched-content previews faster on large histories. (#2365)
  • [Feature / Docs / Test/CI] Harness Bench now measures Policy ALLOW and ASK through native CLI policy hooks. (#2370)
  • [Bug fix] Managed claude-native sessions against an Anthropic-compatible gateway (e.g. LiteLLM or Databricks) now pass through the gateway model and don't stall on Claude Code's custom-API-key menu. (#2371)

[v0.4.0] — 2026-07-03

Highlights and full notes: https://github.com/omnigent-ai/omnigent/releases/tag/v0.4.0

[v0.3.0] — 2026-06-26

Highlights and full notes: https://github.com/omnigent-ai/omnigent/releases/tag/v0.3.0

[v0.2.0] — 2026-06-19

Highlights and full notes: https://github.com/omnigent-ai/omnigent/releases/tag/v0.2.0

[v0.1.1] — 2026-06-16

Predates the automated changelog. See the Git history for v0.1.0..v0.1.1.

[v0.1.0] — 2026-06-13

First tagged release.