Repository navigation
v0.25.0-rc2
Pre-release
Pre-release
·
101 commits
to main
since this release
Important
Release candidate for v0.25.0. A pre-release for testing before the final ships. Installers and package managers keep offering the last final release unless you ask for this one.
GAIA v0.25.0 Release Notes
Breaking Changes
gaia chatruns the flagship GAIA agent, the same agent as the TUI and Agent UI, instead of the retired ChatAgent.gaia chat -q "…"queries it once. (PR #4520)gaia talktranscribes and speaks through Lemonade — it uses Lemonade's Whisper andkokoro-v1, and stops with the reason if Lemonade is down. The[audio]extra is gone;pip install amd-gaia[audio]only warns. (PR #4665)- The Agent UI runs only the GAIA agent — the Agent Hub home, agent picker, and custom-agent export/import are removed from the UI. The CLI and eval harness can still run other agents. (PR #4509)
- The retired nomic embedder is removed — memory saved with it is re-embedded on first start. (PR #4489)
- Indexed documents are re-indexed once — the document cache is now keyed on chunking settings, so the first query after upgrading rebuilds it. (PR #4624)
- A skill that asks for more than its tier allows no longer loads — the permission ceiling is checked at every load, so a skill already on disk that exceeds it is refused with the reason. (PR #4849)
What's New
- A larger local model where the GPU holds it —
gaia initpicks Qwen3.6-35B-A3B on a 64 GB+ Strix Halo or a 32 GB GPU and keeps Gemma-4-E4B elsewhere, with each context window sized to available memory. Qwen3.8 Flash Next is opt-in on 128 GB Strix Halo. (PRs #4479, #4670, #4671, #4658, #4655) - The Agent UI opens straight to a chat and sets itself up — a fresh install runs the same setup steps as the TUI in the window, with provider, key and model settings, permission modes, and revocable "always allow" grants. (PR #4509)
- A much smaller install — PyTorch, transformers and accelerate are gone from the core,
[ui]and[talk]installs; the desktop app's Python environment drops from ~0.9 GB to ~0.1 GB on Windows. (PRs #4666, #4621, #4665) - One Windows installer for the desktop app and the terminal, with a GAIA Windows Terminal profile. (PRs #4720, #4707)
- A "no" holds — a declined action isn't retried through another tool; the agent asks again with the exact command. The TUI gains Shift+Tab permission modes. (PRs #4460, #4461)
- Answers are checked against what the tools actually did — the agent looks at files you name before answering about them, and a short plain-English note appears only when work isn't confirmed. (PRs #4532, #4501, #4508)
- One shell session — commands share a persistent shell, risky ones ask instead of being refused, and "full access" is one setting everywhere. (PR #4408)
- Memory surfaces what's relevant to each request, with its age, keeps what fixed a failure as a lesson for that workspace, and extracts after the answer instead of before it. (PRs #4061, #4066, #4406)
gaia.logstays bounded — it rotates at 10 MB with three backups (GAIA_LOG_MAX_MB,GAIA_LOG_BACKUPS). (PRs #4668, #4760)- Child processes get a trimmed environment — shell, MCP and skill children no longer inherit GAIA's internal credentials;
GAIA_NO_DOTENVskips loading.env. (PRs #4635, #4659) - Every file tool checks the allowed-folders rule, and paths inside an inline shell script are checked one by one. (PRs #4656, #4758)
Bug Fixes
A selection of the user-visible fixes; the full list is in the changelog below.
- Local Qwen models no longer loop on repeated tool calls — they run with their model card's sampling instead of near-greedy settings. (PR #4655)
- Qwen3.6 runs on a Strix Halo with an older AMD driver — it used to crash on its first token, so
gaia initfailed; GAIA now turns off the Vulkan path that crashes on those drivers only, and newer drivers keep the faster path. (PR #4674) - A long PDF no longer hangs or times out while indexing — big documents index in the background, and PDFs that only carry owner-password restrictions now index. (PRs #4754, #4679, #4734)
- Document answers cite the right document and page, and every chunk is embedded whole instead of its first 1,200 characters. (PRs #4688, #4723)
gaia initfails when model verification fails, shows downloads live, and no longer hangs while Lemonade hashes a large model. (PRs #4620, #4564, #4673)gaia initadds a profile's extras without reinstalling GAIA, which failed on Windows whilegaia.exewas running. (PR #4672)- Every SDK and CLI entry point starts GAIA's own Lemonade, and every call goes to the resolved URL with its API key. (PRs #4657, #4627)
- Local chat stays cached across turns — the system prompt is fixed and side requests no longer evict the conversation. (PRs #4698, #4543)
- A cloud model selection never preloads a local model, and cloud models no longer get llama.cpp-only fields. (PRs #4757, #4709)
- The Agent UI stops claiming "100% local" while chat goes to a cloud model, and the chat header names the session's real model. (PRs #4711, #4550)
- Enter can't approve a permission prompt, and prompts wait 10 minutes before timing out. (PRs #4700, #4699)
- Stopping a run keeps the turn and its steps visible. (PR #4743)
- A file edit keeps the file's line endings — a one-line edit on Windows used to rewrite every line ending, so a small change showed up as the whole file changed. (PR #4864)
- A broken agent install is reported as broken, not as missing — the error names both package versions and the real import error, and suggests a reinstall that works. (PR #4588)
- A meeting or document summary is never cut off mid-sentence — a thinking model used to spend the summary's output budget reasoning, so a long meeting lost its second half. (PR #4827)
- "What can you do?" gets an answer instead of an attempt to generate an image of the question. (PR #4809)
- Writes and approved edits can't reach credential folders (
~/.ssh,~/.aws,~/.kubeand others), and shell option values and script arguments get the same path check as plain paths. (PRs #4848, #4847) gaia connectors connect google --grant-agent installed:gaiaworks — it used to fail with no sign-in link for the shipped agent; it now asks for read-only Gmail and grants exactly that. (PR #4859)- A "no" to creating a folder also covers writing into it — GAIA no longer asks again to create the same folder a different way. (PR #4857)
gaia skill importruns the same checks as a hub install — https only, the audit, the permission ceiling, and an explicit opt-in for skills that ship code. (PR #4849)- Memory off and private chats apply to scheduled and background runs too. (PRs #4842, #4821)
- Memory stops false apologies and reusing deleted values, saves "remember this" requests, and skips loading the embedder when memory is off. (PRs #4708, #4756)
- A reply cut off by the token limit is continued instead of ending mid-sentence, and a tool call cut off at the output cap is retried shorter. (PRs #4054, #4556)
- The TUI remembers the chosen model across restarts and agent-process restarts. (PRs #4497, #4710)
gaia uninstall --purgeremoves installer binaries, PATH edits and daemon state. (PR #4413)
Contributors
Thanks to the community members who contributed to this release:
- @itomek — the flagship's browser and tool picker, one shell session, memory extraction off the answer path, stale tool-result eviction, the TUI's sourced Fireworks rankings, and
--purgecleanup (PRs #4407, #4408, #4406, #4465, #4414, #4413) - @mikemikimike — chained shell command timeouts, bundled skills in frozen builds, and sidecar cleanup reporting (PRs #4463, #4467, #4419)
- @Hashim1999164 — honoring
GAIA_HOMEfor cache, chat and index paths (PR #4381) - @krtadev —
~expansion in file and document tool paths (PR #4576) - @aksh8b — telling a broken agent install apart from a missing one, with a reinstall hint that works (PR #4588)
- @Dev-next-gen — numeric prerelease ordering in the hub (PR #4517)
- @vianmangal — recording denied tool calls as unsuccessful in memory (PR #4412)
- @GaetanVDB07 — links to upstream credential setup guides for connectors (PR #4669)
- @rradjabi — moving self-hosted CI jobs to the xsj-dispatch runner pool (PR #4534)
Full Changelog
300 commits since v0.24.1:
Expand full changelog (300 commits)
c5c9141ba— fix(tools): stop file edits rewriting every line ending in the file (#4864)f2e55aff2— fix(agents): stop saying a broken agent install is not installed (#4588)9ce659803— fix(lemonade): turn off Vulkan coopmat on Strix Halo drivers that crash Qwen3.6 (#4674)1021f3b74— fix(connectors): derive the flagship's mail scopes for --grant-agent installed:gaia (#4859)8a783b6eb— ci(eval): make the code retrieval workflow valid so it can run (#4858)be1e0df20— test(agent): give the prompt-timeout test room for a slow runner (#4861)e0fd6717f— fix(agent): a "no" to creating a folder also covers writing into it (#4857)8c26439c9— feat(website): lead with the agent factory, with a way in for users and builders (#4851)5d9308ccf— fix(skills): imports go through the same checks as hub installs (#4849)a7d77a8fb— fix(security): extend protected-path checks to writes and approved edits (#4848)3798ac97d— fix(shell): tighten path checks for inline scripts and option values (#4847)c4daa37ae— feat(release): publish release candidates from vX.Y.Z-rcN tags (#4856)1fadb48c2— docs(install): state the real first-launch download (~6 GB, ~23 GB on Ryzen AI Max) (#4855)fa5f96ae4— docs: remove obsolete plans and stale per-task-agent references (#4839)5f71e4e0d— refactor(agents): remove the Agent Builder (#4843)693c07244— fix(ui): memory off and private chats apply to background runs too (#4842)5c1fc112e— chore(deps): bump the root-npm-dependencies group across 1 directory with 5 updates (#4703)11adf184a— chore(deps-dev): bump the agent-ui-dependencies group across 1 directory with 4 updates (#4837)0dca5fac9— fix(ui): stop silent failures in memory, schedules, and DB upgrades (#4821)78fef2895— fix: fail-loud fixes in scratchpad, code index, SD, VLM extraction, skill lock (#4831)c33bd94df— test: fix two stale expectations failing main's chat and unit jobs (#4844)c40076bd1— fix(webui): show newly indexed documents in the chat, and drop dead code (#4810)b44831903— fix(agent): stop forcing an image when an answer mentions image generation (#4809)9dc6b5d9a— fix(rag): a document summary is never cut off mid-sentence (#4827)f4e5c0047— test: cover the Stop marker on the wire; make five tests machine-independent (#4794)f3e1a7acf— docs: release sweep fixes (connectors steps, gaia email CLI, Download button) (#4767)83f111648— ci: run every workflow on Node 22 (#4793)a7f577c7f— fix(webui): a deleted memory leaves every dashboard panel, not just the table (#4765)30dde5559— docs(install): correct first-launch model, minimal size and app path (#4764)0be3a3502— fix(webui): the message box stays one line tall on first launch (#4762)e1124bb1b— fix(webui): keep a stopped turn visible with its steps (#4743)5abe45099— fix(tests): add confirmation_timed_out to the turn-metrics _SlowHuman double3b3f8cc70— fix(webui): memory dashboard fits its panel and confirms deletes (#4717)a6dc50272— fix(ui): plain-language path cards, live phase status, empty-stat dash (#4718)8e8a55253— fix(ui): keep an answer's first word in its paragraph; Esc twice denies (#4712)375abe5ad— fix(ui): keep top banners clear of the floating sidebar button (#4755)6eab87427— feat(webui): one simple chat app for the GAIA agent, with first-run setup (#4509)bab941e13— fix(shell): check the paths inside an inline script, not the script as a path (#4758)3c19dd788— fix(webui): the chat header names the session's model (#4550)763e7a69e— fix(agent): GAIA's own checks no longer trip the after-answer scope guard (#4540)ba9e6d1b6— fix(logging): weigh log records in bytes so gaia.log holds its cap on Windows (#4760)5644695a1— fix(tui): proportionate permission prompts, Shift+Tab modes, timeouts as timeouts (#4461)e8af2d32c— fix(tools): every file tool checks the allowed-folders rule (#4656)c168dffd1— test(eval): stage the eval fixtures once per file, not six times (#4759)067cc6ecd— fix(agent): a declined action is not run another way (#4460)dc6a8c56b— fix(lemonade): never preload a local chat model for a cloud selection (#4757)5c36abb2c— docs(email): the mail guide describes one agent — the flagship (#4530)665e3ec01— fix(rag): stop big documents from hanging index_document until timeout (#4754)cea8a86a1— test(eval): validate every flagship capability at four tiers (#4472)fcfeadc16— fix(gaia): answer everyday questions in three plain sentences (#4753)58325b45a— fix(memory): don't load the embedder when memory is off (#4756)61df81c68— test(eval): point the file scenarios at a folder the agent may write to (#4752)f69287048— test(ui): cover a document attached to a running chat (#4751)285c67a64— test(memory): seed the prompt-growth test in one transaction (#4750)30f257fdf— feat(eval): RAG retrieval, answer-accuracy and scale benchmark (#4733)645d41499— fix(agent): keep the answer a model sends alongside its last tool call (#4745)38e7d2eb7— feat(eval): code search benchmark on real repositories (#4742)025a7b68f— fix(rag): index PDFs that only carry owner-password restrictions (#4734)22e66b24b— fix(agent): offer the shell when the user asks for it by name (#4728)88728f83b— fix(agent): a file you allow is usable for document Q&A in that chat (#4726)a1dbf09ac— fix(agent): keep the read-back check out of the user's answer (#4719)64a43e891— fix(agent): stop the completion check discarding correct code walkthroughs (#4725)b2a0df88d— fix(ui): the Agent UI remembers by default, and says why when it doesn't (#4715)bf72c85c2— feat(installer): one Windows installer for the desktop app and the terminal (#4720)f8418fd2d— fix(memory): embed dashboard-saved memories; run profile inference locally (#4716)fa44742ef— fix(eval): point honesty_no_fabricated_triage at a repo gh cannot reach (#4722)5472194cf— fix(rag): embed every chunk whole instead of its first 1,200 chars (#4723)b37a55ec2— fix(ci): run test_sd_rule_gating.py in the chat-wheel lane454754566— fix(agent): check answers against what the turn's tools actually did (#4532)b5f86655e— fix(agent): look at named files before answering about them (#4501)20c14f34a— fix(memory): stop false apologies, deleted-value reuse, and unsaved 'remember' (#4708)69c86c962— fix(agent): a tool call cut off at the output cap is retried with shorter arguments (#4556)4c3a9a4cb— fix(gaia): offer the flagship every tool on every turn, as the Agent UI does (#4554)32a5e2c22— test: restore the global tool registry around every test (#4702)7bbb71af4— feat(agent): the project map says which dependencies are missing and where the agent may work (#4537)26fdff83f— fix(ui): stop claiming "100% local" while chat goes to a cloud model (#4711)cd129bd40— feat(installer): GAIA Windows Terminal profile with IBM Plex Mono (#4707)fad0d3be4— fix(agent): tell the flagship its working directory outside a project (#4546)1c1518932— fix(tui): keep the /model choice when the agent process restarts (#4710)8790d772a— fix(llm): stop sending llama.cpp's id_slot to cloud models (#4709)d868f2b6b— chore(deps): bump anthropics/claude-code-action from 1.0.235 to 1.0.240 in the github-actions group (#4705)d8e95187c— feat(agent): plain-English verification note, shown only when work isn't confirmed (#4508)82e294ecd— feat(tools): a Literal-typed tool argument is sent as a JSON-schema enum (#4575)3a6acc83f— fix(chat): only teach image generation when the session has it (#4574)9d01f582a— feat(models): offer Qwen3.8 Flash Next as an opt-in on 128 GB Strix Halo (#4658)36dbe0c13— ci(unit): Windows and macOS unit jobs run every test and can fail the build (#4691)e0ed41db6— fix(agent): keep the system prompt fixed so local turns stay cached (#4698)7a2bc39e6— fix(webui): Enter can't approve a permission prompt; countdown follows the backend (#4700)2ac88a63f— fix(ui): stopping an email relay on Windows unblocks it at once (#4690)5911c7414— test(lemonade): keep mocked client tests off the developer's own Lemonade (#4694)fb70c1989— test(eval): run a CI eval lane locally; stress corpus for hostile files (#4697)688d04c10— fix(tui): the live line names what the model is doing, not "Getting started" (#4689)4b718245c— fix(agent): a declined write is a finished answer, not unfinished work (#4693)7ca949e62— fix(rag): a document is never cited with another document's page (#4688)64da3ea23— fix(ui): first-run setup downloads the model chat will actually use (#4692)573887300— fix(ui): permission prompts wait 10 minutes and denials name a real remedy (#4699)8776c09ac— fix(installer): gaia init on Windows keeps the PATH it started with (#4695)baeaeae8a— fix(memory): learned skill changes saved in one clock tick keep their order (#4696)7f31fdd49— feat(models): make Qwen3.6-35B-A3B the local default where a GPU holds it (#4479)c7a3fb044— fix(memory): turn thinking off for memory's short JSON side calls (#4687)a9d8689f7— fix(data): analyze_data_file matches column names in any case (#4685)0264c157d— fix(rag): unindexed large PDF no longer times out and indexes twice (#4679)f5a627094— test(lemonade): run the mocked client tests in CI and fix the six that rotted (#4681)6b2490472— test(chat): run ChatAgent indexing/retrieval tests offline in CI (#4683)eef7bdf70— fix(tools): read UTF-16 text as text and show search hits on long lines (#4686)f010eb71c— fix(gaia-agent): bundle the Anthropic client in the frozen binary (#4682)4d8069e8c— fix(email-agent): bundle faiss in the frozen binary (#4684)ac605391f— fix(tests): match pip-extras install assertions to gaia_extra_requirements7f1e0aaed— perf(llm): local chat model keeps the conversation cached across side requests (#4543)42b5de30b— fix(llm): load local chat models with one llama.cpp slot on any Lemonade (#4678)3faa7f561— fix(init): pass a thinking model's smoke test, and find models under HF_HOME (#4676)279bf6329— test(cli): give the exit-code stub agent the session-reset hook (#4675)e8bccfcfe— fix(init): don't hang up on a large model while Lemonade hashes it (#4673)8ce740997— fix(init): add a profile's extras without reinstalling GAIA itself (#4672)a5e41279d— docs(connectors): link upstream credential setup guides (#4669)89d4061b9— fix(models): size a Windows Strix Halo iGPU from its driver, so it gets Qwen3.6 (#4671)6ffc75287— fix(llm): size each model's context to the model, not the device profile (#4670)1c8d9eaec— fix(llm): run local Qwen models with their model card's sampling (#4655)1769af212— fix(cli): gaia chat runs the flagship GaiaAgent (#4520)341120717— fix(deps): drop PyTorch from the [ui] extra (#4666)68bb8ea54— fix(eval): the SWE-bench instance cache no longer holds the gold patch (#4559)733659142— test: keep every test off the developer's real ~/.gaia config (#4667)c4a5c427d— test: clear the Windows-only failures behind the smoke job's first stop (#4585)d1cc07723— fix(logger): cap gaia.log size safely across GAIA processes (#4668)8fdbac078— fix(talk): transcribe and speak through Lemonade, drop local Whisper/Kokoro (#4665)1462b8bf8— fix(tests): use an OS-portable absolute path in the dev-gate fixtureea736a235— docs(claude): replace a baseline from the nightly, not --save-baseline (#4664)71fec08e9— ci(unit): give the macOS and Windows smoke jobs time to finish (#4580)53e6929d5— fix(init): gaia init fails when model verification fails (#4620)5c9381ec9— fix(installer): install and suggest packages that work on the installer's venv (#4617)1440c9ed0— fix(sdk): give reasoning models room to answer in the Agent SDK tests (#4616)4246c7836— fix(gaia): stop startup on an undeclared GAIA_SKILL_SET (#4619)5f8e36350— fix: surface failures GAIA was hiding and drop dead code (#4618)418dc8dbb— fix(rag): resolve the exact indexed file instead of the first substring hit (#4613)93e0f4bc3— ci: make the nightly drafter SIGPIPE-safe and test the Python 3.10 floor (#4615)c19e7dfbe— fix(cli): exit non-zero when gaia chat --query or gaia stats fails (#4612)1c94ebca1— docs: correct the stale setup facts a new user hits first (#4614)02d6a6657— fix(deps): drop transformers and accelerate from the core install (#4621)64a40d0cf— fix(lemonade): start GAIA's own Lemonade from every SDK and CLI entry point (#4657)4b7192722— fix: programs GAIA starts for skills and tools get the trimmed environment (#4659)32e4ffae7— fix(audio): importing the Whisper ASR module no longer loads torch (#4662)fa096f468— fix(memory): index every embedded memory, not just the top 100 (#4653)5656dc94b— fix(agent): the loop guard catches a short cycle of repeated calls (#4652)a85f8cfbe— test(gaia): pin the flagship's index root to _code_search_start (#4663)85e2ede65— test(eval): commit the first flagship scenario baseline (#4629)eb429a3df— fix(eval): run memory scenarios with memory actually switched on (#4631)e38f0f77a— test(ci): stop green runs that hide skipped coverage (#4623)59fcf3608— fix(llm): send every Lemonade call to the resolved URL, with its API key (#4627)7ce29bf22— docs(gaia): document the /query body and commit the sidecar OpenAPI (#4622)787e57ae8— fix(ui): Agent UI status reports its own probe failures (#4628)f8cc0ad43— fix(rag): key the document cache on chunking settings (#4624)6c5de67d7— chore: remove leftovers from the deleted per-task agents and demos (#4626)1903fdc92— test: ratchet hard-coded GAIA home paths so the count can only shrink (#4625)9ed151b9b— ci: stop the Claude audits failing on their own plumbing (#4630)9e29a8e1f— fix(eval): run the github-triage scenarios against the fake gh, not the runner's (#4636)2c9bd0218— chore(review): keep the review bot's instructions in sync with the repo (#4634)a2f125e4a— fix(llm): a Lemonade server below the version floor is actually reported (#4632)4176d8682— fix: shell and MCP children drop GAIA internal credentials; add GAIA_NO_DOTENV (#4635)9ac4cb87f— fix(eval): gh stand-ins answer the sign-in check github-triage runs first (#4633)f4f409a2a— docs(skills): correct stale agents, commands and claims in skill files (#4640)6620d5d54— fix(eval): give gaia_* scenarios their staged files, keep answers out of reach (#4641)427ab8f14— ci(init): run gaia init from a cold state on Strix Halo hardware (#4639)a699b25ba— ci(sd): fail the SD lane when init or the SD server fails (#4637)a3127cdab— ci(heartbeat): monitor the xsj-dispatch pool, not fixed runner names (#4638)6c9d2f597— docs(skills): add pr-backlog-triage, the parallel-subagent PR audit pattern595e86f7b— fix(agent): a scratchpad table the turn built stays in the request's scope (#4650)3b90366c8— fix(tests): match the flagship's code-search index-root pin to #4647 (#4661)a5786ee4e— fix(chat): stop abandoning request_user_input before the user can answer (#4645)b4113943b— fix(skills): load the coding skill where only python is on PATH (#4643)3cbfcd096— fix(memory): warn when a memory is saved without a search vector (#4646)638a89ce0— fix(rag): summarize each section on its own, and stop when abandoned (#4648)3f28709ed— fix(code-index): stop an abandoned index build instead of racing the next one (#4644)e7e5ad279— fix(tools): expand ~ in the data, file-info, browse and grep tools (#4642)26545d552— fix(gaia): start code search in a folder the chat can reach (#4647)731950926— ci: remove workflows nothing runs (#4651)77743ea0a— ci(swebench): report tokens and estimated cost in the job summary (#4649)4a7595338— fix(lemonade): stop telling gaia init users Lemonade is not installed (#4572)cb588159d— fix(agent): a file saved where the user said is not reported missing (#4568)27e66cecc— fix(installer): stop warning Windows users about a UAC prompt that never comes (#4577)23f8687a4— fix(tools): expand ~ in file and document tool paths (#4576)40aef707f— fix(init): show model downloads live and say why one failed (#4564)191ba6bbd— docs(website): say which tool calls ask first, not every one (#4563)162c645b6— feat(tui): a fresh session opens on a few things to try (#4578)c8a226356— fix(ui): onboarding says Google needs setup, not which env vars to set (#4573)3d72d3cbb— fix(tools): a folder listing says "1 file", not "1 files" (#4567)23acda6c8— fix(lemonade): probe a pid by the real OS, not platform.system() (#4570)1278382c9— fix(eval): point the judge's Agent UI tools at --backend, not port 4200 (#4581)3c074ba2c— feat(security): ask before denying a path outside the session's scope (#4579)2fe7cbf14— fix(tools): find_files finds a file by the words in its name (#4569)a6c9c18b7— perf(lemonade): run the embedder on CPU instead of slowing every model (#4512)4e4e04dee— fix(eval): stop a task's checkout replacing packages GAIA imports (#4515)e0c605d31— ci(eval): stage the gaia_mcp stub servers in the flagship scenario lanes (#4506)842d0147d— fix(ci): unbreak the Windows and macOS unit-test smoke jobs on every PR (#4562)7ff8642fb— fix(eval): keep the host's installed packages out of SWE-bench runs (#4561)e55a313ba— chore(deps): bump Lemonade Server to v2026.40.0 (#4541)c76002a28— fix(tools): writing Python that will not parse says so in the write's result (#4558)d6869d35b— fix(tools): a spreadsheet's header is found below its title rows (#4560)15a2c9bc7— fix(tui): Python runners and CLI setup get honest confirmation badges (#4542)e737783b9— fix(eval): a full-access run lifts the shell guardrails, as Claude Code's does (#4555)2f5de5b68— fix(tui): a one-step turn's stats read '1 step · 1 tool' (#4544)963374b6e— fix(webui): reloading a chat's link reopens that chat (#4551)a66429b65— fix(webui): hide the no-op 'Verification: unverified' line under chat answers (#4549)1aeddb7c3— fix(gaia): /model lists only models that chat (#4547)63fda4028— feat(agent): a long tool call shows its progress while it streams (#4557)8113e868c— fix(ui): a cloud model is never reported as having too small a context (#4548)0e3020bcb— fix(tools): a data summary says per-category totals need group_by (#4545)1fe1cf577— test(lemonade): assert what the foreign-port refusal guarantees (#4553)af5fd0f29— test(daemon): expect taskkill in the Windows stray-process error (#4552)585578b95— fix(eval,agent): one eval at a time on Windows; keep the PC awake while GAIA works (#4511)34362512c— fix(filesystem): stop re-indexing unchanged folders on Windows (#4504)4b2a629e8— fix(daemon): keep the daemon inside GAIA_HOME (#4513)315fac21a— test(eval): stage the MCP stub around gaia_mcp only, and clean it up (#4507)b350a99ef— fix(tui): stop the AI provider screen reporting faults that aren't there (#4505)67be7ebe7— fix(ui): stop the chat pre-flight evicting models every turn (#4510)e9d2bb9e7— fix(eval): grade SWE-bench from Linux when the host is Windows (#4521)9fe14e7c9— fix(shell): keep backslashes in a Windows cd target (#4518)1fe8255ea— fix(eval): stop counting URL test data as internet use (#4519)1da1e7cb0— fix(cli): keep gaia chat stdout to the answer (#4522)f26b29b36— feat(eval): record each model call's latency and prefill/decode timing (#4514)8eee006fa— feat(tools): read_file reads by line range (#4525)86d5c0282— fix(llm): stop forcing temperature 0.1 on cloud reasoning models (#4524)41db56875— fix(hub): order prereleases numerically and ignore build metadata (#4517)a0f36b39a— perf(agent): build the code index on first search, not at task start (#4538)f88d364ea— feat(tools): an edit to a Python function lists the project code it reaches (#4535)4845714ac— fix(shell): accept cmd.exe's 2>nul and cd /d (#4526)8ae15a6ad— fix(agent): count shell failure streaks per program, not per tool (#4527)e9198d1bc— feat(eval): pick a seeded SWE-bench sample with --sample N (#4529)da2d3a729— feat(agent): a failed call carries what the task has already learned (#4536)f79946b98— fix(shell): point a refused python -c at run_python (#4528)c335efb6f— ci(eval): run the flagship on fixed SWE-bench subsets on PRs and nightly (#4539)6003c7dd2— ci: move self-hosted jobs to the xsj-dispatch runner pool (#4534)d4bb243a8— fix(lint): suppress the abstract-method false positive on two intentional mixinsc5df3128f— fix(agent): end the turn when the request is done (#4480)675b5222a— test(eval): gaia_email — offline scenarios for the flagship's mailbox tools (#4496)a6c09abca— fix(tui): remember the chosen model and restore it on the next launch (#4497)011588ff7— fix(windows): stop treating a null stdin as a person at a terminal (#4499)313d02e1f— fix(agent): catch a test claim that follows advice in a heading (#4500)30b9fe607— fix(eval): handshake MCP servers in preflight; stop on repeated INFRA_ERROR (#4498)f76ff0d9d— fix(tui): display fixes across chat and secondary screens (#4494)5200f5ba8— test(eval): add gaia_mcp scenarios backed by a stub MCP server (#4481)4222072b4— test(eval): add CI-safe gaia_media scenarios for transcription and vision (#4482)65a775678— fix(lemonade): start Lemonade with the Vulkan coopmat workaround and say why memory failed (#4487)230addd29— fix(embeddings): remove the retired nomic embedder; re-embed legacy memory (#4489)016191e60— feat(tui): get the model ready before the chat opens (#4488)234d6daa3— fix(tui): hide the "still working" hint while a prompt waits on the user (#4493)f295bdc6c— fix(providers): keep a Fireworks/AMD key across TUI instances and restarts (#4485)0bce786cb— docs(eval): correct eval docs that contradict the code (#4483)393dfb894— test(eval): add gaia_voice scenarios for how the agent talks (#4486)1b972a7a9— fix(tui): one short row per step, drag-select, and resize-safe frames (#4457)06a7d7cd3— fix(tui): first-run setup as steps; "ready" only once the models load (#4459)4e38c4ffb— feat(gaia): a browser, a smaller picker, and a fast path — the flagship's tool surface (#4407)f6a1d326e— fix(lemonade): keep cloud providers across embedded restarts (#4469)34de16194— ci(eval): measure gaia_* lanes as intended and gate nightly suites on repeated runs (#4470)18ed19878— docs(plans): eval design & hillclimbing plan (#4478)b02b1bbf5— Fix timeouts for chained shell commands (#4463)a4659a426— fix(eval): make the gh stand-in answer argv calls on Windows (#4458)4adb360ce— docs(plans): adaptive recovery — stop, ask and remember when a tool reports a blocker (#4471)fdfd44e93— fix(gaia): avoid self-shadowing bundled skills in frozen builds (#4467)df799e24b— fix(test): stop the disconnect race in test_client_disconnect_cancels_the_agent (#4421)c54ebdf0b— feat(gaia): add developer-only coding-agent MCP handoffs (#3911)4d883aa3a— fix(agent): stop /model calling a cloud model local in the switch message (#4365)86fb455b1— feat(agent): evict stale tool results from the sent context, price-gated (#4465)f4924e35a— fix(email): stop mail search settling for the wrong messages (#4159)2c21f486e— Honor GAIA_HOME for cache chat and index write paths (#4381)cad93d0fc— fix(npm): report failed sidecar cleanup (#4419)58e9bfa3f— fix(shell): full access runs anything inside the workspace, heredocs included (#3995)9a3054455— feat(tui): show the sourced measurement behind each ranked Fireworks pick (#4414)cb92072bf— fix(uninstall): --purge removes installer binaries, PATH edits and daemon state (#4413)296c91652— fix(agent): resolve symlinked directories when keying write evidence on Windows (#4417)83e53b7f3— ci(unit): give the Linux unit-test job a 45-minute budget322cb9f28— test(cli): drop 7 stale entries from the removed-Lemonade-CLI pending listc064e5e8a— docs(cli): name the swebench capture flag --no-evaluate (#4418)cd46ce73b— docs(cli): document gaia eval tasks swebench (#4416)36fad14a7— fix(ui): label the shell-session and CLI-setup tools in the sidecar relay6f9383fec— fix(agent): restore run_python's tool-redirect guidance, refresh doc-profile pinsff1e216ee— fix(agent): restore single-period punctuation on the Lemonade start hint21b1239f6— chore(deps-dev): bump the agent-ui-dependencies group across 1 directory with 5 updates (#4415)c1bb8a18c— fix(tui): stop treating leftover config.json as proof of a working install (#3870)722f82191— fix(connectors): persist the scopes Google actually granted on reconnect (#3865)cb50e77ce— fix(email): make --trace write a real trace on the daemon-relay path (#3346)63c6915f7— fix(email): stop detect_calendar_conflicts reporting a busy slot as free (#3611)30d87b872— fix(agent-ui): make the Memory Dashboard beta confirmation a real dialog (#4288)9491e863d— chore(deps): bump the github-actions group across 1 directory with 2 updates (#4404)7440e01a1— chore(deps): bump the root-npm-dependencies group across 1 directory with 2 updates (#4402)b91b8e8c7— fix(memory): record denied tool calls as unsuccessful (#4412)5895dd467— fix(tests): resolve expected GAIA_HOME path in uninstall test6d0d0c4d7— fix(cli): remove a redundant local re-import in _serve_gateway143c697f2— feat(memory): take extraction off the answer path, and keep lessons in their workspace (#4406)551fc36ea— fix(agent): a corrected test claim must not cost the user the whole answer (#4401)e00d290fe— feat(eval): run and grade SWE-bench Verified through the agent benchmarks (#4400)3afaf2e1e— feat(eval): reproducible harness × model benchmarks (Claude Code harness, TheRock tier, metering) (#4335)4bc33c926— ci(test): run the hub-wheel suites and fail on unlisted file skips (#4353)2927f1a13— feat(shell): one shell story — persistent session, confirm instead of refuse, one name for full access (#4408)228ee5b81— feat(agent): index large tool results by their structure (#4379)6c2dfcb6c— feat(memory): surface memories relevant to each request, with their age (#4061)2f08108f4— feat(agent): keep the model's reasoning and send it back within a request (#4055)d7c06557a— fix(agent): offer the shell whenever the session works in a code repository (#4376)9cbd7562a— fix(agent): continue a reply cut off by the token limit instead of ending on it (#4054)cf147c82f— feat(memory): keep what fixed a failure as a lesson for the workspace (#4066)e633b0e88— fix(skills): load the coding skill when pytest is only in a virtualenv (#3791)
Full Changelog: v0.24.1...v0.25.0
Installing this release candidate
Desktop app
Download the installer for your platform from the assets below:
- Windows —
gaia-agent-ui-0.25.0-rc.2-x64-setup.exe - macOS —
gaia-agent-ui-0.25.0-rc.2-arm64.dmg(Apple Silicon only) - Linux —
gaia-agent-ui-0.25.0-rc.2-amd64.deb(Debian/Ubuntu) orgaia-agent-ui-0.25.0-rc.2-x86_64.AppImage(any distro)
The terminal hub is attached as standalone binaries (gaia-<os>-<arch>, checksums in gaia-tui-SHA256SUMS.txt). The one-step Windows setup and the terminal's .pkg/.deb/.rpm packages ship with the final release.
Python CLI
pip install --pre amd-gaia # newest pre-release
pip install amd-gaia==0.25.0rc2 # exactly this onenpm
npm install -g @amd-gaia/agent-ui@nextFound a problem? Open an issue and mention v0.25.0-rc2.