Skip to main content

GAIA v0.24.1 Release Notes

v0.24.0 was tagged, but a CI bug blocked its GitHub Release until npm already had that version published. v0.24.1 is identical content, republished under a version npm accepts.

Breaking Changes

  • Thirteen per-task agents were removed — analyst, blender, browser, code, doc-search, docker, docqa, emr, fileio, jira, routing, sd, summarize are now a SKILL.md on the flagship. Installing one by id fails; use gaia hub install gaia --trust and load the matching skill. (PR #2995)
  • The TUI control API dropped its hub-browser fields — view is now splash | preflight | chat; hub_tab, hub_tab_index, selected_agent_id, visible_agent_ids, filtering, can_return_to_hub are gone, replaced by blocker. Anyone driving the TUI over it needs to update. (PR #3120)
  • @tool(name=..., description=...) no longer works — the decorator rejects unrecognized keywords instead of discarding them silently. Use @tool(); name/description come from the function. (PR #3252)
  • gaia telegram start now requires --allowed-users, no opt-out — it used to start (and reply to anyone) without one. (PR #3306)
  • gaia api --host beyond loopback with no key refuses to start, and GAIA_API_KEY gates chat completions too. (PR #3612)

What’s New

  • gaia hub install gaia --trust finally installs and runs the flagship agent — the daemon had no sidecar entry for it, the installers didn’t ship its binary, and gaia init set up the wrong agent. (PRs #3031, #3146, #3330, #3125, #3120)
  • triage my inbox now works on the flagship agent — read-only, so mail and documents no longer need separate agents; sending and drafting stay on the standalone email agent for now. (PR #3331)
  • summarize this meeting: standup.mp4 now works — fully local, no PyTorch or gated downloads — a speaker-diarized transcript, a brief with decisions and action items, and follow-up Q&A with verbatim quotes. 94.1% word-level match against a WhisperX+pyannote reference, all speakers correctly identified. (PR #3597)
  • The agent draws pictures, orients itself, and its skills load themselves — “draw me a red bicycle” reaches the image tools; every task scans the project before acting; a skill matches your question instead of you naming it. (PRs #3073, #3405, #3010, #3023)
  • Every answer states whether it was checked, and --trace records the proof — the agent names what it ran and what passed instead of just claiming success; --trace in the TUI logs every tool call for replay. (PRs #3397, #3579)
  • The TUI takes the mouse and can go cloud — wheel-scroll and clickable links; point it at a local, Fireworks, or AMD Gateway model via Lemonade. (PRs #3699, #3006, #3672)
  • gaia lemonade embedded start runs your own Lemonade Server — no machine-wide installer. (PR #3121)
  • Mine your own Claude Code sessions for usage stats — a deterministic, LLM-free pipeline turns your ~/.claude/projects/ transcripts into tool-usage, failure, and cost reports. See the Session Analytics guide. (PRs #3111, #3782)

Security

  • Any web page you visited could drive GAIA’s local servers — a cross-origin request could start a tunnel, poison your RAG store, or send mail; a document link could reach cloud metadata or the daemon’s loopback API. Origin/Host checks are enforced everywhere now. (PRs #3366, #3612)
  • A Telegram bot with no allowlist replied to anyone (the documented default) — off-allowlist users are refused before a session or model call now; the bot’s tool surface is chat-only. (PR #3306)
  • Attaching a document could silently widen the agent’s read scope to its whole parent directory — the grant is the file itself now; reads gained a credential denylist, and writes refuse rc files, PowerShell profiles, and git hooks. (PR #3594)
  • A chat turn could plant system/permission rows into every future prompt — only onboarding/admin paths write them now. (PR #3614)

Bug Fixes

A selection of the user-visible fixes this release — the full list is in the changelog below.
  • The flagship agent’s core model floor now matches what can actually run it (PR #3055) — installs no longer point at a Lemonade version too old to serve the agent.
  • A one-shot /query run no longer leaks an agent process (PR #3079).
  • The npm sidecar no longer attaches to a foreign server (PR #3078) — it now verifies the server it finds is actually its own before using it.
  • A turn parked on a confirmation prompt no longer hangs when stdin closes (PR #3080) — the agent ends the turn instead of waiting forever.
  • Telegram’s background polling survives (PR #3272) — the adapter no longer silently stops receiving messages.
  • gaia uninstall --purge removes the embedded Lemonade runtime it installed (PR #3277) — previously a full purge left ~/.gaia/lemonade behind entirely; a live embedded daemon must be stopped first.
  • Outlook and Gmail search operators translate correctly for the email agent (PRs #3042, #3562, #3619) — a query that used to fail silently or match the wrong messages against Outlook’s Graph API now works or fails loudly.
  • RAG indexing honors a document’s actual success flag (PR #3678) — a failed index no longer gets reported as indexed at every call site that checked it.
  • Claude tool-call history survives across turns (PR #3410) — a multi-turn tool conversation no longer loses earlier tool results.
  • An ambiguous edit is refused instead of silently changing the first match (PR #3396) — edit_file asks for a more specific match rather than guessing which occurrence you meant.
  • A port collision between the MCP bridge, Agent UI, TUI, and Telegram is resolved (PR #3604) — the four no longer fight over the same default port.
  • Telegram reports unsupported media types instead of failing silently (PR #3263).
  • GET /health reports real component status (PR #2601) — it used to report ok even with a dead Lemonade backend; it now reports LLM and RAG status too.
  • A .bak backup file could be imported as the module it backed up (PR #3748) — .bak now goes last in the filename, so pytest no longer tries to collect a test file’s own backup.
  • A PowerShell sink could execute untrusted text instead of just displaying it (PR #3359) — an apostrophe in an indexed document name, or in a notify_desktop message, ran as code; both now pass values out-of-band.
  • --scopes could request an OAuth scope outside a connector’s declared ceiling (PR #3247) — the CLI’s verbatim-scopes path skipped the check the Agent UI already had; both now enforce it.
  • The flagship agent always has its edit tools now (PR #3755) — a coding request used to get them only if the model happened to fetch them itself; some models looped instead.
  • Tool history no longer loses which file a large write or edit touched (PR #3754) — arguments were truncated by cutting the serialized JSON mid-string; large args are now stored as valid JSON.
  • A suspended or over-limit cloud account gets an actionable error, not “try again” (PR #3767) — retrying a 402/412 from a cloud provider could never have worked.

Contributors

Thanks to the community members who contributed to this release:
  • @mikemikimike — Telegram background-polling and media-handling fixes, embedded-Lemonade uninstall cleanup, and TUI init-process reaping (PRs #3272, #3277, #3271)
  • @itomek — custom-agent guide fixes and CI reliability work, including provisioning the dev install in Claude Code cloud sessions (PRs #3317, #3033)
  • @Hashim1999164 — hub agent pages showing the GAIA install path alongside npm, structured JSON for unexpected email API errors, and Outlook Graph query-escaping fixes (PRs #3151, #3046, #3021)
  • @AmirF194 — Outlook/Gmail search-operator translation for the email agent (PRs #3042, #3562, #3619)
  • @sujikathir — the /health component-status endpoint and a Claude tool-history preservation fix (PRs #2601, #3410)
  • @SIBTAIN-ASAD — Telegram unsupported-media-type reporting and test coverage (PR #3263)
  • @wangzhengzhuo05 — MCP/Telegram/TUI port-collision fix across the bridge, Agent UI, and daemon (PR #3604)
  • @amd-pworfolk — stopped a non-LLM model’s ctx_size from leaking into get_status() (PR #3595)

Full Changelog

252 commits since v0.23.0: Full Changelog: v0.23.0…v0.24.1