v0.12.3
LatestNew
- One-shot approval links: approve or reject an agent's pending request straight from the notification link, without opening the app.
- Sandboxes now ship with a baked-in Python package floor — Pillow, pypdfium2, pytesseract, and 13 more pinned packages — so document and image skills run immediately, with no install step.
- The session header warns when an agent's configuration changed on disk after the session started, with a one-click reload that updates the files the agent actually reads.
- Terms of Service are linked from /legal/terms.
Improved
- Project page navigation is noticeably faster, and the web app moved to Next.js 16.2.0.
- Messages queued while the agent is working now stay queued until the turn actually ends — no more mid-turn releases or duplicate sends.
- One keyboard shortcut (⌘I / Ctrl+I) now toggles the whole right side of a session: the action panel, a detail panel, or both.
- Session error states are clearer: tool failures are reported truthfully, retry states show what is happening, and a stale agent config no longer needs a page reload to surface.
- The CLI is quieter and more honest:
--quietis honoured on every path, and it no longer claims an invite email was sent when none was.
Fixed
- Hardened the sandbox: closed a proxy hole that could leak the sandbox service key to an attacker-named host, closed a DNS-rebind window by connecting only to the address that was vetted, resolved symlinks before authorizing file paths, and stopped one session's credentials from being served to other members of the account.
- Secrets: setup links now expire on time, re-scoped secrets validate against the session owner rather than the caller, and secret identifiers are no longer disclosed through the narrowing report.
- Session reliability: removed two paths that could silently destroy a session's commits, a planned restart now finishes the turn it interrupts, a failed agent spawn schedules a respawn instead of killing the session, and reloading an agent never hard-resets the session branch.
- A transient git failure can no longer compile an agent with an empty prompt.
- Queued API errors: address-validation failures now return a proper 400 instead of a server error.
What's Changed
- CLI: stop reporting failure while a cross-account fallback is still pending by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6069
- chore(release): VERSION → 0.12.3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6072
- Executor: one-shot human approval links by @markokraemer in https://github.com/kortix-ai/suna/pull/6078
- Render the connector refusal, fix the reload, and surface stale config in the UI by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6074
- feat(sandbox): bake the starter Python package floor, run skills bare by @markokraemer in https://github.com/kortix-ai/suna/pull/6080
- fix(sandbox): target the managed interpreter by path in the floor install by @markokraemer in https://github.com/kortix-ai/suna/pull/6081
- fix(sdk): classify model_not_servable 409 as silent to Sentry (BS ed07f6c5…) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6082
- Fix local Supabase and test runner dependencies by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6084
- Make session reload update the agent files opencode actually reads by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6083
- Keep content timestamp generation deterministic by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6085
- Set a safe default frontend build heap by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6087
- Warn on the first secrets narrowing; don't compile an agent with no prompt by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6086
- Guarantee accessible public MDX images by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6088
- A failed spawn must schedule a respawn, not kill the session by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6089
- CLI: stop claiming an invite email was sent when none was by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6090
- Validate re-scoped secrets for the session owner, not the caller by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6091
- docs: record the connector 'Connected' badge gap and its tradeoff by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6092
- Finalize the turn a planned restart kills by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6093
- Two paths that silently destroy a session's commits by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6094
- mock.module stubs silently delete the exports they omit by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6095
- Surface a stale agent config without a page reload by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6097
- Port 3211 served another session's credentials to any account member by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6098
- Reload 500'd on every session that hadn't pushed its branch by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6099
- /web-proxy mailed the sandbox service key to any host you named by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6096
- feat(experimental): add meta_agent feature flag by @agent-kortix in https://github.com/kortix-ai/suna/pull/6101
- fix(secrets): setup-link TTL, session callback, secrets sync, diagnostic logging by @agent-kortix in https://github.com/kortix-ai/suna/pull/6100
- fix(web,sdk): keep in-flight sends, tell the truth about tool failures, one code palette by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6058
- fix(web): stop auth cache and markdown prefetch storms by @markokraemer in https://github.com/kortix-ai/suna/pull/6106
- fix: slow project page navigation, and upgrade to Next.js 16.2.0 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6102
- fix(web,sdk): queued messages stay queued until the turn actually ends by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6110
- fix(executor): align catalog with session connector scope by @markokraemer in https://github.com/kortix-ai/suna/pull/6113
- fix(api): convert assertAllowedSourceAddress throw to typed 400 (BS f5c0ce61) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6112
- feat(legal): publish simplified Terms of Service at /legal/terms by @agent-kortix in https://github.com/kortix-ai/suna/pull/6103
- fix(web): redirect Terms to public Drive folder, drop stale terms body by @agent-kortix in https://github.com/kortix-ai/suna/pull/6114
Full Changelog: https://github.com/kortix-ai/suna/compare/v0.12.2...v0.12.3