v0.14.8 Latest October 23, 2026 New
Every new session runs pi. The pi_harness flag and runtime: opencode no longer select OpenCode. A session that already runs OpenCode keeps it. OpenCode is deprecated. (#10786)
Share one response. Share response , beside Copy response , publishes one finished assistant response through a public link: the response only, or the prompt and the response. Turning the link off ends anonymous access. (#10816)
Weekly changelog. /changelog groups what went live in production by week, and each week has its own page with every change. (#10823)
Agent marks. Every agent has a pixel mark on Agents cards and in agent pickers. (#10826)
Shopify with your own app. Connect on Shopify opens a Kortix form that takes the store and the Client ID and secret of your Shopify Dev Dashboard app. Shopify no longer issues the custom app tokens the old flow asked for. (#10825)
Improved
Compaction. pi compacts early enough to leave room for the model's full answer, still compacts after it retries a failed model call, and honours a project's compaction.reserveTokens again; the context meter counts reasoning tokens once. (#10835, #10845)
Session history. Messages that only the old transcript store held move into the session log; the daemon keeps every batch the API refuses and sends it again; capture waits for memory and runs one session at a time; the usage panel counts the whole thread. (#10827, #10837, #10829, #10793, #10791, #10783)
Deleted sessions are fully gone after 30 days : the conversation, every copy (model requests and responses, prompt commands, questions, notifications, share links), the stored files and the session's branch. Sessions purged before this release lose their remaining copies too. (#10831)
Branch cleanup. A session branch that fails to delete no longer stalls the sweep. (#10833)
Status page. Upstream capacity errors that a fallback model absorbs no longer open an incident. (#10795)
Parked sandboxes. An open tab stops polling the transcript of a sandbox that is parked. (#10820)
Fixed
pi permissions. A path rule holds for ./, .., @ and absolute paths. (#10787)
Web addresses. /dashboard opens projects; /login and /signup open sign-in; a trailing slash or another letter case redirects to the page; an unknown path answers 404 and a malformed one 400; /privacy, /terms, /imprint and /subprocessors open the legal pages; crawlers can fetch the static assets pages need; each localized page declares its locale; the Apple app-site-association file is served as JSON; the docs touch icon loads. (#10812, #10815, #10814, #10807, #10810, #10818, #10806, #10805, #10817, #10804, #10803, #10808)
Sandbox versions. The version feed caches one GitHub read, never names a prerelease as the latest stable version, and still answers when GitHub rejects the token. (#10809, #10811)
Marketplace. Paging never skips or repeats an item. (#10802)
Scoped tokens resolve the current project. (#10819)
Files. A download with a range the file cannot satisfy answers 416 with the file size, not "storage unavailable". (#10790)
Agent page. The dev-only layout switcher is gone. (#10813)
Security
Unexpected server errors no longer return internal details to the client. (#10785)
Shared caches never store an authenticated API response. (#10828)
The API and gateway serve security.txt, robots.txt and sitemap.xml. (#10824)
Malformed tunnel IDs, fractional gateway day windows and invalid billing pagination are refused. (#10800, #10784, #10781)
CodeQL and the security scan run on every push to production. (#10796)
Internal
Stateless sandboxes behind an operator-only flag that is off everywhere. (#10846)
Session-log groundwork for removing the old transcript tables, CLI installation-proof refactor, local hot-reload connection leak, quieter config-release logs, log lines that keep ids out of format strings, release and incident runbooks, and test upkeep. (#10782, #10822, #10821, #10839, #10847, #10792, #10794, #10798, #10830, #10832, #10834, #10836, #10838, #10840, #10849, #10851)
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.14.7...v0.14.8
Release on GitHub →
v0.14.7 October 22, 2026 New
Move projects between accounts. A project can be transferred to another organization or account. (#9918)
Default reasoning effort per project. Set it once in project settings. (#9935)
Run a session on your own machine with a ChatGPT subscription, through kortixd. (#9754)
Audit activity. See who was active in a workspace and how often, in the API, CLI and SDK. (#10604)
Goals page, a session Goal button and goal health, behind the goals flag. (#10600)
Embedded sessions. Public transcript sharing is removed; existing transcript share links are revoked. Embed the real session page instead. (#10008)
Improved
Billing. Usage is metered on every plan; only charging is gated. (#9929)
Model routing. A project's Routing chain now covers every model. (#8742)
Model limits. Every model reports its real context window and output limit, including custom endpoints; Codex models get their 272k window. A custom-endpoint model reads images and reasons when the endpoint supports it. (#10757, #10768)
Session history. A new session reads only the session log, and an old session being converted opens its history, not an empty log. (#10722, #10728)
Agents and connectors. A cleaner agent page and connector modal, catalogue favicons that recover from broken images, and one design for role dialogs. (#10490, #9924, #10702, #10382)
Mobile. Simpler session sheets and tool surfaces. (#10229)
Keep-alive. An open page keeps its sandbox awake for the idle window, not 2 hours. (#10026)
Fixed
Invites on self-hosted instances without email. A person your identity provider adds through SCIM can join even when their address is outside the provider's domain. The invite page offers Continue with single sign-on , says to ask an admin when single sign-on is not set up, and Resend lets that person accept. (#10707)
Routine wakes are silent: no waking notice, boot pill or boot screen. (#10716)
Reload keeps your project , and a sidebar click no longer opens a session's hover card. (#10720, #10721)
Files. Project owners can edit and commit repository text. (#10517)
Projects. Rename a project from the switcher. (#10523)
Panels. ⌘I brings back the panel it hid, also from inside the Browser preview. (#10725)
CLI. Remote login without a callback (its poll and approve calls get their own rate limit), service-account keys, and connectors call resolves the project like connectors ls. (#10483, #10779, #10235)
Sessions. Compacting a busy session no longer shows internal diagnostics; a US-region session boots where its drives live; a daemon restart drops its env-sync trust. (#10442, #10348, #10014)
Apps. Existing Apps move from ghcr.io/get-convex to ghcr.io/convex images. (#10353)
Connectors. A connector failure line is split in linear time. (#10736)
Desktop. The Linux AppImage builds again with electron-builder 26. (#10743)
Security
Dependency updates for the advisories of 2026-10-22 (Next 16.4.2, DOMPurify, Sentry, undici, Astro, Electron 42, Vitest 4, KaTeX, Caddy, Hono and others). (#10738, #10739, #10732, #10726)
Closed a path traversal in the presentations server. (#10729)
The repo-wide deploy role no longer holds prod grants; prod uses its own role. (#9329)
The gateway sends browser security headers, and its public health check no longer shows operational detail. (#10750, #10749)
Public access requests are rate-limited, device-login polling denials are uniform, and SCIM and git spec routes declare their auth. (#10753, #10773, #10755, #10754)
The sandbox web proxy guards egress on every port, and the web app restricts browser feature permissions. (#10752, #10751)
Pentest hardening: the marketplace catalog is cached and rate-limited, request bodies are capped at 64 MiB, every 401 names its auth scheme, OAuth client registration honours the requested client authentication, tighter CSP, signed release artifacts, and storage buckets no longer list their objects to signed-out callers. (#10748)
Session search rejects NUL bytes. (#10775)
A private security reporting policy. (#10756)
Internal
Test, CI, scanner and runbook upkeep (#10713, #10723, #10727, #10731, #10737, #10740, #10741, #10744, #10747, #10758, #10759, #10761, #10762, #10763, #10765, #10767, #10769, #10770, #10772, #10760, #10776, #7956, #10689, dependency bumps).
What's Changed
fix(session): a routine wake is silent: no waking notice, no boot pill, no boot screen by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10716
fix(white-label): the reskin mode test waits for the cold build like every other file by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10713
fix(web): a reload restores the kept project, and the snapshot asks for no v1 window by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10720
fix(web): a click on a sidebar session no longer pops its hover card (KRTX-2847) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10721
feat(session-log): a new session stays on the log instead of reading the v1 transcript by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10722
fix(invites): a directory guest can join on a self-host with no email by @markokraemer in https://github.com/kortix-ai/suna/pull/10707
refactor(web): unify IAM role dialogs (KRTX-3050) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10702
docs(learnings): a render-published instance can be replaced; follow every instance by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10723
build(deps): bump actions/setup-node from 4.4.0 to 7.1.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/10284
build(deps): bump github/codeql-action/upload-sarif from 4.38.3 to 4.39.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/10283
build(deps): bump github/codeql-action from 4.38.2 to 4.39.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/10282
Promote dev 065decef40 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10724
build(deps): bump bridgecrewio/checkov-action from 12.3128.0 to 12.3134.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/10281
build(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/10280
build(deps): bump github.com/klauspost/compress from 1.18.6 to 1.18.7 in /apps/kortix-app-runtime/caddy by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/10503
chore(deps): bump hono from 4.13.7 to 4.13.11 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/10506
chore(deps): bump pypdf from 6.19.0 to 6.21.1 in /packages/starter/templates/general-knowledge-worker/skills/presentations/scripts by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/10654
feat(marketplace): feature CosmoBlk/email-marketing-bible by @CosmoBlk in https://github.com/kortix-ai/suna/pull/9320
fix(web,desktop): ⌘I brings back the panel it hid, and works from inside the Browser preview (KRTX-2944) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10725
fix(apps): rewrite ghcr.io/get-convex image refs in existing Apps to ghcr.io/convex by @allenabraham999 in https://github.com/kortix-ai/suna/pull/10353
fix(drives): a US-region session boots where its drives live by @allenabraham999 in https://github.com/kortix-ai/suna/pull/10348
feat(api,cli,sdk): audit activity — who was active in a workspace, and how often, in milliseconds by @markokraemer in https://github.com/kortix-ai/suna/pull/10604
fix(web): connector catalogue favicon fallback and broken-image recovery (KRTX-2008) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9924
refactor(web): delete five unused leftovers (KRTX-3042) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10689
fix(api): a daemon restart drops the env-sync trust for its box by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10014
fix(web): KRTX-2559 enable project rename from switcher by @agent-kortix in https://github.com/kortix-ai/suna/pull/10523
fix(deps): clear open high Dependabot and Trivy findings (electron 41, electron-builder 26, MCP server 2.3, tsgo out of the API image) by @markokraemer in https://github.com/kortix-ai/suna/pull/10726
chore(infra): stop reviewed IaC scan skips from opening code-scanning alerts by @markokraemer in https://github.com/kortix-ai/suna/pull/10727
feat(api): cap an open page's sandbox keep-alive at the idle window, not 2 h (KRTX-2451) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10026
feat(goals): Goals page, session Goal button and goal health, behind the goals flag by @markokraemer in https://github.com/kortix-ai/suna/pull/10600
fix(session-log): an old session being converted opens its history, not an empty log by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10728
fix(security): close the presentations-server path traversal and clear CodeQL/Hadolint/Caddy alerts by @markokraemer in https://github.com/kortix-ai/suna/pull/10729
fix(files): let project owners edit and commit repository text by @agent-kortix in https://github.com/kortix-ai/suna/pull/10517
test(spec): list FILE-14 in the Files contract (route coverage gate) by @markokraemer in https://github.com/kortix-ai/suna/pull/10731
fix(deps): clear open Dependabot alerts (electron 42, vitest 4, KaTeX 0.18, Caddy 2.11.7, hono 4.13.11, smol-toml 1.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/10732
fix(cli): callback-free remote login and service-account key acceptance (KRTX-2720) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10483
feat(kortixd): run a session on your own machine with a ChatGPT subscription (scripts/local.ts) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9754
fix(gateway): make the project Routing chain a catch-all for every model by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8742
feat(web): clean up the agent page and connector modal by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10490
fix(KRTX-2650): handle busy session compaction without internal diagnostics by @agent-kortix in https://github.com/kortix-ai/suna/pull/10442
feat(web,api): project default reasoning effort setting (KRTX-2356) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9935
feat(projects): transfer projects between organizations and accounts (KRTX-1747) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9918
fix(ci): strip prod grants from the repo-wide deploy role — merge after the next prod release by @markokraemer in https://github.com/kortix-ai/suna/pull/9329
fix(ui): split a connector failure line in linear time by @markokraemer in https://github.com/kortix-ai/suna/pull/10736
docs(learnings): answer "nothing saved" only when nothing is saved by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10737
refactor(web): KRTX-1822 dedupe permission buttons and failure lists by @agent-kortix in https://github.com/kortix-ai/suna/pull/10382
fix(deps): next 16.4.2, dompurify 3.4.17, @sentry/nextjs 10.76.2 (critical advisories of 2026-10-22) by @markokraemer in https://github.com/kortix-ai/suna/pull/10738
feat(web)!: remove public transcript sharing; embed the actual session page (KRTX-2358) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10008
feat(billing): meter everywhere, gate only charging (KRTX-1832) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9929
fix(cli): connectors call resolves the project like connectors ls (KRTX-2529) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10235
fix(deps): undici 6.28.1, astro 7.3.3, ip-address 10.7.4 (advisories of 2026-10-22) by @markokraemer in https://github.com/kortix-ai/suna/pull/10739
refactor(mobile): simplify session UI sheets and tool surfaces (KRTX-2731) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10229
chore(web): add eloqnt lint to catch translation errors by @amannn in https://github.com/kortix-ai/suna/pull/7956
test(ui): drop a dead apps/web mock from the permission buttons test by @markokraemer in https://github.com/kortix-ai/suna/pull/10740
fix(release): rebuild @kortix/ui styles.css and drop a stale loader-count test by @markokraemer in https://github.com/kortix-ai/suna/pull/10741
Promote dev 3bdad604a9 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10742
fix(desktop): name the Linux binary so electron-builder 26 builds the AppImage by @markokraemer in https://github.com/kortix-ai/suna/pull/10743
chore(release): VERSION → 0.14.7 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10745
chore(release): staging VERSION → 0.14.7 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10746
docs(learnings): create the release tag with a workflow-scoped token when dev's workflows moved by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10747
fix(ci): accept any sha-pinned download-artifact release in the preview pin guard (KRTX-3065) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10744
fix(gateway): send browser security headers (KRTX-3068) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10750
fix(gateway): gate detailed health responses (KRTX-3070) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10749
docs(security): add private reporting policy (KRTX-3078) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10756
fix(models): every model serves its real context window and output limit by @markokraemer in https://github.com/kortix-ai/suna/pull/10757
fix(kortixd): sync bun.lock with hono ^4.13.11 and take DNS out of the web-proxy port-guard test by @markokraemer in https://github.com/kortix-ai/suna/pull/10758
fix(api): rate-limit public access requests (KRTX-3076) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10753
fix(audit): label the CLI device-login routes and resync audit catalogs by @markokraemer in https://github.com/kortix-ai/suna/pull/10759
fix(ci): install the HCL parser in a venv; ubuntu-24.04 refuses a system pip install by @markokraemer in https://github.com/kortix-ai/suna/pull/10761
fix(release): clear the v0.14.7 web and ui gate failures by @markokraemer in https://github.com/kortix-ai/suna/pull/10762
fix(db): RLS on the audit activity tables; base-tip test waits for its claim by @markokraemer in https://github.com/kortix-ai/suna/pull/10763
Promote dev 0d15ced8fb to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10764
fix(api): break the custom-providers import cycle that failed six gateway test files by @markokraemer in https://github.com/kortix-ai/suna/pull/10765
Promote dev e09d7d4525 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10766
fix(security): restrict browser feature permissions (KRTX-3067) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10751
fix(ci): require review for catalog refresh (KRTX-3089) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10767
fix(sandbox): guard web-proxy egress on every port (KRTX-3071) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10752
fix(api): declare SCIM and git spec auth (KRTX-3077) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10754
feat(models): a custom endpoint model reads images and reasons when it can by @markokraemer in https://github.com/kortix-ai/suna/pull/10768
fix(api): unify device-auth polling denials (KRTX-3075) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10755
fix(test): audit activity rollup test passes at every wall-clock minute by @markokraemer in https://github.com/kortix-ai/suna/pull/10769
test(gateway): GW-1b checks the public health body #10749 left it by @markokraemer in https://github.com/kortix-ai/suna/pull/10770
Promote dev e5bd8cc974 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10771
chore(ci): pin remaining third-party actions (KRTX-3079) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10760
fix(ui): the custom-provider form save test runs without a DOM by @markokraemer in https://github.com/kortix-ai/suna/pull/10772
Promote dev 2413909699 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10774
fix(api): budget public auth requests before validation (KRTX-3098) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10773
fix(kortixd): give OpenCode an output limit when the catalog knows only the window by @markokraemer in https://github.com/kortix-ai/suna/pull/10776
Promote dev 4cf24ee936 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10777
fix(api): reject NUL session searches (KRTX-3144) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10775
fix: pentest hardening (availability, OAuth client auth, CSP, release signing) by @markokraemer in https://github.com/kortix-ai/suna/pull/10748
test(cli): AUTH-8 covers the CLI device-login routes; split their rate-limit buckets by @markokraemer in https://github.com/kortix-ai/suna/pull/10779
Promote dev daf71017a1 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10780
Release v0.14.7 — Project transfer, embedded sessions, directory-guest invites and security updates by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10730
New Contributors
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.14.6...v0.14.7
Read the full release on GitHub →
v0.14.6 October 22, 2026 New
Retry a failed reminder. A reminder whose last run failed shows its error and a Retry button: in the session's reminders, the project Reminders list and calendar, and with kortix reminders run <id>. A reminder that a session's agent sets now reaches its session. Before, it failed after about 13 minutes when the session belonged to another member.
An agent's card shows what its configuration grants.
A replaced change request reads "Superseded by #N" and opens its replacement.
A filename in a reply opens the session output it names.
File versions show their session's title, agent and archive instead of a session id.
Improved
The session log is the only saved history. Opening a session reads its log first and makes no request to the old transcript. Older web, mobile and CLI builds keep working. The "Session log" feature flag is gone, because every project uses the log.
Self-hosted Kortix converts old conversations into the session log by itself after this update.
A pi command that exits non-zero reads as a command. A failure the agent moved past is no longer red.
A stalled preview says so and offers Reload.
When a provider refuses Kortix's key, Kortix shows the error once, in the search card, and names Kortix as the cause.
Connector search survives Back, agent display names find their sessions, and a failed search batch shows its errors.
Refreshed model catalog.
Fixed
An accepted invite shows the new account and project at once. A declined invite leaves the sidebar at once.
Enter no longer submits text in the middle of a Chinese, Japanese or Korean composition.
A permission prompt shows the current agent's name after an agent switch.
The password reset page removes the used recovery code from the address bar.
Security: the mobile map moves to maplibre-gl 6.12.0, which fixes a critical advisory.
Smaller fixes: the Rooms join spinner, Capture timeline dragging, changelog links, and copying the logo.
What's Changed
fix(reminders): an agent's reminder reaches its session, and a failed run has Retry by @markokraemer in https://github.com/kortix-ai/suna/pull/10685
chore(release): staging VERSION → 0.14.6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10686
chore(release): VERSION → 0.14.6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10687
docs(learnings): run the contract lanes on the dev SHA before a Promote by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10688
fix(auth): scrub consumed recovery code from URL (KRTX-1347) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10690
chore(catalog): refresh model seeds by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10691
fix(infra): make internal security group tags Drata-readable (KRTX-1649) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10692
fix: connector search survives Back, agent display names find their sessions, a failed search batch shows its errors (KRTX-3018, 3017, 3016) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10693
fix(preview): a stalled preview says so and offers Reload, and the waiting page retries inside an opaque frame (KRTX-3015) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10694
fix(web,ui): react-doctor health pass fixes 9 user-visible bugs by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10695
feat(files): versions read as their session's title, agent and archive, not a session id (KRTX-3020) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10696
feat(ui): a filename in a reply opens the session output it names (KRTX-3023) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10697
fix(router): a provider refusing Kortix's key reads as Kortix, logs an error, and shows once in the search card (KRTX-3022) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10698
fix(ui): put the "Reload" string in @kortix/ui's English catalog by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10699
feat(change-requests): a replaced change request reads "Superseded by #N" and opens its replacement (KRTX-3031) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10700
feat(agents): an agent's card shows what its configuration grants (KRTX-3025) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10701
fix(session): a pi command that exited non-zero reads as a command, and a failure the agent moved past is not red (KRTX-3021) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10703
feat(session-log): no path reads or writes the v1 transcript mirror by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10704
fix(session-log): the backfill converts restorable deleted sessions before the mirror drop by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10705
fix(mobile): maplibre-gl 6.12.0 for the genui map (critical GHSA-jrc7-96c5-q579) by @markokraemer in https://github.com/kortix-ai/suna/pull/10706
fix(sdk): a session open reads the session log first, never the v1 transcript by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10708
fix(release): the dev tree passes the release lanes again by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10709
Promote dev 78290f765d to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10710
fix(api): reminder routes type their Hono context; no (c: any) is left by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10711
fix(sdk): the session-open snapshot asks for no v1 transcript window by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10712
fix(mobile): bake the maplibre asset with the pinned Bun, so the byte check passes by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10715
Promote dev 2aabefb41d to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10717
revert(sdk): the session-open snapshot asks for the v1 window again (reverts #10712) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10718
Promote dev c2bad390bf to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10719
Release v0.14.6 — Session log as the only history, reminder Retry, and superseded change requests by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10714
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.14.5...v0.14.6
Read the full release on GitHub →
v0.14.5 October 22, 2026 New
Kortix managed models run on Platinum Inference. The managed model list, prices, limits and reasoning levels come live from Platinum, so a model Platinum adds reaches Kortix without a release. Self-hosted and bring-your-own-key projects can add a Platinum key and call platinum/<model> directly.
Session logs for every project. The session log is on by default, so every project stores its conversations in it.
Bring your own S3 for Kortix Capture. An admin can keep an account's recordings in the account's own S3 bucket from Capture → Settings → Storage. Self-hosted Kortix can use an external S3 object store for Capture.
Session rows say what waits on you. The sidebar shows a question or permission, an open change request, and the sub-agents and sessions a session started.
Reminders glide between rows, and 30 or more reminders open in the side panel.
The turn-done toast offers Review for the change request the turn opened.
Remove a project skill from its card on the Skills page.
New sandboxes always run on Platinum. Sandbox templates no longer offer Daytona.
White-label examples: Lumen, a legal AI app on one shared Kortix project with a Team Console, and the Lumen Workspace reskin.
Improved
Faster LLM gateway admission: each upstream has its own circuit breaker, admission reads run in parallel, and the default model is resolved only when a request needs it.
Change requests that an agent opens show at turn end. An applied change request refreshes agents and Needs you.
Pinned sessions sit above the Sessions header.
Transcripts show while the sandbox is still starting.
Compaction stays inside the Worked section.
The model picker never preselects a model whose provider is not connected, and it says what to connect.
Marketplace add stays on the page, and search keeps its query in the URL.
Billing shows Plan member usage and the credit reset and expiry dates.
Command palette search finds "Your first chat with Kortix".
The session slash menu lists skills again on pi.
CLI: 17 commands match the API again, doctor picks an available model, and sessions rm without --project deletes exactly the named session or nothing.
Fixed
Security hardening: hosted APIs no longer trust the legacy Supabase signing secret, a token cannot be minted already expired or outlive the token that minted it, the sandbox daemon refuses symlinks that point outside the workspace, billing state needs billing.read, account names refuse markup, and deleting an account revokes its credentials.
Trigger runs close when their turn ends, and queued creates link to their run.
A skill created with the form shows on version 3 projects.
A channel's model pin is stored again.
Capture search reads the requested day, routing policy keeps generation defaults, and credit reads follow the account.
Editing a v2 agent keeps the keys the update cannot carry.
A missing attachment answers 404 instead of a retry. Five routes stop reporting permanent failures as temporary. A command that timed out keeps its unknown outcome.
A session mention in a message you just sent keeps its title.
Incomplete personal accounts are cleaned up when their user is deleted.
Many smaller fixes and cleanups across the web app, the CLI and the API.
What's Changed
docs(learnings): gate repository content, never the project record by @markokraemer in https://github.com/kortix-ai/suna/pull/10603
chore(release): VERSION → 0.14.5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10605
chore(release): staging VERSION → 0.14.5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10606
docs(learnings): run the release suite's fast tripwires before every Promote by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10607
fix(api): return retryable mirror contention (KRTX-2970) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10608
refactor(lint): decouple UI lint from the web app (KRTX-2973) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10609
chore(catalog): refresh model seeds by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10610
docs(tui): correct allowlist module count (KRTX-2836) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10611
fix(db): reclaim incomplete personal accounts on auth deletion (KRTX-2135) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10450
fix(api): revoke credentials on deletion confirmation (KRTX-2919) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10587
fix(api): a missing attachment object answers 404, not a 503 retry (KRTX-2974) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10612
fix(web): local dev resolves shaders/react again (/auth answered 500) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10613
fix(ui): a session mention in a just-sent message keeps its title (KRTX-2858) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10614
fix(api): a channel's model pin is stored again, and dead code after a return fails lint (KRTX-2987) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10615
fix(cli): choose an available doctor model (KRTX-2985) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10616
fix(tools): show ignores an empty items value beside a single item by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10617
fix(kortixd): the session slash menu lists skills again on pi by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10618
fix(api): five routes stop calling permanent failures temporary and log the cause (KRTX-2977..2981) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10619
feat(web): marketplace add stays on the page, search keeps ?q= (KRTX-2993) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10620
feat(ui): turn-done toast offers Review for its change request (KRTX-2994) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10621
fix(api,sdk,cli): capture search reads day, routing policy keeps generation defaults, credit reads follow account_id (KRTX-2983, KRTX-2988, KRTX-2989) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10622
fix(cli,api): 17 CLI commands match the API again, and a v2 agent edit keeps keys the PUT cannot carry (KRTX-2990, KRTX-2991, KRTX-2992) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10624
fix(billing): KRTX-2082 show credit reset and expiry dates by @agent-kortix in https://github.com/kortix-ai/suna/pull/10404
refactor(mobile): KRTX-2440 split schedule sheets and reuse local types by @agent-kortix in https://github.com/kortix-ai/suna/pull/10581
fix(web): show Plan member usage (KRTX-1960) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10576
refactor(web): KRTX-3000 delete unreachable feature modes by @agent-kortix in https://github.com/kortix-ai/suna/pull/10629
test(cli): sessions rm without --project deletes exactly the named session or nothing (KRTX-2818) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10626
feat(web): remove a project skill from its card on the Skills page (KRTX-2821) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10630
fix(web): next dev runs on Turbopack and stops eating 16 GB per server by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10628
fix(ui): pinned sessions sit above the Sessions header, outside the list by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10623
docs(git): a base_ref session takes governance from the default branch (KRTX-2868) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10632
fix(api): a skill created with the form is registered on a kortix_version 3 project, so it surfaces (KRTX-2543) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10633
fix(ui): the notification host gate reads the project detail from the cache instead of observing it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10634
fix(web): command palette search finds "Your first chat with Kortix" (KRTX-2476) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10636
fix(session): show transcripts independently of sandbox readiness (KRTX-3003) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10635
fix(db): public.resources RLS requires an account match on every verb (KRTX-2779) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10637
fix(web): drop the frameless play() NotSupportedError rejection from error reports (KRTX-2998) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10638
feat(ui): session rows say what waits on you and what a session started by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10631
refactor(marketing): KRTX-3005 dedupe primitives and delete unreachable layer by @agent-kortix in https://github.com/kortix-ai/suna/pull/10639
fix(triggers): close trigger runs from the turn ledger, link queued creates (KRTX-3007, KRTX-3026) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10640
feat(ui): reminders glide between rows, and 30+ reminders open in the side panel by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10625
fix(ui): agent-opened change requests show at turn end; an applied one refreshes agents and Needs you (KRTX-3009, 3010, 3012, 3019) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10641
fix(models): a model whose provider is not connected is never preselected; the picker says what to connect (KRTX-3011) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10642
fix(web): favicon status dot sits flush with the icon corner by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10627
refactor(web): delete obsolete marketplace helpers (KRTX-3033) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10644
feat(white-label): Lumen, a legal AI SaaS on one shared Kortix project, and Team Console by @markokraemer in https://github.com/kortix-ai/suna/pull/10493
fix(api,sandbox): tokens never mint dead or outlive their parent; kortixd refuses symlink escapes by @markokraemer in https://github.com/kortix-ai/suna/pull/10646
feat(sandbox): customers can no longer choose Daytona; templates show Platinum only by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10647
fix(session): KRTX-3034 keep compaction inside Worked by @agent-kortix in https://github.com/kortix-ai/suna/pull/10648
feat(white-label): restore the reskin example as Lumen Workspace (apps/white-label/reskin) by @markokraemer in https://github.com/kortix-ai/suna/pull/10649
feat(gateway): Platinum Inference is a provider — Kortix managed models are what Platinum offers; self-hosters bring a Platinum key by @markokraemer in https://github.com/kortix-ai/suna/pull/10643
docs(learnings): Platinum inference cost leak and stream stall (2026-10-21) by @markokraemer in https://github.com/kortix-ai/suna/pull/10650
refactor(gateway): no managed model id is hardcoded; fallbacks and retired-id moves follow Platinum's lineup by @markokraemer in https://github.com/kortix-ai/suna/pull/10652
refactor(web): KRTX-2907 clean up five small leftovers by @agent-kortix in https://github.com/kortix-ai/suna/pull/10653
fix(api): billing state needs billing.read; account names refuse markup (pentest 2026-07) by @markokraemer in https://github.com/kortix-ai/suna/pull/10655
fix(ui): the Platinum provider shows the Platinum square, not a sparkles placeholder by @markokraemer in https://github.com/kortix-ai/suna/pull/10656
docs: describe managed inference as Platinum Inference only by @markokraemer in https://github.com/kortix-ai/suna/pull/10657
chore(secrets): dev and staging on Supabase publishable/secret keys (pentest finding 3, step 1) by @markokraemer in https://github.com/kortix-ai/suna/pull/10658
chore(secrets): prod API env file on Supabase publishable/secret keys (pentest finding 3, step 2) by @markokraemer in https://github.com/kortix-ai/suna/pull/10659
docs(learnings): rebuild Vercel prod with deploy-prod's per-deployment env by @markokraemer in https://github.com/kortix-ai/suna/pull/10660
feat(cli): external S3 object store for self-host Kortix Capture by @markokraemer in https://github.com/kortix-ai/suna/pull/10661
fix(api): preserve unknown exec outcome after timeout (KRTX-3036) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10662
feat(capture): per-account storage destination (bring your own S3) — Part A (model + API) by @markokraemer in https://github.com/kortix-ai/suna/pull/10664
fix(secrets): Supabase legacy-key retirement on staging + hosted APIs stop trusting the HS256 secret (pentest finding 3) by @markokraemer in https://github.com/kortix-ai/suna/pull/10663
feat(gateway): split /admit latency into its API steps and the gateway↔API round trip by @markokraemer in https://github.com/kortix-ai/suna/pull/10665
feat(web): Capture Storage settings + efficiency tunables (bring your own S3) — Part B by @markokraemer in https://github.com/kortix-ai/suna/pull/10666
perf(gateway): circuit breaker per upstream + parallel admission reads by @markokraemer in https://github.com/kortix-ai/suna/pull/10667
perf(gateway): admission resolves the default model only when the route depends on it by @markokraemer in https://github.com/kortix-ai/suna/pull/10668
feat(session-log): session_log is on by default for every project by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10669
fix(release): cover the Capture storage routes and keep reminders below customize by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10670
chore(gateway): bench harness for load, long streams and 120k prompts (+ loop results) by @markokraemer in https://github.com/kortix-ai/suna/pull/10671
Promote dev ad3ab8c80e to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10672
fix(ui): routing fallback no longer pre-selects a hardcoded model id by @markokraemer in https://github.com/kortix-ai/suna/pull/10673
Promote dev 5cd8c74256 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10675
fix(deps): clear three CRITICAL CVEs that fail the release scan by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10676
fix(api): release-suite tests follow the Daytona refusal, session_log default and Platinum config by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10677
fix(ui): provider tests follow the Platinum Inference copy and managed catalog by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10678
fix(release): v0.14.5 core-db lane and CodeQL highs by @markokraemer in https://github.com/kortix-ai/suna/pull/10679
Promote dev be9194fc50 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10680
fix(deps): clear the HIGH CVEs that fail the release Trivy check by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10681
fix(white-label): reskin e2e setup outlasts a CPU-starved cold build in CI by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10682
fix(i18n): translate the Capture storage settings and clear the strict audit by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10683
Promote dev 8556eb7003 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10684
Release v0.14.5 — Platinum Inference, session logs for every project, and bring-your-own S3 for Capture by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10674
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.14.4...v0.14.5
Read the full release on GitHub →
v0.14.4 October 21, 2026 New
One model path: the Kortix LLM gateway. Every project's models go through the gateway, and custom OpenAI-compatible endpoints are set up in the gateway as custom providers.
pi is the default agent harness. New sessions in a project start on pi unless the project turns pi_harness off. Existing sessions keep their harness. Projects with the LLM gateway off stay on OpenCode.
One Drive with team folders. Files lives under the gear, and kortix drive works from the CLI.
Triggers protect themselves. A trigger that stays at its hourly run limit for 2 hours pauses itself, sends one alert, and resumes when you set enabled: true. A new cron trigger skips a fire while its previous run is still active (overlap: allow opts out).
@kortix/ui is a plug-and-play UI library. The Kortix web app and the Lumen example now render the same session, workspace and settings screens from one package.
Preview text attachments in the app before you send them.
Mobile 1.5.1: iOS Liquid Glass chrome, a native glass message menu, smoother sheets and scrolling in long sessions, and an MFA focus fix.
Improved
Forked conversations persist and stay reachable after navigation.
pi tells the model today's date on every turn, leaves the session title to Kortix (the header no longer flips), and the Changes tab works on pi sessions.
Sessions report the model the conversation uses, not the model pinned at creation.
The project home sends faster, finished replies no longer stream again, and slash skills and commands show there.
Escape in an empty composer stops a streaming reply. The command palette opens at once, and the slash palette opens the agent picker.
Drive shows folders as folders and keeps fixed folders in place.
Connector catalogs resolve in one batch, and sub-agent links keep their sub-agent.
Large files open whole instead of cutting off at 50k characters.
Web and CLI show the same model price estimates.
Cron triggers show the exact next run with its timezone.
Trigger edits keep the comments in kortix.yaml.
Faster gateway log and audit reads in projects with a lot of history. Gateway budgets read a running daily total (954 ms → one key read), sign-in checks no longer make an extra auth hop, and a page load fetches its project once.
CLI: models lists catalog availability, sessions new streams readiness progress, chat and compact wake a stopped or provisioning session first, access grant --user uses the linked project, marketplace installs resolve short names, doctor names the turn error and explains warm-session retention, project and session URLs match the host, and channels show every state by default.
Fixed
Session notifications work in a fresh browser, and blocked notifications recover with a sound fallback.
Usage opens from account deep links, and checkout returns to the billing page of the account that paid.
The low-balance warning scales to the recurring grant, and a new free account no longer sees a false warning.
A deleted project no longer reopens from cache. Enabling a gated feature no longer leaves the page, and a lost session keeps its return path. Account deletion explains that it can be cancelled.
Compacting a busy session is refused with a clear message. Forking a stopped session explains what to do.
New project invitees get their notification. Removed avatars are erased.
Email confirmation is link-first, and the sign-in screen offers password sign-in.
The app recovers from a stale code chunk instead of failing to load.
Connected accounts stay on the personal identity.
The first session of a new project no longer lists the project setup as its own changes.
Session tokens can no longer leak after a session ends.
Expired branches are deleted without cloning their history.
Reminders re-arm from the time they resume.
Public transcripts show failed assistant turns.
The Agents page shows agent ids, and a direct user grant replaces the existing project role.
The public OpenAPI spec publishes a relative server URL.
Many smaller fixes across the CLI, triggers, auth and the web app.
What's Changed
chore(release): VERSION → 0.14.4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10351
chore(release): staging VERSION → 0.14.4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10352
chore(catalog): refresh model seeds by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10354
fix(api): preserve YAML comments through trigger manifest edits (KRTX-2742) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10230
docs(learnings): reload Caddy after a Capture-version self-host update by @markokraemer in https://github.com/kortix-ai/suna/pull/10359
fix(api): return not found for stale subscription sync (KRTX-2882) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10355
feat(triggers): auto-pause — a trigger at its hourly run limit for 2 hours in a row pauses itself, alerts once, and resumes with enabled: true (KRTX-1721) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10362
fix(infra): monitor staging and prod SQS message age (KRTX-2509) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10356
fix(billing): KRTX-2754 preserve referenced legacy agent versions by @agent-kortix in https://github.com/kortix-ai/suna/pull/10357
perf(db): index-driven audit tool-action filter and gateway project aggregates; fix(api): change-request lookup accepts the per-project number (KRTX-2763) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10212
fix(api): resume create-in-chat after its question answer (KRTX-2544) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10364
fix(cli): report no credential source for tokenless hosts (KRTX-2755) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10358
feat(triggers): overlap — a fresh cron trigger skips a fire while its previous run is still active; overlap: allow opts out (KRTX-1721) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10369
fix(cli): report no credential source for unsigned hosts (KRTX-2756) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10360
fix(auth): KRTX-2840 make email confirmation link-first by @agent-kortix in https://github.com/kortix-ai/suna/pull/10365
fix(KRTX-1791): show failed assistant turns in public transcripts by @agent-kortix in https://github.com/kortix-ai/suna/pull/10375
refactor(tests): split audit request-row flows (KRTX-1799) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10372
fix: dogfood batch — no false Low balance on a new free account, Copy command label, friendly offline avatar toast, CLI sessions tagged cli (KRTX-2910, KRTX-2911, KRTX-2838, KRTX-2914) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10383
fix(KRTX-2837): erase public avatars on removal and deletion by @agent-kortix in https://github.com/kortix-ai/suna/pull/10366
fix(cli): KRTX-2810 use scoped preview navigation tickets by @agent-kortix in https://github.com/kortix-ai/suna/pull/10361
fix(cli): KRTX-2015 delete listed sessions without read preflight by @agent-kortix in https://github.com/kortix-ai/suna/pull/10400
fix(web): scale low-balance warning to recurring grant (KRTX-2828) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10363
fix(tooling): regenerate staged web artifacts (KRTX-1849) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10377
fix(KRTX-2059): stop ready project auto-sessions reading Starting by @agent-kortix in https://github.com/kortix-ai/suna/pull/10406
fix(cli): KRTX-1762 print host-correct project and session URLs by @agent-kortix in https://github.com/kortix-ai/suna/pull/10370
fix(api): restore isolated session-log dry passes (KRTX-2789) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10407
fix(api): delete expired branches without cloning history (KRTX-2141) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10403
fix(api): prevent late session token leaks (KRTX-2831) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10368
KRTX-1763: Guide safe ship recovery for seeded managed repositories by @agent-kortix in https://github.com/kortix-ai/suna/pull/10371
refactor(ui): consolidate Mermaid render IO and canvas zoom (KRTX-2348) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10417
fix(billing): KRTX-2713 return checkout to purchased account billing by @agent-kortix in https://github.com/kortix-ai/suna/pull/10374
fix: dogfood batch 2 — kortix init refuses without a TTY, sessions new --wait exits 1 on an already-failed turn, /settings/computers opens Connectors (KRTX-2921, KRTX-2913, KRTX-2865) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10422
fix(web): KRTX-1794 recover blocked notifications with inline sound fallback by @agent-kortix in https://github.com/kortix-ai/suna/pull/10379
fix(sessions): KRTX-1871 stop default idle warm provisioning by @agent-kortix in https://github.com/kortix-ai/suna/pull/10425
KRTX-1868: Let empty composer Escape stop streaming by @agent-kortix in https://github.com/kortix-ai/suna/pull/10381
fix(cli): access grant --user uses the linked project, marketplace install resolves short names, doctor names the turn error (KRTX-2825, KRTX-2822, KRTX-2918) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10434
feat(mobile): 1.5.1 — iOS Liquid Glass chrome, smoother sheets and long sessions, MFA focus fix by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10424
fix(docs): remove duplicated home page product name (KRTX-2611) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10435
fix(api): unify web and CLI model price estimates (KRTX-1927) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10385
fix(web): KRTX-2611 remove duplicate docs home title by @agent-kortix in https://github.com/kortix-ai/suna/pull/10440
fix(web): smooth project-home send and stop finished replies re-streaming (KRTX-2931, KRTX-2932) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10432
feat(drives): one Drive with team folders, a Files row under the gear, and kortix drive by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10419
fix(cli): resolve marketplace install names like show (KRTX-1947) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10387
fix(KRTX-1885): show an actionable stopped-session fork error by @agent-kortix in https://github.com/kortix-ai/suna/pull/10386
fix: KRTX-2058 show exact cron next run with timezone by @agent-kortix in https://github.com/kortix-ai/suna/pull/10444
fix: KRTX-2650 refuse compact on busy sessions by @agent-kortix in https://github.com/kortix-ai/suna/pull/10446
fix(web): enable fresh-browser session notifications (KRTX-2622) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10438
fix(web): KRTX-1883 surface project-home slash skills and commands by @agent-kortix in https://github.com/kortix-ai/suna/pull/10388
fix(web): inline password error and no hover underline on auth links by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10452
fix(cli): disclose doctor warm-session retention (KRTX-1973) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10390
fix: tokens rm refuses the CLI's own key, review submit drops a foreign sandbox session, readable "New" badge (KRTX-1842, KRTX-2864, KRTX-2750) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10455
fix(sessions): keep forked conversations reachable after navigation by @agent-kortix in https://github.com/kortix-ai/suna/pull/10441
fix(api): re-arm reminders from resume time (KRTX-1923) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10389
fix: notify existing project invitees (KRTX-1929) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10391
fix: blocked trigger Create focuses the missing signing key, tokens JSON shares an id key, auth 429 entry-step guard (KRTX-2816, KRTX-2829, KRTX-2812) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10460
fix(KRTX-2033): show completed session activity independently of computer status by @agent-kortix in https://github.com/kortix-ai/suna/pull/10413
refactor(runtime): remove unused helpers and inline wrappers (KRTX-2575) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10428
fix(web): KRTX-2608 clarify cancellable account deletion by @agent-kortix in https://github.com/kortix-ai/suna/pull/10439
fix(cli): show all channel states by default (KRTX-2619) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10437
fix(web): use bundled i18n catalogs (KRTX-2244) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10414
fix(session-log): backfill recovers stripped tool inputs and converts oversized sessions in a Worker (P3.4) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10464
fix(web): authorize error names --token, Reminders tabs refetch, a deleted project cannot reopen from cache (KRTX-1976, KRTX-2888, KRTX-2904) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10466
fix(web): open Usage from account deep links (KRTX-1959) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10392
fix(sessions): report conversation model instead of creation pin (KRTX-2697) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10454
fix(kortixd): the first session of a new project no longer lists the project setup as its own changes (KRTX-1862) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10469
fix(web): show oversized files whole instead of truncating at 50k chars by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10458
perf(api): check session access before the tombstone in member project reads (gateway logs 670 → 160 ms) by @markokraemer in https://github.com/kortix-ai/suna/pull/10465
perf(gateway): call the dev API inside the VPC through Cloud Map, public URL as fallback by @markokraemer in https://github.com/kortix-ai/suna/pull/10463
fix(web): keep connected accounts on personal identity (KRTX-2011) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10395
fix(mobile): native glass message menu, smoother scroll and long sessions, no local pushes to the App Store app by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10456
fix(session-log): guard the backfill's conversion thread with a memory check and a poison pill (P3.4) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10475
KRTX-2498: cover admin-delete Stripe subscription cancellation by @agent-kortix in https://github.com/kortix-ai/suna/pull/10473
fix(kortixd): pi tells the model today's date every turn, as OpenCode does by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10476
fix(sessions): persist independent conversation forks (KRTX-2806) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10421
feat(api): pi_harness on by default for every project by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10479
fix(ci): the dev gateway deploy waits for dev Terraform by @markokraemer in https://github.com/kortix-ai/suna/pull/10481
feat(ui): @kortix/ui is the plug-and-play Kortix UI library; apps/web and Lumen consume it by @markokraemer in https://github.com/kortix-ai/suna/pull/10480
fix(docs): announce the home link brand once (KRTX-1999) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10396
Promote dev fd04a98306 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10482
fix(cli): surface gateway endpoint URL (KRTX-1962) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10397
refactor(web): relocate panel sizing and preview policies (KRTX-1773) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10416
refactor(web): extract panel derivations and handoffs (KRTX-1774) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10420
fix(api): a local stack never deletes shared meta sandbox images (KRTX-2546) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10486
fix(web): KRTX-2649 open agent picker from slash palette by @agent-kortix in https://github.com/kortix-ai/suna/pull/10448
KRTX-1853: Preview text attachments in-app by @agent-kortix in https://github.com/kortix-ai/suna/pull/10384
fix(web): KRTX-2760 show gone page on first deleted-project visit by @agent-kortix in https://github.com/kortix-ai/suna/pull/10457
refactor(web): split customize components and shared logic (KRTX-2148) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10412
fix(web): KRTX-2860 explain disabled Reminders deep links by @agent-kortix in https://github.com/kortix-ai/suna/pull/10367
fix(KRTX-1891): make Files Show more controls readable by @agent-kortix in https://github.com/kortix-ai/suna/pull/10394
fix(ui): image thumbnail no longer spins forever after a cached load by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10491
fix(tests): green the v0.14.4 release suite on dev by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10495
fix(drives): show folders as folders, keep fixed folders fixed, one error per refusal by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10492
fix(tests): green the v0.14.4 core-db lane on dev by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10497
fix(web): surface marketplace plan gate (KRTX-1949) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10399
fix(sdk,ui): connector poll window per open, cold ?rs= links keep the sub-agent, sub-agent chats read the project roster (KRTX-2877, KRTX-2886, KRTX-2887) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10485
fix: Changes tab on pi sessions + readable file name in the side-panel viewer by @markokraemer in https://github.com/kortix-ai/suna/pull/10501
perf: KRTX-2019 batch connector catalog resolution by @agent-kortix in https://github.com/kortix-ai/suna/pull/10401
feat(cli): skip project wizard after CLI creation (KRTX-1488) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10498
fix(web): recover stale chunk failures before hydration (KRTX-2482) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10426
fix(web): KRTX-2493 offer password sign-in on auth entry by @agent-kortix in https://github.com/kortix-ai/suna/pull/10423
fix(kortixd): pi leaves the session title to Kortix, so the header no longer flips from the prompt to the title (KRTX-2567) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10502
fix(web): show command palette immediately while lazy chunk loads by @agent-kortix in https://github.com/kortix-ai/suna/pull/10376
fix(tests): green the v0.14.4 packages-rest lane after the @kortix/ui move by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10505
fix(web): KRTX-1839 restore account-hub pane headings by @agent-kortix in https://github.com/kortix-ai/suna/pull/10380
KRTX-1784: Give the mobile sidebar a visible close control by @agent-kortix in https://github.com/kortix-ai/suna/pull/10378
fix(ui): linear-time path regexes and CodeQL release findings by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10509
Promote dev 0ad9d81b54 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10511
fix(cli): stream session readiness progress (KRTX-1888) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10510
fix(kortixd): a new session token clears the dead-token breaker at once (KRTX-2545) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10512
fix(cli): start provisioning sessions before chat (KRTX-2042) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10402
fix(sdk): expected feature flag refusals do not report API errors (KRTX-2617) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10445
fix(KRTX-1812): neutral default organization names by @agent-kortix in https://github.com/kortix-ai/suna/pull/10508
perf(web): one GET /projects/:id per page load (project gate reads qk.project.summary) by @markokraemer in https://github.com/kortix-ai/suna/pull/10468
feat(cli): list catalog model availability (KRTX-1539) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10500
fix(KRTX-1863): explain single-model picker search scope by @agent-kortix in https://github.com/kortix-ai/suna/pull/10513
KRTX-2834: remember the chosen password sign-in method by @agent-kortix in https://github.com/kortix-ai/suna/pull/10477
fix(KRTX-1785): enable gated features without leaving the page by @agent-kortix in https://github.com/kortix-ai/suna/pull/10515
fix(KRTX-1889): fill runtime status in session detail by @agent-kortix in https://github.com/kortix-ai/suna/pull/10514
fix(sdk): the saved-transcript mirror sorts parts in byte order (KRTX-2897) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10516
perf(api): confirm JWT liveness from auth.sessions instead of a GoTrue hop by @markokraemer in https://github.com/kortix-ai/suna/pull/10467
perf(gateway): budget spend from a running daily total (954 ms SUM to a PK read) by @markokraemer in https://github.com/kortix-ai/suna/pull/10471
fix(api): the public OpenAPI spec publishes a relative server URL, not the internal origin (KRTX-2949) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10519
fix(web): KRTX-2939 triage sweep — preview recovery, search input, fired reminders, Apps polish by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10462
feat(goals): goals v1 behind a flag — kortix goals CLI, turn-end check, unattended sessions, reminders that survive a failed box by @markokraemer in https://github.com/kortix-ai/suna/pull/10314
fix(KRTX-2278): replace existing project role on direct user grant by @agent-kortix in https://github.com/kortix-ai/suna/pull/10411
feat(cli): KRTX-1465 wake stopped sessions before compacting by @agent-kortix in https://github.com/kortix-ai/suna/pull/10496
fix(web): KRTX-1926 show agent ids on the Agents page by @agent-kortix in https://github.com/kortix-ai/suna/pull/10520
fix(api): preserve session create receipts past deadline (KRTX-2066) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10405
fix(api): proxy refusals grant CORS only to the allowlist, and dropped upstream bodies are released (KRTX-2802, KRTX-2803) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10524
feat(rooms): chat rooms for agents and people with Slack-style threads; a feature flag gates every surface by @markokraemer in https://github.com/kortix-ai/suna/pull/10308
fix(web): preserve return path on mounted session loss (KRTX-2558) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10408
fix(release): green the second v0.14.4 release run on dev by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10526
test(flows): steps assert what their labels promise (KRTX-2850, KRTX-2851, KRTX-2852) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10525
fix(api): MCP CLI decisions for goals, rooms and peers by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10528
fix(krtx-2744): refuse stored-log, loss-report and open-question reads of a deleted session by @agent-kortix in https://github.com/kortix-ai/suna/pull/10470
Promote dev 6f1038a106 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10530
fix(web): use domain decision for approval toast (KRTX-2857) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10409
KRTX-2884: align Models with picker availability and expose model entitlement by @agent-kortix in https://github.com/kortix-ai/suna/pull/10418
fix(web): auth errors render inline under the input, not as a banner by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10540
fix(cli): KRTX-2002 explain private app browser access in show by @agent-kortix in https://github.com/kortix-ai/suna/pull/10537
fix: cost-by-project honors project_id, few-word prompts title themselves, the CLI help names no stale flag, and the test report and shard planner match reality (KRTX-2801, KRTX-2651, KRTX-2581, KRTX-2667, KRTX-2668) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10535
fix(KRTX-1998): show MCP URL in Connect dialog by @agent-kortix in https://github.com/kortix-ai/suna/pull/10539
fix(api): skip channel end relay without a recipient (KRTX-2339) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10543
fix(github): a repository switch through a GitHub App installation is not refused as read-only by @markokraemer in https://github.com/kortix-ai/suna/pull/10545
fix: one repository_disconnected state when the GitHub App loses a repo, on every surface (KRTX-2955) by @markokraemer in https://github.com/kortix-ai/suna/pull/10544
feat(cli): create projects without the dashboard (KRTX-2046) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10541
docs(learnings): repository_disconnected entry (KRTX-2955) by @markokraemer in https://github.com/kortix-ai/suna/pull/10548
feat(llm-gateway)!: the gateway is the only model path; custom OpenAI-compatible endpoints move into it by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10547
fix(db): revoke session keys on project archive (KRTX-1946) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10393
fix(web): one Download App design with a store QR code and current screenshots (KRTX-2692) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10553
fix(web): hide the founder welcome card everywhere by @markokraemer in https://github.com/kortix-ai/suna/pull/10550
feat(cli): expose searchable provider catalog (KRTX-2074) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10534
fix(web): KRTX-2000 stop polling missing sessions by @agent-kortix in https://github.com/kortix-ai/suna/pull/10536
fix(release): green the third v0.14.4 release run on dev by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10557
feat(sessions): switch a session to the fallback that answered, switch back at idle by @markokraemer in https://github.com/kortix-ai/suna/pull/10487
docs(repo): PR titles and bodies are written for the human reviewer by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10561
fix(KRTX-1932): retry invalidated in-flight mirror reads by @agent-kortix in https://github.com/kortix-ai/suna/pull/10398
fix(web): disable framework response header (KRTX-2366) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10415
fix(iam): call the project role manager consistently (KRTX-2552) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10429
fix(auth): KRTX-2562 stabilize server sign-out after account deletion by @agent-kortix in https://github.com/kortix-ai/suna/pull/10430
fix(cli): explain missing default project in session lists (KRTX-2563) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10431
Promote dev 57fe38f329 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10564
fix(web): the session fixture page marks continuing turns like the real transcript (KRTX-2596) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10549
fix(npm): published packages no longer carry workspace: devDependencies by @markokraemer in https://github.com/kortix-ai/suna/pull/10567
fix(KRTX-2504): keep internal tooling out of the agent picker by @agent-kortix in https://github.com/kortix-ai/suna/pull/10427
fix(api): an admin re-invite keeps the SCIM groups the invite waits on (KRTX-2329) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10558
docs(ui): @kortix/ui installs from npm; versions track the Kortix release by @markokraemer in https://github.com/kortix-ai/suna/pull/10571
fix(cli): preserve matching project links after clone (KRTX-2629) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10436
fix(cli): KRTX-2912 refuse chat before provisioning when no model is connected by @agent-kortix in https://github.com/kortix-ai/suna/pull/10569
fix(api): prune lint suppressions that no longer occur by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10573
fix(mobile): roomier iOS header and sheet controls, version 1.5.3 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10572
fix(web): default development servers to webpack (KRTX-2751) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10453
fix(tests): green the fourth v0.14.4 release run on dev by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10574
Promote dev 4303f04236 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10575
fix(web): KRTX-2759 stop deleted-project request bursts by @agent-kortix in https://github.com/kortix-ai/suna/pull/10459
fix(tests): green the v0.14.4 packages-rest lane on dev (round 2) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10577
Promote dev c55d514cf7 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10578
fix(web): KRTX-2473 revalidate avatars after deletion by @agent-kortix in https://github.com/kortix-ai/suna/pull/10472
docs(learnings): dry-run kortix ship before the first ship of a new folder by @markokraemer in https://github.com/kortix-ai/suna/pull/10580
refactor(db): share repair clients and migration script helpers (KRTX-2533) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10474
fix(tooling): reject fake trunk merge commits (KRTX-2515) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10560
fix(secrets): show granted agents in audit views (KRTX-2813) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10478
refactor(web): remove unused helper re-exports (KRTX-1782) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10552
fix(release): green the fifth v0.14.4 release run on dev by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10583
fix(web): a kept project renders at once while its access read revalidates by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10584
Promote dev a667253747 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10585
fix(web): ignore synthetic non-Error rejection noise (KRTX-2948) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10488
docs(cli): explain sandbox credential override (KRTX-1706) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10494
fix(session): stream first-turn text snapshots (KRTX-2764) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10504
fix(tests): profile-tab container test mocks the modules it actually imports by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10586
feat(review): approval parameters, expiry, and bulk approve/deny by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10555
fix(cli): KRTX-1922 print approval commands instead of token URLs by @agent-kortix in https://github.com/kortix-ai/suna/pull/10518
fix(KRTX-2665): retire previous secret intake links on re-mint by @agent-kortix in https://github.com/kortix-ai/suna/pull/10449
fix(web): collapse denied project prefetch burst (KRTX-1930) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10521
fix(KRTX-1931): name current plan in CLI IAM 402 errors by @agent-kortix in https://github.com/kortix-ai/suna/pull/10522
fix(api): KRTX-2950 bound interactive billing request bursts by @agent-kortix in https://github.com/kortix-ai/suna/pull/10556
fix(KRTX-2823): uninstall installed project skills safely by @agent-kortix in https://github.com/kortix-ai/suna/pull/10527
KRTX-1231: drop unused legacy device token indexes by @agent-kortix in https://github.com/kortix-ai/suna/pull/10484
fix(cli): show doctor answer without reasoning (KRTX-1974) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10529
fix(gateway): a resting personal ChatGPT account falls back; holds follow the real reset by @markokraemer in https://github.com/kortix-ai/suna/pull/10588
fix(cli): label billing JSON credit units (KRTX-1955) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10531
fix(billing): KRTX-1954 land credits bookmarks on the ledger by @agent-kortix in https://github.com/kortix-ai/suna/pull/10532
fix(cli): name missing session-list project (KRTX-2001) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10533
feat(goals): hard-gate Goals behind the goals flag on every surface by @markokraemer in https://github.com/kortix-ai/suna/pull/10589
fix(skills): KRTX-1939 include optional body on creation by @agent-kortix in https://github.com/kortix-ai/suna/pull/10538
feat(flags): a flag-off feature is invisible everywhere — CLI off-box, IAM catalog, notification settings, docs by @markokraemer in https://github.com/kortix-ai/suna/pull/10590
test(cli): cover the goals group in the flagged leaf-help loop by @markokraemer in https://github.com/kortix-ai/suna/pull/10591
refactor(ui): name the shared PDF engine loader (KRTX-2231) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10542
fix(api): hide account existence from nonmembers (KRTX-2402) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10546
refactor(tui): remove unused reasoning fixture (KRTX-2522) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10551
refactor(shared): remove unused picked section keys (KRTX-2571) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10554
test(web): preserve motion exports in workspace mocks (KRTX-2403) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10559
fix(KRTX-1869): mark interrupted turns as stopped by @agent-kortix in https://github.com/kortix-ai/suna/pull/10563
fix(gateway): KRTX-2903 clarify plan access and recovery by @agent-kortix in https://github.com/kortix-ai/suna/pull/10562
docs(learnings): work/ for plans and open thoughts; goals + durable workflows design by @markokraemer in https://github.com/kortix-ai/suna/pull/10592
fix(api): use plan-eligible model defaults (KRTX-2917) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10566
fix(ui): keep mobile promo off desktop project loads (KRTX-2579) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10568
fix(cli): re-show live secrets intake links (KRTX-1904) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10570
fix(web): point download card to pairing (KRTX-1813) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10579
Promote dev 3125f74d1e to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10593
refactor(ui): share non-merging class composition (KRTX-2605) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10582
fix(db): sync the drizzle snapshot with the connector_call_status 'expired' value by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10595
fix(api): model-access reports the configured default; green api, flows and cli lanes by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10596
fix(release): green the packages-rest lane on dev (round 3) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10597
Promote dev ecf385f449 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10598
fix(api,cli): repo-less sessions read their project record; goals new works without repository access by @markokraemer in https://github.com/kortix-ai/suna/pull/10599
ci(release): Drata is advisory in the release gate until its finding is resolved by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10601
Promote dev 3e62c9a167 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10602
Release v0.14.4 — pi by default, one model path, one Drive by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10489
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.14.3...v0.14.4
Read the full release on GitHub →
v0.14.3 October 20, 2026 New
Pause all automations: one account switch stops every project's schedules, webhooks, app events and monitors.
Trigger run limits: a trigger runs at most 60 times an hour by default, with an optional daily limit, so a runaway trigger stops itself.
Drive in the sidebar, with a Drive page, a file viewer, upload, multi-select and file management. Session folders show Drive folders. Repo moves under Customize.
Recently deleted lists the sessions you can restore, and a restored session keeps its conversation.
Drop a file anywhere on a session page or the project home to attach it to your message.
Notifications have All, Needs you and Done tabs, and the bell shows when something needs you.
Generative UI is on by default for new sessions: the agent can answer with cards, comparisons, charts, maps and tabs. A project can turn it off in Settings.
Computer: every access is granted at pairing with a switch for each afterwards, a new computer starts with every access selected, "Always" is remembered, and Computer Use works on Windows without console windows.
The command palette (⌘K) opens Drive, Reminders and Repo.
Mobile reminds you when a question has waited 60 seconds for an answer, and renders generative UI like the web app.
Connectors v2 (experimental, per project): a catalog of vendor MCP apps signed in with OAuth that Kortix runs, app-event triggers that Kortix checks, an event inbox, and an in-place move for existing Composio and Pipedream connectors and their triggers.
Kortix Capture
Windows is ready for company rollout: the install command downloads the installer, waits and reports whether it worked. The macOS and Linux commands do the same.
Windows: the app window opens for people without admin rights, a manual MSI install never rolls back, and the app has a Windows icon.
App rules match what an admin types on every OS: notepad.exe also matches the packaged Windows 11 Notepad, and the inclusion policy never records an app it cannot identify. The app catalog lists common CAD apps.
The timeline keeps the runs of frames taken while the person is idle.
The player shows video for computers linked to no one.
Settings shows that Capture always starts at login.
The Kortix desktop app is no longer recorded on Windows and Linux, as on macOS.
Kortix Desktop
Windows installers for Kortix Desktop and Kortix Capture are signed by Kortix AI Corp.
Windows: the title bar blends with the app, a Kortix menu replaces the raw menu bar, and the app has a tile icon.
Each deployment serves its own desktop build.
Models
Kortix-managed models are part of paid plans. Free accounts use their connected ChatGPT subscription or their own provider keys.
Kimi K3 leaves the managed lineup. Sessions and defaults that used it move to DeepSeek V4.1 Flash.
Managed models fall back across providers in a fixed order, the default model always has a fallback, and legacy model ids get their model's fallbacks. Third-party endpoints are used only with zero data retention and only from subprocessors in effect.
Reasoning variants reach the model on the pi harness, and pi decides shell permissions command by command.
When a managed model's provider fails, the session stays on the fallback instead of retrying the failed provider on every request.
Model-switch notices sit above the turn's work, one row per run of identical switches.
Self-host
Platinum is the default sandbox provider. Daytona remains as a legacy fallback. E2B support is removed.
Fixed
Members of MFA accounts can open project-wide Apps. Reminders move under Customize.
Signed-out devices stop getting push notifications.
Connecting an MCP server whose URL does not answer shows the reason instead of a server error.
A ChatGPT login that only failed a model check is no longer marked for reconnection.
Plural forms and labels in 9 languages are corrected.
Reopening a session paints its saved conversation at once, and older tool calls keep their command.
A connector whose stored credential the vendor rejects is marked on the account for reconnection, and the call reports it instead of a server error.
Billing emails reach the owners of older accounts, and a notice without a recipient is retried.
Under the hood
@kortix/ui: one shared component library for the web app and SDK hosts.
With the session log flag on, sessions read and write only the session log; older messages and sub-agent threads come from it.
Faster requests: the gateway admits a request in one API round trip, the app shell loads after one auth round trip, project details and secrets no longer wait on a git fetch, member and session reads are indexed, and the session lifecycle queue has its own index.
Model catalog seeds refreshed. CI signing and publish fixes for Windows builds.
What's Changed
chore(release): staging VERSION → 0.14.3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10253
chore(release): VERSION → 0.14.3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10254
docs(learnings): check the CI_RUNNER_* pool before reading a red release suite by @markokraemer in https://github.com/kortix-ai/suna/pull/10255
chore(catalog): refresh model seeds by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10256
feat(ui): @kortix/ui — one shared component library for apps/web, white-label, Apps and SDK hosts (+ @kortix/ui/chat) by @markokraemer in https://github.com/kortix-ai/suna/pull/10257
feat(web): Drive in the sidebar, Repo under Customize, agent drive mounts by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10258
fix(push): stop push notifications to signed-out devices by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10063
feat(connectors): connectors_v2 — MCP app catalog and app-event triggers on our platform, Kortix OAuth clients, event inbox by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10214
docs(flags): describe connectors_v2 as the MCP app catalog and Kortix-checked app events by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10259
feat(mobile): local reminder when a question waits unanswered for 60 s (KRTX-2138) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10065
feat(web): /white-label — build your own AI product on Kortix, on Platinum.dev compute by @markokraemer in https://github.com/kortix-ai/suna/pull/10250
fix: Reminders moves under Customize; members of MFA accounts can open project-wide Apps by @markokraemer in https://github.com/kortix-ai/suna/pull/10261
fix(web): model-switch notices sit above the turn's work, one row per run of identical switches by @markokraemer in https://github.com/kortix-ai/suna/pull/10262
feat(sessions): Recently deleted lists the sessions you can restore, and a restored session keeps its conversation (KRTX-2853) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10260
feat(web): a file dropped anywhere on a session page or the project home attaches to the composer (KRTX-2855) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10263
fix(capture): replace the dead Launch at login switch with the truth (always starts at login) by @markokraemer in https://github.com/kortix-ai/suna/pull/10265
feat(connectors): retire Pipedream — move connectors to Kortix MCP apps, MCP sign-in on every connect path by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10266
fix(connectors): one fix action on a movable Pipedream connector, accurate CLI move output by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10267
ci(capture): Authenticode-sign Windows binaries and MSIs via Artifact Signing (inert until configured) by @markokraemer in https://github.com/kortix-ai/suna/pull/10268
fix(capture): Windows install line downloads the installer, waits and reports by @markokraemer in https://github.com/kortix-ai/suna/pull/10269
ci(desktop): sign Windows installers with Artifact Signing (inert until configured) by @markokraemer in https://github.com/kortix-ai/suna/pull/10270
fix(capture): macOS and Linux install lines download the installer by @markokraemer in https://github.com/kortix-ai/suna/pull/10271
fix(capture): player shows video for devices linked to no one by @markokraemer in https://github.com/kortix-ai/suna/pull/10272
Desktop on Windows: title bar blends with the app, Kortix menu, tile app icon by @markokraemer in https://github.com/kortix-ai/suna/pull/10273
fix(web): a new computer starts with every access selected by @markokraemer in https://github.com/kortix-ai/suna/pull/10274
feat(connectors): retire Composio — move Composio connectors and their triggers to Kortix MCP apps by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10275
fix(pi): an agent's variant reaches the gateway as reasoning_effort by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10276
fix(download): each deployment serves its own desktop build (dev, staging, stable) by @markokraemer in https://github.com/kortix-ai/suna/pull/10278
fix(gateway): managed models try Morph direct, Zen, then OpenRouter; the default model always has its fallback; /health reports upstream capacity by @markokraemer in https://github.com/kortix-ai/suna/pull/10277
Computer: grant all access at pairing, a switch for each afterwards; Computer Use on Windows; no console windows; Always is remembered by @markokraemer in https://github.com/kortix-ai/suna/pull/10279
fix(gateway): DeepSeek V4.1 Flash and GLM-5.3-Flash try OpenCode Zen first, then Morph direct, then OpenRouter by @markokraemer in https://github.com/kortix-ai/suna/pull/10285
fix(gateway): OpenRouter pools = every ZDR endpoint that passed the probes, gated by subprocessor dates; Kimi K3 leaves the lineup by @markokraemer in https://github.com/kortix-ai/suna/pull/10286
fix(capture): Windows window opens without admin rights, manual MSI never rolls back, Windows icon by @markokraemer in https://github.com/kortix-ai/suna/pull/10287
Windows signing: fix Desktop signing, document the setup; Capture Windows rollout docs by @markokraemer in https://github.com/kortix-ai/suna/pull/10288
fix(gateway): a legacy or kortix/-prefixed model id gets its canonical model's fallback chain by @markokraemer in https://github.com/kortix-ai/suna/pull/10289
fix(ci): Windows signing works for Kortix Desktop and Kortix Capture by @markokraemer in https://github.com/kortix-ai/suna/pull/10292
fix(gateway): Morph direct first, then Zen, then OpenRouter; GLM falls back to DeepSeek; Codex falls back to both by @markokraemer in https://github.com/kortix-ai/suna/pull/10291
fix(ci): Desktop Windows signing config passes the schema by @markokraemer in https://github.com/kortix-ai/suna/pull/10293
fix(ci): Capture dev publish no longer fails when the tag cannot move by @markokraemer in https://github.com/kortix-ai/suna/pull/10294
feat(drive): Drive upload, selection and file-management UX, per-user Drive memory skill by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10264
fix(billing): billing emails reach Suna-era account owners; a notice with no recipient is retried by @markokraemer in https://github.com/kortix-ai/suna/pull/10295
feat(drive): session folders popover shows Drive folder tiles by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10296
fix(billing): Free never reaches a Kortix-managed model; only paid plans do by @markokraemer in https://github.com/kortix-ai/suna/pull/10297
fix(mobile): genui renders like web: cards, charts, pies, map place cards and fallbacks, block boundaries by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10298
feat(triggers): run limits — max_runs_per_hour (default 60) and max_runs_per_day hold a runaway trigger (KRTX-1721) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10300
feat(genui): Generative UI flag on by default by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10301
fix(billing): managed models are sold, never given — one invariant, two gates by @markokraemer in https://github.com/kortix-ai/suna/pull/10302
feat(notifications): All / Needs you / Done tabs and a badge-glow bell by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10303
feat(sdk): session log owns the history when session_log is on (P8.0a) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10305
feat(triggers): Pause all automations — one account switch stops every project’s schedules, webhooks, app events and monitors (KRTX-1721) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10304
fix(capture): one app rule on every OS (packaged Windows apps), inactive frames keep their timeline runs by @markokraemer in https://github.com/kortix-ai/suna/pull/10299
docs(learnings): Capture app identity and inactive frames by @markokraemer in https://github.com/kortix-ai/suna/pull/10306
docs(learnings): fix a recorded timestamp by @markokraemer in https://github.com/kortix-ai/suna/pull/10307
fix(pi): decide a bash permission command by command by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10309
docs(learnings): decide a shell allowlist per command by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10311
feat(sandbox): Platinum is the reference provider; Daytona is a legacy fallback; E2B support removed by @markokraemer in https://github.com/kortix-ai/suna/pull/10310
Promote dev 08a64413b3 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10313
feat(triggers): filter operators not, in, exists, prefix, not_prefix — a push trigger can skip its own agent's pushes (KRTX-1721) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10312
perf(web): the model picker no longer waits on /projects/:id/detail by @markokraemer in https://github.com/kortix-ai/suna/pull/10316
fix(security): linear slash trim for Drive ?path=, literal launchd label match by @markokraemer in https://github.com/kortix-ai/suna/pull/10317
fix(manifest): a v3 agent that names a retired connector tool gets a warning, not a failed session by @markokraemer in https://github.com/kortix-ai/suna/pull/10318
fix(tests): packages-api lane green for v0.14.3 (tests follow #10310, #10297, #10286) by @markokraemer in https://github.com/kortix-ai/suna/pull/10319
perf(web): the model picker gate no longer waits on /secrets by @markokraemer in https://github.com/kortix-ai/suna/pull/10320
fix(release): v0.14.3 flows — MCP sign-in 400 on unreachable server, side-effect-free ChatGPT probe, GW-MANAGED-1 after Kimi K3 retirement by @markokraemer in https://github.com/kortix-ai/suna/pull/10321
fix(tests): core-db lane fixtures follow Platinum default, signed-in push tokens, Morph-served default model by @markokraemer in https://github.com/kortix-ai/suna/pull/10322
fix(tests): packages-rest lane green for v0.14.3 — palette rows for Reminders/Repo/Drive, ICU args outside plurals, mobile parity reads @kortix/ui by @markokraemer in https://github.com/kortix-ai/suna/pull/10323
feat: session_log on — no v1 transcript table reads or writes (P8.0c–g, P8.1) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10324
chore(worktree): pnpm worktree sweep deletes build output in idle checkouts by @markokraemer in https://github.com/kortix-ai/suna/pull/10325
docs(learnings): disk-full Docker wedge and pnpm worktree sweep by @markokraemer in https://github.com/kortix-ai/suna/pull/10326
perf(gateway): hold a failed route per session, cache ChatGPT prompts, index the IAM SSO check by @markokraemer in https://github.com/kortix-ai/suna/pull/10327
fix(release): session-log reloads paint the kept copy at once, old stripped tool calls keep their command; journeys 10/34/50 follow the new contracts by @markokraemer in https://github.com/kortix-ai/suna/pull/10330
test(e2e): journey 34 sub-agent arm waits for the saved steps, opens them in place, then the full view by @markokraemer in https://github.com/kortix-ai/suna/pull/10332
Promote dev 72b084322c to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10334
fix(connectors): an upstream 401 to a stored credential is credential_rejected, marked on the account by @markokraemer in https://github.com/kortix-ai/suna/pull/10328
perf(db): index the lifecycle claim drain past held prompts; compare auth.users.id as uuid by @markokraemer in https://github.com/kortix-ai/suna/pull/10329
perf(gateway): admit a request in one API round trip instead of four by @markokraemer in https://github.com/kortix-ai/suna/pull/10331
perf(gateway): evaluate warn budgets at settlement, off the admission path by @markokraemer in https://github.com/kortix-ai/suna/pull/10333
perf(api): /detail and /secrets read the warm git mirror instead of waiting on git fetch by @markokraemer in https://github.com/kortix-ai/suna/pull/10335
fix(connectors): a rejected stored credential answers 424, not 500 by @markokraemer in https://github.com/kortix-ai/suna/pull/10336
test(release): v0.14.3 suite — Codex prompt-cache headers, trigger filter messages, getProject mock by @markokraemer in https://github.com/kortix-ai/suna/pull/10337
fix(tests): apps/web release-suite reds for v0.14.3 — ICU-parsed placeholder parity, Telegram row stub, stale secrets-gate pin by @markokraemer in https://github.com/kortix-ai/suna/pull/10338
Promote dev 02731ef7af to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10339
fix(tests): label the new /internal/gateway/admit route for the audit log by @markokraemer in https://github.com/kortix-ai/suna/pull/10340
Promote dev f1b62f57ea to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10341
perf(api): member read view probes the session per row (EXISTS), 627 ms -> 17 ms by @markokraemer in https://github.com/kortix-ai/suna/pull/10342
perf(web): one auth round trip before the app shell, not two; project home shares the sandbox list by @markokraemer in https://github.com/kortix-ai/suna/pull/10344
fix(api): projectReadView.where refuses project_sessions.session_id by @markokraemer in https://github.com/kortix-ai/suna/pull/10345
docs(audit): regenerate audit-actions.mdx for the /internal/gateway/admit label by @markokraemer in https://github.com/kortix-ai/suna/pull/10346
Promote dev d8a86e497d to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10347
perf(lifecycle): back off prompts stuck behind a head that never moves by @markokraemer in https://github.com/kortix-ai/suna/pull/10343
fix(web): adopt the saved-copy store before the query client is ready (spec-34 skeleton regression) by @markokraemer in https://github.com/kortix-ai/suna/pull/10349
Promote dev 9ae9b3b7bc to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10350
Release v0.14.3 — Capture on Windows, signed installers, Drive, and automation controls by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10315
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.14.2...v0.14.3
Read the full release on GitHub →
v0.14.2 October 19, 2026 New
Trigger run history. Every trigger keeps a list of its runs with status, error and end time. You can test-fire a trigger with a payload, replay a past run, and missed cron slots are bounded.
More credit tiers and larger top-ups. The Free plan now includes 500 credits and the managed models.
DeepSeek V4.1 Flash now serves the 1017 snapshot on Morph (US region, zero data retention).
Subprocessor notices. The subprocessor list is published, and owners and admins of paid accounts get a 30-day email notice before a new subprocessor takes effect.
White-label license. A free, self-serve white-label license is published next to the repository license (WHITE-LABEL-LICENSE.md).
Customize › Agents lists agents first, with subagents in their own section.
Kortix Capture: choose an Exclusion or Inclusion policy, categories list what they cover, the cloud policy applies from the first frame, and the app has Restart and Quit.
Improved
Provider failures recover better: internal continuations, one terminal error row, suggestions you can act on, and a cancel you made yourself no longer shows as a model failure.
Model-switch errors stay in the conversation history.
Sign-in and password recovery by email are more reliable. Refused auth emails show an honest message, and the link buttons cool down.
The CLI resolves the host and the default project the same way everywhere, keeps its identity inside a delegated sandbox, routes help correctly, and reports billing in the same credit units as the wallet.
Connectors: the sync summary agrees with the list, policy ls shows connector rules, and the All tab lists the project's own connectors.
API keys: revoked gateway keys are hidden, a create cannot mint twice, and revoked personal keys can be deleted (also from the CLI).
/new shows the plan cap before the first failed create.
Phone layouts on web and mobile have accessible navigation targets.
Platinum images for US-region projects are built and copied in their region, so the first session after a template rebuild does not wait.
Sessions start faster: env-sync no longer blocks /start on the model push and no longer pushes into stopped boxes.
An opened App scrolls at once, and its bar is Refresh, Open, Settings and Close. App releases run on Platinum when it is configured.
"Open as admin" acts as the project's account.
Sandboxes clear known-safe caches when their disk fills up.
Fixed
Shared session start failures retry.
The auth callback logs provider errors safely.
Dead public share links show the unavailable page.
Streaming markdown keeps its blocks around fenced definitions.
A provision stream that closes mid-way recovers its real result; 502/503 alerts show the real reason.
App locales are no longer double-prefixed.
Onboarding promos stay dismissed and no longer stack after you exit the wizard.
A future key expiry shows as a countdown.
The agent config and model pins reject an agent name that is not declared.
LLM inference refuses principals that have no project (403 project_required).
Subscription plan resolution ignores enterprise metadata hints.
Many smaller fixes across web, mobile, the CLI, the whitelabel demo, the gateway and the API.
What's Changed
feat(triggers): run history, test-fire with a payload, replay, and a misfire bound (KRTX-1743) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10150
chore(release): VERSION → 0.14.2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10151
chore(release): staging VERSION → 0.14.2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10152
fix(snapshots): copy a new Platinum image to the session region before sessions use it by @markokraemer in https://github.com/kortix-ai/suna/pull/10157
feat(billing): credit tiers and top-ups to $50,000; Free gets 500 credits + managed models by @markokraemer in https://github.com/kortix-ai/suna/pull/10147
fix(capture): Sign in with Kortix failed: Cloudflare 403s requests without a User-Agent by @markokraemer in https://github.com/kortix-ai/suna/pull/10160
feat(web): agents first, subagents in their own section on Customize › Agents by @markokraemer in https://github.com/kortix-ai/suna/pull/10161
feat(capture): Restart and Quit; CI signs in at the real dev-api through Cloudflare; Linux job on a real VM by @markokraemer in https://github.com/kortix-ai/suna/pull/10162
fix(snapshots): build a us_region project's Platinum image in its region by @kubet in https://github.com/kortix-ai/suna/pull/10163
feat(capture): Exclusion or Inclusion policy, categories that list what they cover, cloud policy in force from the first frame by @markokraemer in https://github.com/kortix-ai/suna/pull/10168
perf(platinum): send a region-naming call straight to that region's control plane by @kubet in https://github.com/kortix-ai/suna/pull/10167
fix(capture): unblock recording after sign-in when the store has no policy; fix the docs build by @markokraemer in https://github.com/kortix-ai/suna/pull/10169
chore(deps): bump github/codeql-action/upload-sarif from 4.38.2 to 4.38.3 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/9759
chore(deps): bump rustls from 0.23.40 to 0.23.46 in /apps/capture by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/9925
fix(web): the outputs fold says items when the hidden rows are not files (KRTX-1779) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9385
fix(preview): dead public share links render the unavailable page, not JSON or a sign-in wall (KRTX-1601) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9652
fix(web): a mid-provision stream close recovers its true result, and 502/503 alerts show the real reason (KRTX-1754) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9817
fix(web): dismiss onboarding wizard on exit (KRTX-2243) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9856
KRTX-2283 handle shared session start failures with retry by @agent-kortix in https://github.com/kortix-ai/suna/pull/9859
fix(tests): recover runner-owned web exits (KRTX-2288) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9868
fix(api): refuse LLM inference for project-less principals — 403 project_required (KRTX-2295) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9889
KRTX-2360: isolate bounded and full-code highlighting by @agent-kortix in https://github.com/kortix-ai/suna/pull/9899
fix(web): drop the frameless wallet provider-disconnected rejection noise (KRTX-2150) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9922
fix(api): ignore enterprise metadata hints in subscription plan resolution (KRTX-2397) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9972
fix(web): don't fire the operator-only git-backend repositories call on /new (KRTX-1892) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9997
fix(web): never rotate the session refresh token in middleware (KRTX-2111) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10030
fix(web): Enter submits the auth email form during the hydration gap (KRTX-2078) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10044
fix(cli): hide revoked keys from tokens ls --mine (KRTX-1969) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10046
fix(KRTX-2573): restore harness-neutral Custom provider presentation by @agent-kortix in https://github.com/kortix-ai/suna/pull/10088
test(sdk): pin the upgrade-without-database guard on the saved-copy cache (KRTX-2576) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10101
fix(api): classify orphaned handlers after the request deadline instead of capturing them (KRTX-2583) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10102
test(web): pin data-turn-continues and the sizeRoom anchor filter (KRTX-2565) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10103
fix(api): audit contended 503 without disturbing a finalized body (KRTX-2600) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10119
[KRTX-2394] test(api): usage-session-costs-http stubs its #10113 directory-visibility dependency by @agent-kortix in https://github.com/kortix-ai/suna/pull/10127
fix(kortixd): act on in-VM rootfs pressure by wiping known-safe caches (KRTX-2593) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10121
fix(mobile): key the mermaid render cache on the source text, not a hash (KRTX-2462) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10125
fix(web): strip bare error prefixes and stacked wrappers in stripErrorWrappers (KRTX-2409) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10131
fix(web): handle rejections of the fire-and-forget device-cache clear (KRTX-2410) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10133
fix(web): the gone-project screen stops refetching a dead project (KRTX-2436) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10141
fix(billing): the hub Plan pane shows the wallet only when the plan can fund it (KRTX-2376) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10143
fix(mobile): stream the save-to-device copy instead of a whole-file heap read (KRTX-2481) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10153
fix(cli): reject a non-numeric --timeout on channels connect (KRTX-2508) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10154
fix(compliance): monitor capture-store manifest queue message age (KRTX-2509) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10156
docs(sdk): correct the entitlement write-path doc comments by @agent-kortix in https://github.com/kortix-ai/suna/pull/10158
krtx-2671-runtime-lost: stamp the removal intent before erasure removes a parked box by @agent-kortix in https://github.com/kortix-ai/suna/pull/10159
fix(db): resolve the migration gate's trunk ref from the remote's default branch (KRTX-2532) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10164
fix(session): show model-switch errors in conversation history (KRTX-2685) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10165
fix(markdown): preserve streaming blocks around fenced definitions (KRTX-2480) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10166
fix(web): render a future key expiry as its countdown, not as a fresh stamp by @agent-kortix in https://github.com/kortix-ai/suna/pull/9648
fix(web): classify the Firefox dead-object external-scope error as browser noise (KRTX-522) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10016
fix(web): drop the spoofed WebGL getParameter Illegal-invocation noise (KRTX-2465) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10022
docs(learnings): the PR-evidence Review lines are bare lines; the handoff null assignee needs run_query_or_mutation by @agent-kortix in https://github.com/kortix-ai/suna/pull/10155
fix(gateway): trace refused requests in usage and logs (KRTX-1749) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9973
fix(capture): recording resumes right after sign-in when the policy check completes by @markokraemer in https://github.com/kortix-ai/suna/pull/10176
feat(models): DeepSeek V4.1 Flash serves the 1017 snapshot on Morph (US, ZDR) by @markokraemer in https://github.com/kortix-ai/suna/pull/10177
fix(web): render each locale's design-system Don't heading from its own clause (KRTX-2281) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9841
fix(mobile): show PDF library load failures (KRTX-2471) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10171
fix(whitelabel): respect persisted session sharing (KRTX-2643) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10183
fix(tests): clean up workflow fixture directories (KRTX-2674) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10184
docs(api): keep account-only gateway refusals store-only (KRTX-2631) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10179
fix(whitelabel): retain non-text user message parts (KRTX-2644) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10186
fix(starter): deny unsupported PTY workdir permission prompts (KRTX-2625) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10180
fix(manifest): match nonblank schema checks to validator (KRTX-2539) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10172
fix(web): mark SEO navbar as titlebar owner (KRTX-2282) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9870
fix(starter): propagate template walk errors (KRTX-2626) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10181
fix(whitelabel): escape upstream path control bytes (KRTX-2646) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10182
refactor(tests): share exit-aware git helper (KRTX-2675) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10187
fix(tokens): delete revoked personal keys from CLI (KRTX-2561) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10188
fix(web): keep the use-case toc on the section the reader is in (KRTX-2371) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10106
fix(session): don't present an intentional cancel as a model failure (KRTX-2572) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10109
KRTX-2645: Guard call-snippet clipboard copy by @agent-kortix in https://github.com/kortix-ai/suna/pull/10189
fix(infra): use the live staging preview origin (KRTX-2691) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10190
fix(web): stop double-prefixing app locales (KRTX-2595) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10185
fix(api): sample pre-stop abort misses as info, keep warn for unexpected failures (KRTX-2724) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10195
fix(cli): align billing JSON credit units with wallet (KRTX-2717) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10192
fix(api): env-sync stops pushing into dead boxes and stops blocking /start on the model push (KRTX-2725) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10196
fix(cli): resolve host and default-project identity consistently (KRTX-2701) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10193
fix(api): session-list poll can no longer throw a body-disturbed TypeError (KRTX-2736) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10197
fix(api): tolerate expected stopped-runtime states in transcript mirror and inbox reads (KRTX-2723) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10201
chore(catalog): refresh model seeds by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10204
fix(api): journal and CR-merge contended responses set Retry-After inline (KRTX-2737) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10202
fix(api): throttle session-gate refusal warns; typed session_token_revoked body (KRTX-2369, KRTX-2728) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10205
fix(cli): persisted identity state survives the delegated sandbox env (KRTX-2702) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10198
fix(web): drop CookieYes banner.js consent-banner errors as third-party noise (KRTX-2739) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10208
fix: api-key lifecycle — hide revoked gateway keys, single-mint create guard, delete revoked personal keys (KRTX-2721) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10209
refactor(web,sdk): fold dead exports, split mega-components, localize diagram captions (KRTX-1992) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9928
fix(web): persist onboarding promo dismissals and stop the promo stacking on a wizard exit (KRTX-2715) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10199
fix(auth): email sign-in and recovery correctness (KRTX-2703) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10194
fix(web): name the signup confirmation email on the link step (KRTX-2195) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10203
fix: disclose secret intake delivery scope (KRTX-2411) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10170
fix(web): show the plan cap on /new before the first failed create (KRTX-2716) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10210
fix(session): provider failure recovery — internal continuations, one terminal error row, actionable suggestions, silent-turn clock (KRTX-2708) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10213
fix(api): reject agent config and model pins on an undeclared agent name (KRTX-2711) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10211
fix(manifest-schema): accept normalized enum values (KRTX-2538) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10173
fix(api): fail closed on an unknown database result shape in abandonSandboxTurn (KRTX-2771) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10215
fix(dev): stop owned laptop child processes on exit (KRTX-2690) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10191
fix(infra): capture-store tags scanner-readable — literal-keyed maps (KRTX-1649) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10217
test(api): restore the KRTX-470 last-opened detached-stamp enforcer deleted by #10058 by @agent-kortix in https://github.com/kortix-ai/suna/pull/10219
fix(api): emit build_succeeded once per provider-transition drive (KRTX-2767) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10223
refactor(sdk): simplify turn + attachment streaming internals (KRTX-2730) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10224
feat(legal): automated subprocessor notices: list, 30-day email to paid accounts, audit evidence, compliance skill by @markokraemer in https://github.com/kortix-ai/suna/pull/10216
fix(cli): accurate help routing — leading global flags, help topics, token usage, marketplace hints, policy help (KRTX-2710) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10221
refactor(tests): split and dedupe the tests-harness seams (KRTX-2666) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10226
fix(web): open the project shell's account menu on the signed-in identity, title the Settings dialog honestly (KRTX-2718) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10227
fix(web): delete the dead workspace palette row (KRTX-2587) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10225
fix(cli): webhook-secret 409 names the scope fix; add output signs the webhook (KRTX-2719) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10220
fix(web/mobile): accessible navigation targets on phone viewports (KRTX-2714) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10231
fix(api): lean participant roster and overlapped presence writes (KRTX-2727) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10232
refactor(mobile): dead surface, splits and dedupes in shared components (KRTX-2732) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10234
fix(connectors): sync summary agrees with the list, policy ls shows connector rules, All tab lists the project's own connectors (KRTX-2706) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10233
fix(api): stamp per-sandbox in-flight count on proxied request logs (KRTX-471) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10228
show refused auth email sends honestly and cool the link buttons down (KRTX-2704) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10206
feat(brand): kit.css — the UI primitives as portable k-* classes for HTML outside apps/web by @markokraemer in https://github.com/kortix-ai/suna/pull/10236
feat(brand): kit.css field primitives — k-input, k-field, k-check by @markokraemer in https://github.com/kortix-ai/suna/pull/10239
fix(tests): green the contract lanes for v0.14.2 by @markokraemer in https://github.com/kortix-ai/suna/pull/10237
Promote dev 894bcb1e90 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10240
feat(gateway): spend by source splits out workers (worker_sessions, worker_cost) by @markokraemer in https://github.com/kortix-ai/suna/pull/10241
docs(license): free white-label license; one requirement: Platinum as exclusive compute by @markokraemer in https://github.com/kortix-ai/suna/pull/10238
revert: feat(gateway): spend by source splits out workers (#10241) by @markokraemer in https://github.com/kortix-ai/suna/pull/10243
fix(apps): App releases take Platinum when configured; Convex images move to ghcr.io/convex by @markokraemer in https://github.com/kortix-ai/suna/pull/10244
fix(web): an opened App scrolls at once; its bar is Refresh, Open, Settings, Close by @markokraemer in https://github.com/kortix-ai/suna/pull/10245
fix(admin): Open as admin acts as the project's account by @markokraemer in https://github.com/kortix-ai/suna/pull/10246
fix: release-suite fallout for v0.14.2 (callback log injection, TOK-3, preview anchor) by @markokraemer in https://github.com/kortix-ai/suna/pull/10247
Promote dev abff5867ec to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10248
fix(iam): act-as may run every agent of the account it acts as by @markokraemer in https://github.com/kortix-ai/suna/pull/10249
fix(tests): admin-bypass retirement (#10246) and App bar (#10245) fallout by @markokraemer in https://github.com/kortix-ai/suna/pull/10251
Promote dev c405b5cfbd to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10252
Release v0.14.2 — Trigger run history, a bigger Free plan, and steadier sessions by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10242
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.14.1...v0.14.2
Read the full release on GitHub →
v0.14.1 October 17, 2026 New
Kortix Capture records only the apps and websites you include: an organization policy plus a per-computer list.
kortix.yaml version 3 agents can opt in to the project repository.
Fixed
kortix apps works again from CLI versions before 0.14.0. Since 0.14.0 every Apps command from an older CLI answered "Apps is not enabled for this project".
A plain member reads and sees only their own work: their own sessions, costs and directory entry. Owners and admins are unchanged.
The Usage cost summary no longer fails on a gateway row with an empty provider.
A correct two-factor code opens the app at once instead of asking again.
Loading older messages keeps you where you were reading.
A session's side panel comes back open when you return to the session.
Review moves under Customize. Members without the rights see no Review entry and no empty Apps row.
The account hub drops the floating "Back to Customize" pill.
Connectors drop the "User-managed" badge: a per-person connector shows ✓ or Needs setup.
An older agent daemon no longer receives a governance it cannot read.
Sales lead emails go out from production only.
Connector MCP sync uses a bound project secret, and adding a connector keeps kortix.yaml intact.
Under the hood
The session-log backfill keeps its progress in the database, so it resumes when the API leader moves and skips oversized sessions.
The retired project.customize.* permissions leave the catalog.
Model catalog refresh; staging and dev deploy fixes.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.14.0...v0.14.1
Read the full release on GitHub →
v0.14.0 October 16, 2026 New
One credits plan. Every account is on Free or Credits, with top-ups on either. Balances and usage read in credits everywhere; prices you pay stay in your currency. Raising your plan applies at once; lowering it takes effect at the next renewal, with a preview before you confirm.
Enterprise is a feature layer. SSO, SCIM, roles and groups, audit and branding come with an Enterprise license or a self-serve demo. Trials are gone. Admins can now manage billing.
Restorable sessions. A deleted session can be restored for 30 days, with Undo on web and kortix sessions restore. A session that lost its computer continues on a new one from its saved conversation, including images and files.
Pin and archive sessions to keep your list in order.
Generative UI. Agents can answer with visual blocks: cards, comparisons, photo steps, product cards, maps and figures, on web and mobile.
Themes. Kortix palettes plus 39 interface themes, with a live preview in the command palette.
Kortix Apps are generally available , and open in the session browser. Add any site as an external App by its URL, framed in Kortix. The App detail sheet, menu and connect dialog are rebuilt.
Kortix Capture , a desktop recorder for your account, with its own area on the web.
MCP servers connect from their URL in one step, with one-click OAuth sign-in. New MCP and Computer settings pages.
kortix.yaml version 3 is available as an opt-in: the project registers skills, tools and commands, and each agent enables what it uses. New projects still start on version 2, and nothing upgrades on its own. kortix migrate converts a project when you choose to.
Desktop: the Dock and taskbar icon counts finished turns you have not seen, and right-click shows the platform menu.
Improved
Toasts and notifications are redesigned and say what happened, under the right session.
The Customize and Models pages are redesigned; Slack and Teams have new connect flows.
pi sessions: codemode is on by default, images work on the computer, and summaries and compaction are steadier.
A session opens on its own model on web and mobile, and returning to a session tab no longer redraws the transcript.
A draft keeps its attached files across a session switch and a reload; a typed follow-up keeps Send during a turn.
Slash commands sent mid-turn wait for the agent to finish; @file and @agent mentions reach the agent on the first message.
A running compaction no longer opens on a blank page; its rows sit with the turn.
Project members with limited access see only the Customize tabs they can manage.
Fixed
The first renewal after checkout is no longer skipped.
Only the person who prompted a run, the owner or a manager can stop it, and everyone sees who stopped it.
Another person prompting a private session no longer runs with their own personal accounts.
A deleted session's transcript, prompts and config now return not found, like the session.
Shared sessions render their messages the same way the session does.
An idle computer no longer sticks in starting after an update, and a prompt sent while a config change applies reaches the agent.
Large agent configs boot; database connections retry when they never establish.
New computer images warm up the agent runtime again, so a fresh session starts faster.
Many smaller fixes across web, mobile, desktop, the CLI and connectors.
What's Changed
feat(api): a converted session log becomes native at its first journal write (P3.3) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9790
fix(web): KRTX-1771 show and announce copy feedback by @agent-kortix in https://github.com/kortix-ai/suna/pull/9741
fix(gateway): a budget meter shows the spend the gate counts for the budget's own period, and when it resets (KRTX-1725) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9789
feat(sessions): a deleted session is restorable for 30 days, with Undo on web and kortix sessions restore (KRTX-1734) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9792
fix(auth): default the return sign-in to the email-link path (KRTX-1653) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9773
feat(kortixd): the boot restores a session from its log when the native store is missing or behind (P6.4) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9794
test(e2e): journey 49 reads the new account back after the API answers by @markokraemer in https://github.com/kortix-ai/suna/pull/9795
refactor(web): keep turn bookkeeping exports private (KRTX-1709) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9732
feat(sdk): pi sessions read the session log (v2) like OpenCode ones (P5.2d) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9797
test(deps): verify the CodeMirror singleton pin holds on dev (KRTX-1650) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9763
test(config-releases): CFG-16 expects the snapshot or a git fetch, never the checkout by @markokraemer in https://github.com/kortix-ai/suna/pull/9799
feat(web): redesign the Customize pages and the Models page tabs by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9801
fix(kortixd): a relaunched daemon reaps the OpenCode a killed daemon left on its port (P2.9) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9802
fix(web): dev's test suite is green again (audit route list, 2 hardcoded strings, 5 ja/zh plurals) by @markokraemer in https://github.com/kortix-ai/suna/pull/9803
fix(session): the opened "Worked for" fold reads like the agent's narration, one named line per run of work by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9774
docs(learnings): strip credentials before an agent saves an API response by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9805
test: session-log tests run on v2 data; no web host file imports a v1 session type (P5.7) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9809
test(kortixd): adapters declare tested harness versions; a guard fails on an unvetted bump (P6.5) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9810
test(config-releases): CFG-16's second release may come from a git fetch too by @markokraemer in https://github.com/kortix-ai/suna/pull/9812
fix(api): surface Slack file-download failures and retry transient ones (KRTX-1658) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9787
feat(web): a tool from another harness renders by its session-log kind (P5.3) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9815
fix(auth): persist sign-in email failures (KRTX-1689) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9711
KRTX-2199: Keep demo qualifier on failed submission by @agent-kortix in https://github.com/kortix-ai/suna/pull/9710
fix(cli): store the sessions new --prompt verbatim; ship the worker contract as initial_context (KRTX-1547) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9618
fix(web): the 404 page owns its document title during client-side navigation (KRTX-1767) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9798
fix(kortixd): scrape_webpage waits out Firecrawl's timeout envelope; slow scrapes no longer fail at 35s (KRTX-2073) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9816
chore(catalog): refresh model seeds by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9820
fix(members): one offboarding sequence revokes a leaver's computer accounts and pauses their reminders (KRTX-1722) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9793
fix(secrets): a stored value Kortix cannot decrypt reads as undecryptable everywhere, with its remedy (KRTX-1719) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9821
fix(api): wake retries a host-saturated Platinum start instead of parking the session by @markokraemer in https://github.com/kortix-ai/suna/pull/9823
fix(release): promote approves the release PR's own gate run; rerun-once covers an approved attempt 2 by @markokraemer in https://github.com/kortix-ai/suna/pull/9824
chore(release): VERSION → 0.13.58 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9826
chore(release): staging VERSION → 0.13.58 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9827
docs(learnings): watch admin-grant-funded enterprise account balance before zero by @markokraemer in https://github.com/kortix-ai/suna/pull/9829
fix(api): suppress the daemon not-ready 503 on the session-abort completion line (KRTX-2277) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9822
fix(approvals): Approve and Deny show only to a viewer who can resolve the call; others see who decides (KRTX-1724) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9825
fix(self-host): an auto-confirmed email is unproven: no invite claim, SCIM match or add-by-email (KRTX-1715) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9828
fix(sessions): a turn cut short by a provider stop or a runtime restart gets its work back exactly once (KRTX-1732) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9830
test(e2e): journey 30 seeds ChatGPT logins the local API can decrypt (KRTX-1719) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9833
test(e2e): dev green again — journeys follow the provider sheet, named work lines, send-code and undecryptable secrets by @markokraemer in https://github.com/kortix-ai/suna/pull/9832
fix(web): sandbox empty-state New opens create mode, not stale edit (KRTX-2176) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9673
feat(web): the transcript shows a partial restore, a harness switch, hidden messages and full texts (P5.6) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9835
fix(kortixd): pi session log carries reasoning tokens, titles and a child context time; a manual compaction reaches the log at once (P2.10, P2.12) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9836
fix(api): memoize the session-list poll ETag — a poll burst no longer queues its own DB ops (KRTX-468) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9506
perf(connectors): read the projects and connectors rows once per /call (KRTX-2050) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9482
Stopped session no longer dead-ends: the tab wakes it when the human returns by @agent-kortix in https://github.com/kortix-ai/suna/pull/9682
fix(web): step-up dialog — add Set up authenticator for members with no second factor by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9838
refactor(web): review polish for KRTX-1587 Send now by @agent-kortix in https://github.com/kortix-ai/suna/pull/9677
fix(sessions): a session list page holds only sessions its viewer may open, and a delete keeps the list order (KRTX-2316) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9837
fix(sessions): a session id is read by id: GET /v1/sessions/:id, and the SDK and mobile use it (KRTX-2316) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9839
fix(review): the review counters read GET /review/summary, and the inbox and change-request lists are paged (KRTX-2316) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9842
docs(agents): web tsc baseline is 103 errors on dev; the bar is relative to dev by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9844
feat(genui): generative UI blocks for agent answers on web and mobile by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9502
feat(sessions): remove stateless sessions, boot modes and persistent machines by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9846
docs(learnings): keep a withdrawn field in a strict request schema as an inert key by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9847
fix(deps): regenerate pnpm-lock.yaml so frozen installs pass again by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9849
fix(web): localize the session filter menu's Teams section row (KRTX-2175) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9653
feat(api): the retention purge treats an account closure the deletion worker left open as the end of the subscription (D6b) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9850
feat(api): the API image runs Bun 1.4.3, the Bun of the test lanes by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9848
perf(tests): flows stop waiting on the 60 s git mirror; kortixd tests run 4 at a time by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9852
fix(web): refuse read-only SQLite mutations before they execute (KRTX-2229) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9818
feat(kortixd): pi drops another model's reasoning from requests and summaries; restore keeps same-model reasoning (P7.3, P7.2) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9855
chore: block two competitor names in commits; delete a dead comparison icon by @markokraemer in https://github.com/kortix-ai/suna/pull/9857
fix(sdk): session-log types copy carries P7.3's reasoning comment (drift test red on dev) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9858
docs(learnings): an api-contract session-log edit runs the SDK session-log tests by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9860
feat(session-log): switch preflight reports what a harness switch loses; kortixd keeps harness history across a switch (P7.1) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9862
fix(web): a file dropped outside a drop zone no longer replaces the page by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9863
fix(sessions): an app restart and a Sessions page reload show the kept session lists at once (KRTX-261) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9864
fix(sessions): a session open reads its saved history once, on web and mobile (KRTX-189) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9865
fix(kortixd): a release whose bun.lock is older than the image's cache still installs its tool deps by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9869
fix(cli): resolve named host identity for accounts (KRTX-2289) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9866
feat(manifest): agents..workspace.project_repository decides the session checkout by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9872
feat(starter): the starter kortix.yaml shows agents..workspace by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9873
perf(config-releases): build each base tip's release on push; pi boots from S3 with no API call by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9874
feat(mobile): the mobile session thread renders the session log; SDK block readers and v2 paging order (P5.4) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9875
chore(terraform): move the DCF-99 backup plan to eu-west-2; drop the us-west-2 state leftovers by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9871
fix(terraform): let the account delete the backup key alias and cancel its deletion by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9876
perf(config-releases): one upstream tip check per project per interval, shared by every box by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9880
fix(web): /settings/api-keys opens the Personal access keys tab (KRTX-2291) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9878
feat(web): ⌘V outside a text field pastes into the composer by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9881
fix(apps): volumes tell the truth and a database never splits on scale by @markokraemer in https://github.com/kortix-ai/suna/pull/9883
fix(web): account settings and the confirm dialog's default buttons speak the viewer's language (KRTX-2326, KRTX-2327) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9882
fix(web,sdk,cli,mobile): session-log P5 follow-ups: sub-agent loads, earlier-messages control, full-text plan, CLI provisional under ext by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9887
perf(kortixd): pi loads a release's ./ extensions by native import, not jiti by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9888
fix(cli): preserve the origin in logout recovery hints (KRTX-2323) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9879
feat(kortixd): pi 1.2.0; summaries drop reasoning upstream, 3 more provider errors retry by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9890
feat(llm-gateway): the gateway image runs Bun 1.4.3, the Bun of the test lanes by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9891
fix(session-log): answer 429 when another batch holds the session's lock, not a 25 s wait (KRTX-2344) by @markokraemer in https://github.com/kortix-ai/suna/pull/9892
docs(learnings): never let a request wait on a lock an abandoned request may hold (KRTX-2344) by @markokraemer in https://github.com/kortix-ai/suna/pull/9893
fix(cli): use saved default for unlinked ship (KRTX-2324) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9886
fix(pi): a new message dismisses an open question, so no session wedges behind it by @markokraemer in https://github.com/kortix-ai/suna/pull/9900
fix(web,sdk): zero the prod frontend Better Stack error groups by @markokraemer in https://github.com/kortix-ai/suna/pull/9901
feat(web): link pages on the auth frame, share page redesign, mobile app intro, Terms on /legal, toolbar button groups by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9903
fix(api): a compaction marks its /summarize turn durable on both harnesses (P2.11) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9905
feat(web): interface themes — Kortix palettes plus 39 terminal themes, product routes only by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9904
fix(api): release a trigger session's question at once; nobody can answer it by @markokraemer in https://github.com/kortix-ai/suna/pull/9908
fix(config-releases): an agent without the project repository loads its project tools by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9909
fix(sdk,web,cli): context modal no longer crashes with 20+ sub-agents; rows load in view; CLI prints failed-call errors by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9910
fix(auth): KRTX-2337 return 429 for rate-limited send-code by @agent-kortix in https://github.com/kortix-ai/suna/pull/9885
fix(api,kortixd): an idle box no longer sits in starting after a daemon deploy; the tick stops racing its own swap by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9907
fix(kortixd): no tool-load warning while no project tree is served; learnings entry for #9909 by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9913
feat(kortixd,api): session-log restore keeps tool-input key order, stops context-record growth, and imports OpenCode threads at once (P6 follow-ups) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9917
fix(api): a failed regional template copy boots the session in the home region by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9916
feat(billing): credits-only — one credits plan from $50, top-up bonus, 5.5% model fee, no legacy plans by @markokraemer in https://github.com/kortix-ai/suna/pull/9814
feat(capture): Kortix Capture — account-tenant platform, Capture Intelligence (episodes, workflows, skills), data API, web area, desktop service by @markokraemer in https://github.com/kortix-ai/suna/pull/9008
fix(auth): bound reset-link requests and keep send errors visible (KRTX-2251) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9877
fix(tests): attest only the source the run started on by @markokraemer in https://github.com/kortix-ai/suna/pull/9931
feat(billing): one plan system — Enterprise contracts, dated trials, admins manage billing by @markokraemer in https://github.com/kortix-ai/suna/pull/9930
fix(db): backfill-safe sign-off on the billing data migration; migration lint in the packages lane by @markokraemer in https://github.com/kortix-ai/suna/pull/9932
fix(sdk): dedupe permission replies and answer the runtime's already-answered 404 (KRTX-2190) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9933
fix(api): report ready Automatic sandbox health (KRTX-2346) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9895
chore(catalog): refresh model seeds by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9936
fix(web): resolve workspace document file links against the document's directory (KRTX-2226) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9819
fix(web): treat WebKit masked-extension URLs as browser-extension noise (KRTX-1828) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9911
test(e2e): journeys close the mobile-app promo and get Enterprise from a trial (dev browser lanes red since #9903 and #9930) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9937
fix(web): the SSO edit dialog keeps what the admin typed when the provider refetches (KRTX-2401) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9938
fix(web): the sandboxes migrations hint is translated and plural-aware; the debug tools page drops a dead toggle (KRTX-2383, KRTX-2384) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9939
fix(web): audit quick filters work in every language, and the secret titles are translated (KRTX-2399, KRTX-2400) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9940
fix(connectors): give shellless agents the legacy connector tools (KRTX-2354) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9902
fix(gateway): a gateway API key records a used-up shared ChatGPT account (KRTX-2417) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9941
fix(web): KRTX-2284 guard stale game-of-life logo loads by @agent-kortix in https://github.com/kortix-ai/suna/pull/9861
feat(sessions): pin a session to the top or archive it out of your list (KRTX-2418) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9942
fix(teams): drop the "Task complete" title from finished reply cards by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9944
fix(sdk,web,api): every sub-agent row in session usage reads its runtime messages; one turn's sub-agents are all saved by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9943
fix(web): parseListing trims trailing slashes in linear time; fallback test strips tags without a regex (CodeQL) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9947
Promote dev fbc93ddda2 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/9945
fix(tests): shard table lists 52-session-pin-archive; drop 3 unused symbols CodeQL flagged by @markokraemer in https://github.com/kortix-ai/suna/pull/9950
feat(sessions): continue a lost session on a new computer from its saved conversation (KRTX-2419) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9949
Promote dev fbc93ddda2 + CodeQL fix to staging by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9948
fix(billing): KRTX-2405 remove Link phone gate from hosted Checkout by @agent-kortix in https://github.com/kortix-ai/suna/pull/9946
fix(tests): two release-gate flows hold on deployed staging (SESS-51, SESS-24) by @markokraemer in https://github.com/kortix-ai/suna/pull/9954
hotfix(tests): SESS-51 expects the removal-pending 409 only on the local profile by @markokraemer in https://github.com/kortix-ai/suna/pull/9953
fix(apps): full-window app previews (KRTX-2357) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9952
feat(apps): Apps is generally available — remove the apps feature-flag gate (KRTX-2355) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9934
fix(sessions): only the prompter, owner or a manager can stop a run, and everyone sees who stopped it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9956
fix(web): a signed-out session stops rendering protected pages (KRTX-2387) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9955
docs(learnings): guard a provider-unreachable flow step on the local target by @markokraemer in https://github.com/kortix-ai/suna/pull/9957
feat(web,mobile): redesign toasts, session and trigger notifications by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9961
fix(web): Skip for now closes the onboarding wizard, and the mobile app promo waits for onboarding (KRTX-2378, KRTX-2396) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9963
fix(worktree): search past busy slots and never reuse a registered slot by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9965
fix(tests): repair the two apps/api unit files #9949 turned red (KRTX-2429) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9964
feat(web): rebuild the App detail sheet, menu, connect dialog and machines by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9966
fix(api): a deleted session's transcript, prompts and config read 404, as the session does (KRTX-2275) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9967
feat(pi): codemode on by default; a script's tool calls pass the permission policy by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9958
fix(billing): no Most popular badge on the credit tiers by @markokraemer in https://github.com/kortix-ai/suna/pull/9969
fix(web): forced billing refreshes debounce per QueryClient and account, so one account no longer cancels another's (KRTX-2414) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9970
test(e2e): journey 27 picks the theme from the Appearance combobox (#9904) by @markokraemer in https://github.com/kortix-ai/suna/pull/9971
fix(web): session toasts say what happened, under the right session by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9976
fix(tests): journeys 40, 34, 30 and 23 follow the shipped session and share behavior by @markokraemer in https://github.com/kortix-ai/suna/pull/9975
feat(billing): Enterprise is a feature layer — a trial lends features, not the plan by @markokraemer in https://github.com/kortix-ai/suna/pull/9978
fix(kortixd,api): a prompt sent during a config convergence reaches the live OpenCode; a provider-edge refusal is retried by @markokraemer in https://github.com/kortix-ai/suna/pull/9980
feat(session-log): the journal stores attachment bytes, so a restore on a fresh box keeps images and files (P2.13) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9977
feat(web): Slack and Teams connect heroes, BYO wizards, avatar and checkbox refresh by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9982
feat(genui): visual answers with photo steps, product cards, maps, and figures by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9962
feat(billing): BYOK fee — first $1,000/month of list-price usage free, then 5% by @markokraemer in https://github.com/kortix-ai/suna/pull/9984
feat(api): dev turns session_log_restore on for every project; a deployment default decides it by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9986
feat(billing): BYOK fee is an entitlement, on by default, switchable per account by @markokraemer in https://github.com/kortix-ai/suna/pull/9987
fix(api,kortixd): a compiled agent config over 128 KiB boots, and no daemon is handed one it cannot hold by @markokraemer in https://github.com/kortix-ai/suna/pull/9988
fix(tests,web,mobile): green dev — pricing smoke, spec 26 fee, Capture fixture, i18n audit, codemode coverage by @markokraemer in https://github.com/kortix-ai/suna/pull/9983
fix(connectors): classify transient Composio provider failures as a retryable 503 (KRTX-2424) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9991
feat(web): MCP and Computer settings pages by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9992
fix(web): paste tiles render for blank-line pastes, trim, matched Copy; queued row actions menu by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9993
refactor(billing): Enterprise is a feature layer (off | demo | licensed); trials removed by @markokraemer in https://github.com/kortix-ai/suna/pull/9999
fix(mobile): sync the Teams mark's fill form with the refreshed web icon (KRTX-2454) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9994
feat(manifest): kortix.yaml v3 is canonical: the project registers, each agent enables by @markokraemer in https://github.com/kortix-ai/suna/pull/10000
fix(kortixd): an OpenCode v3 session whose agent its ref does not declare runs default_agent by @markokraemer in https://github.com/kortix-ai/suna/pull/10002
fix(cli): kortix migrate converts split manifests, folder-only agents and the whole harness folder by @markokraemer in https://github.com/kortix-ai/suna/pull/10003
docs(learnings): prove a harness config change in a real session on both harnesses by @markokraemer in https://github.com/kortix-ai/suna/pull/10004
feat(billing): credits everywhere for what you hold or spend; instant upgrade, scheduled downgrade with preview; fix skipped first renewal by @markokraemer in https://github.com/kortix-ai/suna/pull/10007
fix(web): route the two hardcoded UI strings through the i18n catalog (KRTX-2430) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9974
fix(cli): show the gateway URL when minting or listing gateway keys (KRTX-1750) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9990
chore(web): align the checkbox disabled cursor reason with the file's own wording (KRTX-2455) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10006
test(shared): make the codemode fixture's denied-call error match the sandbox (KRTX-2449) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9989
docs(web): anchor the KRTX-2292 iOS WebView stack-overflow fingerprints on the noise rule (KRTX-2292) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9919
chore(catalog): refresh model seeds by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10011
test(sdk): sweep the script family's failure phrasing too (KRTX-2450) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9998
perf(api): memoize share-subject + app access-grant reads per request (KRTX-2341) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10001
test: attest the green packages lane at dev (KRTX-2456; hero snapshot fix landed via #9974) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9996
fix(api): classify an in-flight sandbox state transition as a typed 409, not a 500 (KRTX-2028) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9920
fix(llm-gateway): drop gpt-5.5 from the Codex lineup (KRTX-2445) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9981
fix(web): map the session-log blob routes in the audit route registry (KRTX-2457) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10005
test(apps): pin OR semantics of multi-group App access (KRTX-2352) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9923
fix(api): another person prompting a private session no longer runs with their own personal accounts (KRTX-2517) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10012
fix(connectors): one Slack entry across install paths (KRTX-2353) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9921
fix(api): answer a non-uuid review item id like a miss, not a 500 (KRTX-2442) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10013
feat(desktop): count finished turns you have not seen on the Dock and taskbar icon (KRTX-2520) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10015
fix(web): stop settings:computer palette row from answering "apps" (KRTX-2475) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10010
fix: export the conversation of a sleeping session from its saved copy (KRTX-2525) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10021
fix(sdk,web): announce a turn that ends after you leave its session page (KRTX-2524) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10020
fix(db): guard postgres.js nextWrite against a socket closed mid-write (KRTX-2511) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10019
KRTX-2026: db lane grants session_replication_role to postgres at lane start by @agent-kortix in https://github.com/kortix-ai/suna/pull/10017
fix(web): theme picker announces the applied theme, neutral check-your-email copy, German shortcut term, project settings URL (KRTX-2468, KRTX-2516, KRTX-2470, KRTX-2491) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10025
fix(db): retry a statement whose connection never established (KRTX-2510) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10023
fix(api): purge a project's connector rows when the project is purged (KRTX-1907) by @agent-kortix in https://github.com/kortix-ai/suna/pull/10018
feat(web): preview a theme while it is highlighted in the command palette by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10027
fix(sdk): returning to a session tab no longer re-reads and redraws the transcript (KRTX-2541) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10028
fix(web): hold a slash command sent mid-turn and run it when the agent finishes (KRTX-2464) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10029
feat(web): add the Jellybeans Light theme and keep the user bubble visible on light themes by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10031
fix(test): refuse a suite-wide pnpm test on a developer Mac by @markokraemer in https://github.com/kortix-ai/suna/pull/10032
fix(web): CSV viewer download uses the viewer's file name (KRTX-2230) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9840
fix(manifest): make kortix.yaml v3 opt-in again; new projects start on v2, no v3 upgrade offer by @markokraemer in https://github.com/kortix-ai/suna/pull/10034
fix(web): /download/capture never redirects to the internal host; dev serves the dev channel by @markokraemer in https://github.com/kortix-ai/suna/pull/10035
fix(web): an unresolved command chip can no longer carry attachments out as a prompt (KRTX-1903) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9995
fix(kortixd): pi relays the /summarize turn under its compaction id; the id-less durable rule goes by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10033
fix(web): cancel game-of-life resize on unmount (KRTX-2280) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9854
fix(web): add an MCP server from its URL in one step, Only you by default (KRTX-2185) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10039
fix(llm-gateway): move a stale ChatGPT default off a model ChatGPT refuses by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10040
feat(sessions): /workspace on a Platinum volume behind the workspace_volume flag by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10047
fix: clear the staging promotion scanners (gitleaks, Trivy, squawk, Checkov, Drata, CodeQL) by @markokraemer in https://github.com/kortix-ai/suna/pull/10042
feat(session-log): cap the restore at 24 MiB; over it the box boots with the D3 note alone by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10043
fix(web): @file and @agent mentions reach the agent on a chat's first message and in slash commands (KRTX-2553) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10049
fix(tests): e2e Enterprise fixture uses the demo; Apps specs drop the retired flag gate by @markokraemer in https://github.com/kortix-ai/suna/pull/10038
fix(desktop): right-click shows the platform menu: spelling, edit, link and image (KRTX-2555) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10051
fix(kortixd): pi sees images on a box (embedded photon wasm, prompt images inline) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10048
test(ci): packages lane 18.5 -> 6.9 min: four parallel lanes, no real-clock waits in unit tests, balanced shards by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10054
fix(web): mobile app intro shows the current App Store shot and the official store badges by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10055
fix(share): render a shared session's messages as the session does by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10052
fix(sessions): web and mobile open a session on its own model by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10056
fix(web): a typed follow-up keeps Send during a turn, and one bad file no longer blocks a drop (KRTX-2556, KRTX-2557) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10057
Testing reset: one tree, one run — no Tests on push to dev, no attestations, 9 money-path browser specs, 220 low-value test files deleted by @markokraemer in https://github.com/kortix-ai/suna/pull/10058
fix(connectors): MCP OAuth sign-in completes (Basic auth sends no body client_id); hide the empty shared account; no 404 toast on remove (KRTX-2185) by @markokraemer in https://github.com/kortix-ai/suna/pull/10053
feat(web): open Kortix Apps in the session browser (KRTX-2441) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10045
docs(project): v3 slash commands are declared in kortix.yaml and enabled per agent by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10060
fix(web): config fallback chip shows an amber badge, a two-step timeline and the full error by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10062
test(api): session-log blob slot tests hold Storage instead of a fixed delay by @markokraemer in https://github.com/kortix-ai/suna/pull/10037
fix(sdk): a new session no longer shows under Pinned in the sidebar by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10059
fix(web): a draft keeps its attached files across a session switch and a reload by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10064
fix(api): a lost session's /start answers from the row instead of re-checking the provider every call (KRTX-2566) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/10066
fix(sdk): a compaction inside a turn renders where it happened, not at the bottom by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10067
fix: staging gate round 2 — v2 starter fallout of #10034 (image warm-up), i18n order, React Compiler test lint, hot-path capture race by @markokraemer in https://github.com/kortix-ai/suna/pull/10050
fix(api): stop re-reporting an already-parked lost runtime on every /start poll by @agent-kortix in https://github.com/kortix-ai/suna/pull/10070
fix(web): limited project members see only the Customize tabs they can manage by @sutharjay1 in https://github.com/kortix-ai/suna/pull/10068
fix(web): a running compaction no longer opens on a blank page; its rows sit with the turn by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10072
revert(tools): remove the MCP-era connector meta-tools; connectors are the kortix CLI only by @markokraemer in https://github.com/kortix-ai/suna/pull/10073
ci(capture): sign and notarize the macOS pkg; stable refuses an unsigned one by @markokraemer in https://github.com/kortix-ai/suna/pull/10074
Promote dev 802123a7bf to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/10069
Test latency: one Promote dispatch, one release suite as the only gate; tsgo, pnpm check, Mac guard, faster CodeQL by @markokraemer in https://github.com/kortix-ai/suna/pull/10075
Promote dev c28c0c9726 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10076
feat(capture): compile in the update signing public key by @markokraemer in https://github.com/kortix-ai/suna/pull/10077
feat(connectors): Install uses the app's own MCP server when sign-in is one click; CLI OAuth callback says Connected (KRTX-2185) by @markokraemer in https://github.com/kortix-ai/suna/pull/10078
revert(sessions): remove /workspace on a Platinum volume (#10047) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/10079
fix(ci): Promote finds the Deploy Staging run; find_run's optional sha no longer trips set -u by @markokraemer in https://github.com/kortix-ai/suna/pull/10080
Promote dev 550441d62f to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10081
feat(capture): choose the Kortix API address in the app by @markokraemer in https://github.com/kortix-ai/suna/pull/10082
Dev green: fix the last red tests, fake clocks, no quarantine, staging App origin, mcp-sign-in-check audit label by @markokraemer in https://github.com/kortix-ai/suna/pull/10084
docs(audit): regenerate the audit action reference (mcp_sign_in.check) by @markokraemer in https://github.com/kortix-ai/suna/pull/10085
Promote dev 3771bb37e4 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10086
fix(manifest): a v2 manifest with imports keeps skills, commands and extensions out of the merge by @markokraemer in https://github.com/kortix-ai/suna/pull/10087
fix(permissions): the most specific rule wins on both harnesses, whatever the key order by @markokraemer in https://github.com/kortix-ai/suna/pull/10089
feat(apps): external Apps — add any site by URL, framed in Kortix by @markokraemer in https://github.com/kortix-ai/suna/pull/10090
docs(learnings): gate every new manifest key on kortix_version (near-miss #10087) by @markokraemer in https://github.com/kortix-ai/suna/pull/10091
fix(tests): billing journey drives the credits tier dropdown, not the retired preset radiogroup by @markokraemer in https://github.com/kortix-ai/suna/pull/10092
Promote dev 3619f16275 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10093
fix: clear the v0.14.0 release gate — kortixd bundles permission-rules, spec flow-id parse, billing subscribe on the ladder, connector Settings tab scope by @markokraemer in https://github.com/kortix-ai/suna/pull/10094
Promote dev 39d8f39cb0 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10095
fix(tests): billing journey reads Renews for an active plan and tops up a current preset by @markokraemer in https://github.com/kortix-ai/suna/pull/10096
Promote dev 403b502060 to staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10097
Release v0.14.0 — Credits plan, Enterprise features, restorable sessions and generative UI by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/10083
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.57...v0.14.0
Read the full release on GitHub →
v0.13.57 October 14, 2026 New
Files handles big folders. A folder with thousands of files loads in pages with Load more , and Find a file now searches file contents as well as names.
Arrange your project sidebar. Choose and order the items in the project sidebar. The layout is saved on your account, so it follows you to every browser.
Send now on queued messages. Each message waiting in the queue has its own Send now , so you can push one ahead without clearing the rest.
Know how long your sandbox stays on. The composer tells you how long the sandbox stays running while you are in the session.
Mobile settings drill down into each section, and a mobile invitee lands directly in the project they were invited to.
Backend cards show a live preview of their Dashboard tab.
Quick Entry on desktop. Start a session from any app with a global shortcut.
Spreadsheet previews in the Repo page , read straight from git.
Redesigned account settings. Sections are grouped under General, Access and Billing; inviting, granting access, creating tokens and registering apps open in a side sheet next to the page; new avatars.
Improved
An agent's question docked on the composer collapses to one line, so it no longer covers the conversation.
The reminders calendar stays readable on busy projects.
Sidebar, settings and count badges are more consistent across web and mobile.
Long Slack turns are no longer stopped at 30 minutes.
Sending a prompt is faster: it no longer waits for config updates, environment loading or model catalog repair to finish first.
Warm sessions no longer appear in the sidebar list.
A session whose agent asked you a question shows Needs you until you answer, and the question closes when the wait ends.
A plain member sees only the members and groups they share access with.
Web and mobile show only the trigger, review, settings and top-up controls your role allows.
A connector whose first sync fails or needs a sign-in opens on its page with the next step ready.
Content of a deleted session is now removed 30 days after the deletion, and its files 7 days after that.
Groundwork for the new session history: long session texts are stored as attachments, and tool results render from the new session log where it is turned on.
Sandboxes and CI run Bun 1.4.3.
Fixed
A personal access token can now approve gated connector calls.
Changing only the expiry of someone's account access now saves.
An App whose machine failed to start recovers on its own the next time it wakes.
A failed autosave on repository settings or a workspace rename no longer retries forever.
Web Push and the inbox follow the same MFA rule as the rest of your access.
On mobile, the drawer closes as soon as you navigate.
The Files New menu offers only actions that work, and sharing never suggests yourself.
Turning Volumes on never makes an organization stateless, and every server agrees on the Volumes setting right after a change.
A pi project's local ./ package loads from the config release and restarts pi when it changes.
Malformed account IDs and stray characters in session logs return a clear 4xx error instead of a server error.
The composer's stacked layers line up at full width.
kortix sessions wait-for exits non-zero when the turn fails, and the CLI prints a preview URL on the host the deployment serves.
A prompt sent without an agent runs under the session's agent.
An App can give its readers access to the Apps it uses, and the App header shows which App you are in.
SSO-only workspaces end the sign-ins they refuse and refuse personal access tokens; mobile sends an SSO-enforced email to SSO.
Deleting an account stays blocked when its status check fails.
Session screens show their labels in your language.
Starting, restarting and repairing a session's box no longer race each other.
Apps with volumes deploy without naming a provider, and account commands follow the project link.
Logging out of the CLI keeps the registered host, and kortix connectors confirms a revocation before it reports success.
Volumes and Stateless sessions are per-project settings.
Mobile session lists keep loading past empty pages, and the audit log's Session filter accepts a pasted id.
The agent tunnel records that it is offline even when it is stopped right after starting.
Behind the scenes
Every merge to dev now runs the full test suite, and releases promote only a tested commit.
Database migrations commit one file at a time, which removes the deadlock that stalled the v0.13.54 deploy.
Each Terraform environment keeps its state in its own region, and the security alert hub moved to eu-west-2.
Unused infrastructure stacks were removed.
Security fixes from an external penetration test, and row-level security on every internal table.
Staging now runs on the same infrastructure shape as production, so release checks see what production sees.
What's Changed
docs(learnings): a per-build provider template needs a bounded reaper, not a predecessor prune by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9617
fix(cli): sessions wait-for exits non-zero on a failed turn (KRTX-1560) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9616
feat(api): session-log text over 256 kB lives in session-attachments (P2.3) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9622
fix(db): migrate up commits each migration file on its own (v0.13.54 prod deploy deadlock) by @markokraemer in https://github.com/kortix-ai/suna/pull/9627
feat(web): tool renderers read session-log blocks; the SDK serves a fromV1 view when v2 is off (P5.1) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9628
test(e2e): journey 23 reads the proposed account name at Continue by @markokraemer in https://github.com/kortix-ai/suna/pull/9629
fix(boot-mode): Volumes on never makes an organization stateless by @allenabraham999 in https://github.com/kortix-ai/suna/pull/9621
fix(files): New menu offers only what works; sharing never lists yourself by @allenabraham999 in https://github.com/kortix-ai/suna/pull/9630
fix(web): close the mobile drawer when the navigation commits (KRTX-1591) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9623
feat(api): name pool-queue saturation on the slow completion line (KRTX-1571) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9633
fix(volumes): every API instance agrees on the Volumes policy right after a flip by @allenabraham999 in https://github.com/kortix-ai/suna/pull/9635
refactor(api): split http-broker.ts into errors, substitution, gate and transport (KRTX-1594) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9631
fix(infra): prod API keeps the live 200%/100% rolling overlap; AWS refuses maximum_percent <= 100 with AZ rebalancing on by @markokraemer in https://github.com/kortix-ai/suna/pull/9636
refactor(channels): split install-store into per-platform install modules (KRTX-1593) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9638
chore(release): staging VERSION → 0.13.57 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9640
chore(release): VERSION → 0.13.57 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9641
chore(catalog): refresh model seeds by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9642
test(api): seed the volumes policy row the drive routes read fresh (KRTX-2165) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9643
test(web): pin the drawer docs link's deliberate document load (KRTX-1592) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9632
test(api): interleave the session-log-blobs perf reads so both p50s share machine conditions (KRTX-2158) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9639
refactor(api): flatten openUpstream into framing, write and response helpers (KRTX-1597) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9647
fix(notifications): Web Push and the inbox follow the access MFA rule; super admins pass it (KRTX-1742) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9650
fix(session-log): live puts keep each open call's v1 residual; kortixd puts on a tool status or metadata-key change (P4.7) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9658
feat(api): the transcript capture also writes the session log for a box without a journal (P2.7) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9659
fix(web): load the en catalog from the app bundle, no network round-trip (KRTX-1614) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9654
fix(api): split missing-header and non-Bearer-scheme 401s (KRTX-2168) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9651
fix(api): the journal marker needs content; the v1 window serves the mirror when the log is behind it (P2.7b) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9661
fix(web): failed autosave no longer refires forever on repo settings and workspace rename (KRTX-2156) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9657
fix(apps): a machine whose box failed to start is recovered in place on wake by @markokraemer in https://github.com/kortix-ai/suna/pull/9663
chore(infra): remove the destroyed us-west-2 dev and staging stacks by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9664
feat(session): collapse the docked agent question to one line (KRTX-2182) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9666
fix(web): composer stack layers are full width and square under a visible strip by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9669
feat(web): per-row Send now on queued chat messages (KRTX-1587) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9662
feat(web): customizable project sidebar nav by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9671
fix(api): sanitize lone UTF-16 surrogates out of session-log journal batches; malformed account ids answer 4xx, never 500 (KRTX-211) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9670
feat(web): a backend card shows its Dashboard tab's live preview by @markokraemer in https://github.com/kortix-ai/suna/pull/9672
feat(sessions): the composer says how long the sandbox stays on while you are here (KRTX-1729) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9674
chore(infra): remove the abandoned us-east-2 prod shadow by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9675
feat(api): retention purge for the session log, the v1 mirror and session-attachments (P2.8) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9676
feat(web): calm the reminders calendar on busy projects by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9667
feat(files): big folders load in pages with Load more, and Find a file searches contents (KRTX-1723) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9678
fix(web): remove the confetti from the project home heading by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9679
chore(infra): move the security alert hub from us-west-2 to eu-west-2 by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9680
fix(api): long Slack turns are no longer aborted at 30 minutes by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9681
fix(pi): a ./ pi package loads from the config release and restarts pi when it changes by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9684
feat(infra): eu-west-2 Terraform state bucket (step 1 of the per-region state move) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9685
feat(web): sidebar, settings and count polish; settings drill-down on mobile by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9687
feat(invites): a mobile invitee lands in the invited project, and every host lands through one SDK rule (KRTX-1731) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9688
fix(web): the sidebar layout is saved on the account, not only in the browser by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9689
feat(infra): every Terraform root keeps its state in its own region (step 2 of the per-region state move) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9693
chore(infra): commit the state-move scripts; the release flow runs them once for staging and prod by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9696
feat(sdk): block turn layer over the session log; fromV1 live mode keeps an in-context reply with an open call streaming (P5.2b) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9697
fix(dev): repair dev — revert #9654 (journey 34), Files journey 42 paging, transcript-capture timeout by @markokraemer in https://github.com/kortix-ai/suna/pull/9699
Release latency: test every dev merge, promote green SHAs, trustworthy gate, safer deploys by @markokraemer in https://github.com/kortix-ai/suna/pull/9626
fix(web): persist expiry-only account access edits (KRTX-2187) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9698
Merge staging back into dev so promotions fast-forward; agent-tunnel SIGTERM race by @markokraemer in https://github.com/kortix-ai/suna/pull/9702
fix(api): let a personal PAT resolve gated connector-call approvals (KRTX-1921) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9700
fix(infra): deny-old-keys backs up into a fresh temp dir (CodeQL high on #9703); release skill: promotions against squash-only dev by @markokraemer in https://github.com/kortix-ai/suna/pull/9705
fix(web): Sessions surfaces read their labels from the i18n catalog (KRTX-2188) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9692
chore(catalog): refresh model seeds by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9708
fix(cli): print the preview URL on the host the deployment serves (KRTX-1909) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9704
fix(sso): SSO-only ends the sign-ins it refuses, a PAT is refused, and mobile sends an enforced email to SSO (KRTX-1716) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9709
fix(web): the delete-account gate fails closed on a failed status check (KRTX-2177) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9691
fix(worktree): bridge fresh sandbox launch environment (KRTX-2189) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9707
fix(api): store NUL and lone-surrogate strings in the session log (KRTX-2178) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9690
Promote dev ec3f312e12 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/9706
feat(api): session-log restore claim for a fresh box (P6.1) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9714
fix(api): warm sessions stay out of the visible sidebar list by @agent-kortix in https://github.com/kortix-ai/suna/pull/9695
fix(kortixd): pi tool parts name the model's call id, so v2 live puts keep their call_id at turn end (P4.8) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9717
fix(api): the restore route answers on the API image's Bun 1.2 (P6.1 fix-forward) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9720
feat(web): the action panel, the context modal and the turn rows read session-log blocks (P5.2) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9721
fix(files): Repo page previews spreadsheets from git; runtime errors drop the opencode-sdk label by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9722
feat(api): backfill worker that gives mirror-only sessions their session log (P3.1) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9725
feat(infra): us-east-1 Terraform state bucket for the vps-demo root by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9727
feat(kortixd): pi restore step writes a session log into pi's native store (P6.2) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9729
perf(sessions): a prompt no longer waits for config convergence, env resolve, pi catalog repair or CLI /start by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9730
feat(api): session-log backfill infers pi from the root id, validates every log, counts round-trip mismatches (P3.2) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9731
fix(api): the sandbox-proxy trigger-session override asks the canonical action (KRTX-1619) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9726
feat(worktree): --db gives a worktree its own database in the primary Supabase by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9734
fix(session-log): the view comparison ignores tool-input key order by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9736
perf(tests): pnpm test runs only what the diff affects and reuses green lane groups by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9735
feat(kortixd): OpenCode restore step writes a session log into opencode.db (P6.3) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9739
fix(tests): the attestation's scratch index keeps git's racy-entry check by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9740
fix(apps): a reader an App admits gets tokens for the Apps it uses (via_app_id); the App header shows the App by @markokraemer in https://github.com/kortix-ai/suna/pull/9742
feat(desktop): Quick Entry — start a session from any app with a global shortcut by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9649
fix(api,sdk): a prompt without an agent runs under the session's agent; sdk credentialHeader, quiet session-sync, readonly useChatTurns by @markokraemer in https://github.com/kortix-ai/suna/pull/9744
Promote dev 5c4b381706 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/9747
fix(security): close the 2026-10-13 pentest findings at the origin by @markokraemer in https://github.com/kortix-ai/suna/pull/9749
test(web): a chat-identity connect retries after the MFA step-up (KRTX-940) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9748
feat(web): the transcript and session chat render session-log block turns (P5.2c) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9751
fix(cli): KRTX-1761 keep registered host on logout by @agent-kortix in https://github.com/kortix-ai/suna/pull/9737
feat(account-hub): account settings redesign, Avatar v2, hub split sheet by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9750
fix(api): one owner per box start — restart waits out a live wake, repair claims its run, Platinum start joins in-flight starts by @markokraemer in https://github.com/kortix-ai/suna/pull/9752
fix(connectors): a first sync that fails or needs a sign-in lands on the connector page with the next step open (KRTX-2185) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9753
fix(infra): empty the dev and staging VPC default security groups (Drata test 233) by @markokraemer in https://github.com/kortix-ai/suna/pull/9756
chore(tests): drop the pre-push test attestation gate; the author picks the tests by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9758
Staging runs like prod (no Spot), the gate reruns itself, the edge retries a dropped GET; SESS-18 test fix by @markokraemer in https://github.com/kortix-ai/suna/pull/9764
fix(api): commit-push names the upstream failure by @markokraemer in https://github.com/kortix-ai/suna/pull/9765
fix(feature-flags): Volumes and Stateless sessions are per-project flags, not organization-wide by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9755
feat(cli,tui): sessions log reads the session log; CLI, TUI and whitelabel render session-log blocks (P5.5) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9767
fix(boot): config and workspace providers boot independently; boot timeline reports config only by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9770
fix(sessions): mobile lists read past empty pages, and the audit Session filter searches and takes a pasted id (KRTX-1727) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9769
feat(iam): a plain member sees only the members and groups they share access with by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9771
fix(apps,cli): Apps with volumes deploy on Platinum without --provider; account commands follow the project link; App copy says machine by @markokraemer in https://github.com/kortix-ai/suna/pull/9775
chore(secrets): rotate the Platinum API keys by @markokraemer in https://github.com/kortix-ai/suna/pull/9776
fix(api): GET …/log serves a session-bound PAT under the transcript route's gate by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9778
fix(sessions): a stored question closes when the wait ends, and a waiting session reads Needs you on web and mobile (KRTX-1739) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9772
fix(permissions): web and mobile offer only the trigger, review, settings and top-up controls the API allows (KRTX-1720) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9779
fix(dev): account-hub i18n audit and journey 22 after #9750 by @markokraemer in https://github.com/kortix-ai/suna/pull/9780
fix(db): close stored agent questions the KRTX-1739 rules prove stale (KRTX-1739) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9781
test(e2e): journey 27 follows the #9750 hub titlebar (no search button) by @markokraemer in https://github.com/kortix-ai/suna/pull/9783
fix(cli): verify connector revocation before reporting success (KRTX-1664) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9712
feat(admin): remove the Boot modes page by @allenabraham999 in https://github.com/kortix-ai/suna/pull/9784
fix(web): linear trailing-slash trim and caret-ANSI strip (CodeQL ReDoS) by @markokraemer in https://github.com/kortix-ai/suna/pull/9786
Promote dev d888f389ea to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/9791
Hotfix: v0.13.57 release-gate tests (CFG-16, journey 49) by @markokraemer in https://github.com/kortix-ai/suna/pull/9806
Hotfix: v0.13.57 release-gate test CFG-16 step 2 by @markokraemer in https://github.com/kortix-ai/suna/pull/9813
Release v0.13.57 — Big folders in Files, a sidebar you arrange, and redesigned account settings by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9715
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.56...v0.13.57
Read the full release on GitHub →
v0.13.56 October 12, 2026 New
Tools run on both harnesses. A tool is one module that OpenCode and pi both run. Declare a project's own tools under tools: in kortix.yaml, and limit which agents see them with agents.<name>.tools.
The Kortix tools are listed in kortix.yaml. web_search, image_search, scrape_webpage, memory and show appear as kortix:<name>. Delete a line to remove that tool. kortix tools ls lists a project's tools, and kortix tools eject <name> copies one into the project so you can change it.
One-step MCP install. Installing an MCP app goes straight to the server's sign-in, and a connector you authorize with your own account loads its tools. The app and connector pages are redesigned.
Every connector account picks its audience. Install adds the connector to the project. Add account then asks for a name and Who can use it : only you, everyone in the project, or specific people, groups or agents.
Connect MCP in the project sidebar opens the MCP connect dialog.
Connector calls from code. Apps and scripts can call a project's connectors through @kortix/sdk, with typed handles and a stable result.
Reminders page. A calendar (day, week, month) and a list with bulk pause, resume and remove. Reminders is beta: enable Reminders under Settings → Feature flags.
App event triggers (beta). Run an agent when something happens in a connected app, such as a new email or an opened pull request. Every app that publishes events is listed, and you can browse its events before you connect it. Enable App event triggers under Settings → Feature flags.
Notification center (beta). Kortix tells the right person when a session needs them: an in-app inbox, Web Push and email. Off by default: enable Notification Center under Settings → Feature flags.
Billing alerts for owners. Owners get an email when the wallet runs out, and when a declined card turns auto top-up off. The Billing pane says why auto top-up is off. A member who runs out of credits can ask the owners from the product. Budget managers get an email at 80% and 100% of an LLM gateway budget.
kortix feedback "<message>" files a bug, an idea or a friction report from a terminal or from inside a session.
Improved
Streaming replies appear word by word, at the pace they arrive, on web and mobile.
A long paste (more than 1,000 characters or 10 lines) becomes a "Pasted text" tile on web and mobile.
Every prompt a person did not type, from a reminder, a trigger, another session or Slack, shows a source pill above a plain message.
The server owns session state and sends it on one stream, so open tabs stop polling for it.
Config releases run for every project. What merges to the base branch reaches new sessions, and a large repository no longer loses its config release.
A sandbox sleeps sooner: a turn that waits on a person stops keeping it awake, and an open tab keeps it awake only while someone uses it.
pi (experimental) loads the project's root AGENTS.md, runs the agent you pick for a prompt, and can take back an unread steer or a queued prompt.
Agents in a session use the kortix CLI for connectors; the in-sandbox kortix-connectors MCP server is removed. kortix connectors connect --label names the new account.
The hosted MCP server at api.kortix.com/v1/mcp is the one Kortix MCP server. The docs-only server at kortix.com/mcp is retired, and list_projects answers an empty list on an account with no projects.
File listings show folders with more than 1,000 files, with search on web and mobile.
The invite page names the project and the role. After you accept an invite or switch accounts, you land in that account.
Mobile: New session opens project home with the composer focused. Sessions draw tables on a full grid, hide thinking, and keep a floating composer.
CLI: sessions ls and sessions status --json show each session's model. triggers info shows the webhook signing scheme with a sample. approvals ls prints the decision link. projects info --json includes the project ID.
Session start, connector calls, cost summaries and the Reminders page use fewer database reads.
A session with many images or binary files loads them a few at a time instead of all at once.
Your computer shows the access the agent on that computer really has, in the browser and in the desktop app. Narrowing access applies at once from anywhere; widening it asks on the computer.
30 API routes that no client calls answer 410 Gone.
The subprocessor list adds six vendors.
A finished turn folds its work into one Worked for row. The answer and any cards the agent showed stay visible below it.
A question from the agent docks onto the composer as one surface, with previous/next and a confirm step that links back to each answer.
The docs at kortix.com/docs are rewritten: 31 pages, with Git as a core page.
Mobile asks you to update when the installed app is older than the minimum version the API sets.
When you mention files on your own machine, the agent offers to connect your computer.
Fixed
A Stop wins over a session that is still opening and over its queued prompts.
A session whose sandbox provider is at capacity retries the start by itself, with backoff, instead of waiting for Restart .
Queued prompts go out at the turn boundary and survive a busy queue. Only a queued prompt's author can edit, send or retry it, and an idle send shows as active, not queued.
A session keeps its history when its runtime changes, a degraded transcript copy no longer serves a partial history, and a shorter read never deletes saved messages; only a rewind removes them.
A reload paints the conversation this device kept without placeholder rows first, a streamed message settles when its turn ends, and a session whose sandbox lost its state keeps the conversation this device saved.
Session boot: sandbox.on_boot runs again after a session resumes, the boot finds its config when a pin file is missing, a failed environment build no longer breaks the boot, and a sandbox falls back to 4 GiB of memory when no size is set.
A failed sub-agent run can be retried in its own thread.
Sessions: a failed-turn notice clears after you edit and resend, the turn outcome footer is back, the restart offer on a stuck boot follows the session's state, the session list pages correctly, and other tabs learn when a turn finishes.
The composer waits for the model list during boot, and a new free account can send with the default model.
The connector-connected notice joins the prompt queue and reaches the running turn.
Triggers: a cron trigger fires at most once a minute, every webhook delivery runs exactly once, a failed fire is recorded on the trigger, the list says when a trigger runs next, a fire waits when the account has no usable model, and a manual or webhook fire the account cannot pay for answers 402 with the reason instead of a server error.
Saving a connector credential is atomic, a Slack undo call is bounded by the call deadline, and a crash in the marketplace dialog stays inside the dialog.
The email channel shows on the channels page, and the inbox of a deleted account tells the sender once per thread.
Change requests: large change requests show their changed files, a blank diff says why, and the side-by-side toggle works on one-sided diffs.
Binary file previews work again, and links to a session's files open instead of showing [blocked].
Computer use on a connected computer works for every tool and survives restarts and app updates. The CLI and the desktop app run as one runtime.
Sign-in: a magic link works when the browser drops a cookie, a sign-in no longer bounces back to the sign-in page, and a sign-in or sign-up that stalls ends with an error you can retry. On mobile, SSO sign-in completes and the login stays until you sign out.
The onboarding wizard opens on an account's first project, owners see the create-project screen on /projects, and the account menu has a Settings row.
After a deploy, a page that loads stale code reloads once instead of breaking.
Account deletion works when a session sandbox exists, never deletes an operator's login, and works on self-host.
A push to GitHub that the remote rejects with a 500 is retried, and an expired checkout link answers with a clear not-found.
Trigger and top-up controls show only to people who may use them, and the project config lists every registered agent.
Translations and accessible names for icon buttons and the preview toggle.
/download has its site navigation again, and /blog serves the blog.
CLI: agents ls lists the project's agents, ship and in-sandbox host selection use the right credentials, the CLI token list hides session tokens, reminders ls shows the prompt text, and triggers fire reports the real outcome.
Self-host: doctor fails when sign-up is open and unconfirmed, self-host status --json prints clean JSON, the CLI refuses to rotate API_KEY_SECRET and POSTGRES_PASSWORD, and /v1/setup/status no longer stalls the API while it checks Docker.
Mobile: streaming turns stay stable, change requests anchor to their turn, the composer stays above the keyboard, and web links open in the in-app browser.
The Add account dialog that Install opens proposes a name that is still free.
@kortix/agent-tunnel connect and the CLI's sandbox port proxy connect under Bun again.
The sidebar toggle tells screen readers whether the sidebar is open.
The Providers tab no longer shows the Kortix-managed provider as connected when it serves no models.
CLI: kortix providers subcommands reject unknown flags instead of ignoring them.
Security
SSO is enforced at the API for every credential. Sign-up without a browser follows the sign-up policy and SSO-only domains. The admin allowlist never matches an SSO identity, and a personal account cannot set up SAML.
Offboarding stops what a member left behind: computer calls, reminders, pushes and group memberships. A deleted account closes every side route, account erasure removes stopped sandboxes, session files and managed repos, and deleting a project deletes its managed git repo.
A session push reaches only people who may still open the project, and a signed-out device stops getting pushes.
kortix secrets unset revokes every outstanding setup link for that secret.
/userinfo rejects tokens of a deactivated OAuth client.
A trigger with no agent runs with the permissions of the agent its run uses.
A single-label egress wildcard matches exactly one subdomain label.
The public installer verifies the release checksum.
Pinning a session's runtime on the turn stream requires the session's own sandbox credential.
Dependency updates for HIGH CVEs (gRPC, golang.org/x/net, sharp, the MCP SDK, undici and others), and the sandbox daemon and release scripts create temporary files owner-only.
Not yet offered in Settings
Apps hosting (static sites served without a sandbox, and server Apps on releases, machines and volumes, with a Convex backend as a template), project Files with per-folder access, session boot modes with persistent machines, and organization-wide Volumes and Stateless sessions sit behind switches only Kortix can turn on and are not offered in Settings yet.
Behind the scenes
CI runs on GitHub-hosted runners, and database indexes, connection pooling, audit storage and infrastructure checks are tightened.
Groundwork for a durable session log, off for every project.
What's Changed
test(e2e): journey 23 asserts the toolkit search wire contract; connect POST only when sent by @markokraemer in https://github.com/kortix-ai/suna/pull/9314
chore(release): VERSION → 0.13.53 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9316
fix(api): let a session's own credential open its own session (KRTX-1688) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9235
fix(audit): make the reconciliation dedupe probe an index condition (KRTX-618) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9238
fix(cli): explain a foreign env session instead of a bare Not found in reminders (KRTX-1686) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9219
fix(web): recover the settings panel's stale-deploy chunk with one reload (KRTX-1616) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9222
fix(cli): keep self-host status JSON output clean (KRTX-1325) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8876
fix(cli): include the project id in projects info --json (KRTX-1659) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9240
fix(models): serve the platform default to free tier so a fresh account can send (KRTX-1067) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8983
fix(api): refuse agent sessions on the project sandbox-provider pin (KRTX-1681) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9212
fix(cli): print the /approve decision link in approvals ls rows (KRTX-1669) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9246
fix(web): recover /auth from a stale client bundle after a deploy (KRTX-1685) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9248
fix(web): owners see the create-project empty state on first /projects (KRTX-1700) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9250
refactor(api): move the fast-boot bundle out of commits.ts and dedupe the diff parser (KRTX-1512) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9218
feat(cli): expose the session's resolved model in sessions ls/status --json (KRTX-1695) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9251
fix(projects): delete the managed git repo with its project (KRTX-1692) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9252
fix(web): the stuck-boot restart offer follows the lifecycle verdict (KRTX-1671) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9286
fix(api): account deletion never deletes an operator's login, and works on self-host (KRTX-1713) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9323
fix(api): write runtimeSessionId on the migrated-session insert (KRTX-1536) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9288
test(infra): make the unit suites hermetic on a Kortix worker sandbox (KRTX-1320) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8949
fix(api): require the session sandbox credential for the turn-stream runtime_session pin (KRTX-1607) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9290
perf(api): one grouped scan per window for the cost summary (KRTX-1605) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9300
fix(web): restore the turn-outcome footer render the session-chat split dropped (KRTX-1622) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9303
fix(cli): report the real trigger fire outcome (KRTX-1504) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9289
fix(api): stage the opencode config through its dependency-tree filter (KRTX-1535) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9313
fix(supabase): use the current refresh-token rotation config key (KRTX-1656) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9317
fix(api): a single-label egress wildcard matches exactly one subdomain label (KRTX-1654) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9321
fix(api): list every registered agent from the project config summary (KRTX-1586) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9296
fix(sessions): only a queued prompt's author edits, sends or retries it (KRTX-1712) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9325
fix(sdk): retry an errored no-data query with capped backoff so pages self-heal (KRTX-1632) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9318
fix(api): dispatch queued prompts at the turn boundary, not after the whole run (KRTX-1684) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9319
docs(kortix-release): edge-key rollout checklist by @markokraemer in https://github.com/kortix-ai/suna/pull/9327
fix(cli): refuse to rotate API_KEY_SECRET and POSTGRES_PASSWORD (KRTX-1719) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9328
fix(api): warn once per unreachable spell past its ride-out budget (KRTX-696) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9228
fix(ci): pin third-party CI actions to SHAs in credential-holding workflows (KRTX-1711) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9281
fix(sessions): queued-prompt writes survive the drain's admission claim (KRTX-1712) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9330
chore(deps): bump bridgecrewio/checkov-action from 12.3125.0 to 12.3128.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/9180
chore(deps): bump terraform-linters/setup-tflint from 6.3.1 to 6.3.2 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/9181
chore(deps): bump anchore/sbom-action from 0.24.2 to 0.24.3 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/9182
fix(api): the admin allowlist never matches an SSO identity; no SAML on a personal account (KRTX-1715) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9331
fix(cli): verify the downloaded release checksum in the public installer (KRTX-1652) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9322
fix(web): the side-by-side toggle switches one-sided diffs too (KRTX-1691) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9287
fix(api): make transcript-mirror strings storable as jsonb (KRTX-1701) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9253
feat(cli): put the webhook signing scheme and sample in triggers info (KRTX-1666) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9249
fix(cli): show the reminder prompt text in reminders ls (KRTX-1524) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9243
fix(api): retry and de-noise a GitHub receive-pack 500 push rejection (KRTX-1683) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9226
fix(billing): map Stripe's no-such-checkout-session to the typed 404 (KRTX-1682) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9223
fix(web): reload once on a stale-deploy chunk-load error (KRTX-1613) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9213
fix(cli): resolve ship from workspace host credentials (KRTX-1258) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8865
fix(web): hold the composer model gate during session boot (KRTX-1667) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9244
fix(web): hide the seeded harness reflector from the Triggers list (KRTX-1299) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8921
fix(files): byte-accurate project reads restore binary previews (KRTX-1677) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9247
fix(api,cli): hide session-minted tokens from the project CLI token list (KRTX-1193) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8926
fix(web): put a Settings row in the account menu on /projects and /new (KRTX-1327) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8925
feat(billing): cap the scheduled deletion sweep at 25 per tick and add ACCOUNT_DELETION_SWEEP_PAUSED by @markokraemer in https://github.com/kortix-ai/suna/pull/9332
test(api): make the audit partition suites independent of the migration week (KRTX-1633) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9283
fix(api): ask the in-place recovery gate before a background pass condemns a runtime (KRTX-208) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9036
test(web): preserve reporting of unknown input-stream failures (KRTX-984) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8725
perf(db): cover the per-session gateway rollup with one index (KRTX-1311) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9012
fix(ci): branch-deletion teardown no longer hits the 10000-row Platinum listing cap by @markokraemer in https://github.com/kortix-ai/suna/pull/9334
perf(db): index the runtime-wake fence candidates on kortix.session_sandboxes (KRTX-1308) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9292
feat(web): full-screen MFA step-up and split-layout MCP connect modal by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9335
fix(infra): Terraform stops resetting reconciler-owned unhealthy-hosts alarm dimensions by @markokraemer in https://github.com/kortix-ai/suna/pull/9336
fix(iam): enforce SSO only at the API for every credential (KRTX-1716) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9338
fix(billing): account deletion fails with HTTP 500 for any account with an established session box by @markokraemer in https://github.com/kortix-ai/suna/pull/9337
fix(web): restore the original phone screenshots on the /download mobile card by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9339
fix(slack): run the agent in a channel thread only when someone tags it by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9333
fix(mobile): call eas update:view without --non-interactive in the OTA publish by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9342
fix(session): render an idle send as an active prompt, not a queued one by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9191
fix(projects): a deleted workspace closes its side doors (KRTX-1714) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9344
test: remove disposable containers with their volumes (docker rm -f -v) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9345
fix(triggers): run every webhook delivery exactly once (KRTX-1735) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9347
feat(sessions): R5 session truth — the server owns session state, one stream, no polls by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9312
fix(platinum): list running boxes with state=running across all regions by @markokraemer in https://github.com/kortix-ai/suna/pull/9346
fix(iam): offboarding stops what a member left behind: computer calls, reminders, pushes, groups (KRTX-1722) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9349
fix(db): re-time session_changed_notify after migrations dev already ran; shell-quote 1.11.0 by @markokraemer in https://github.com/kortix-ai/suna/pull/9351
feat(web): Slack messages render as a source pill over a plain bubble by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9350
fix(daemon): never restore the LLM proxy URL across a daemon restart by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9348
fix(config-releases): honor export-ignore outside the agent config dir (KRTX-1728) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9355
fix(sdk): an idle tab stops reading the transcript every 30 s; pre-push refuses an out-of-order migration by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9356
fix(files): list every folder past 1,000 files, and search on web and mobile (KRTX-1723) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9359
chore(dev-env): add KORTIX_INTERNAL_EDGE_KEY (encrypted) by @markokraemer in https://github.com/kortix-ai/suna/pull/9363
fix(billing): clear legacy NO ACTION references to the auth user before deleting the login by @markokraemer in https://github.com/kortix-ai/suna/pull/9365
fix(sessions): an open tab keeps the computer awake only while a person uses it (KRTX-1729) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9366
fix(triggers): a cron trigger fires at most once a minute (KRTX-1721) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9368
feat(session): one source pill for every non-typed prompt, web and mobile by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9369
fix(sessions): an empty page with a cursor is not an empty list (KRTX-1727) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9370
fix(cli): honor an explicit in-sandbox hosts use selection; keep env-over-stored default (KRTX-1705) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9352
fix(web): trigger and top-up controls follow the leaf their route asserts (KRTX-1720) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9371
fix(web): after an invite accept or an account switch, land in that account (KRTX-1731) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9372
Mobile session: aligned tables, hidden thinking, and a floating composer by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9358
fix(session): clear a stale failed-turn row after the message is edited and resent by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9361
test: drive the SSO-required dialog in a browser (KRTX-1716) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9374
fix(triggers): a failed manual or webhook fire is recorded; the listing says when a trigger runs next (KRTX-1743) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9375
fix(web): open workspace file links instead of rendering [blocked] by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9376
test: run and attest the packages lane inside a factory sandbox (KRTX-1400) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9353
fix(mobile): stabilize streaming turns, anchor change requests per turn, keep the composer above the keyboard by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9357
feat(connectors): typed connector calls from code — call contract, SDK handles, codegen by @markokraemer in https://github.com/kortix-ai/suna/pull/9381
fix(mobile): keep the login until the user signs out by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9378
feat(accounts): signed signup webhook for the sales factory (inert until SIGNUP_WEBHOOK_URL is set) by @markokraemer in https://github.com/kortix-ai/suna/pull/9382
fix(api): one canonical default sandbox spec, memory fallback 4 GiB (KRTX-1534) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9367
chore(mobile): 1.4.4, dev builds next to the store app, manual production OTA ships prod by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9383
fix(sandbox): entrypoint repairs /etc/hosts to 0644 before the privilege drop (KRTX-1814) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9340
fix(web): keep the session on GoTrue's no_authorization 401 (KRTX-1693) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9377
fix(infra): make audit-archive tags Drata-readable (KRTX-1649) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9341
fix(api): audit ingest writes small batches the 25s budget reserve refused (KRTX-229) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9379
refactor(api,sdk): R6 deletions — 30 dead routes retired with 410, Suna migration chain, dead exports, mock-DB tests, pi worker table by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9360
fix(web): always name ToolActionBar icon buttons (KRTX-1757) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9373
feat(apps): production Apps hosting — static sites without VMs, always-on server Apps, shared images, retention by @markokraemer in https://github.com/kortix-ai/suna/pull/9388
feat(triggers): app event triggers — run an agent when something happens in a connected app (Composio first, provider-agnostic) by @markokraemer in https://github.com/kortix-ai/suna/pull/9390
fix(web): serve the real blog at /blog when KORTIX_BLOG_ORIGIN is unset (KRTX-1766) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9395
fix(web): guard useFileHistory's retry against non-string error messages (KRTX-1781) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9394
fix(api): return a JSON array from list_projects on an empty account (KRTX-1783) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9393
test(flows): GH-8 cli-token list step fails when the minted token is missing (KRTX-1800) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9397
feat(invites): the invite page names the project and role; sign out and come back to the invite (KRTX-1731) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9398
fix(email): a deleted workspace's inbox tells the sender, once per thread (KRTX-1714) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9399
perf(db): cover the account+time cost aggregates with an INCLUDE index (KRTX-1769) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9386
fix(push): a signed-out device stops getting push notifications (KRTX-1722) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9400
feat(billing): auto top-up says why it turned off, and emails the owners when a declined card does it (KRTX-1718) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9402
feat(billing): Ask an owner — a member out of credits emails the owners (KRTX-1718) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9404
feat(gateway): email the budget managers at 80% and 100% of a gateway budget (KRTX-1718) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9405
fix(web): signal finished turns to tabs watching from elsewhere (KRTX-1795) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9401
feat(billing): email the owners when the wallet reaches $0 (KRTX-1718) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9406
fix(sessions): cap what presence alone keeps a box awake, whatever the client reports (KRTX-1729) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9408
fix(triggers): a connection finished outside Kortix goes live by itself; connect-finalize --owner project by @markokraemer in https://github.com/kortix-ai/suna/pull/9392
feat(tools): harness-agnostic tools, kortix.yaml tools: and per-agent tool access by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9410
fix(connectors): kortix-connectors MCP off by default; kortix connectors connect --label by @markokraemer in https://github.com/kortix-ai/suna/pull/9412
fix(runtime): R7 — pi retract, per-prompt agent on pi, session list without a timer, /pty refusal by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9391
feat(triggers): app event triggers name the connector profile and, optionally, the shared account by @markokraemer in https://github.com/kortix-ai/suna/pull/9413
refactor(connectors): remove the in-sandbox kortix-connectors MCP; agents use the kortix CLI by @markokraemer in https://github.com/kortix-ai/suna/pull/9414
fix(web): give /download its site nav and brand link back (KRTX-1792) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9407
test(secrets): delete the box-less sandbox rows the secrets flows insert by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9415
fix(triggers): status text names the app for slug-named connectors; learnings: secrets go in the deployed env bundle by @markokraemer in https://github.com/kortix-ai/suna/pull/9416
feat(backends): Kortix Backends — self-hosted Convex with Kortix sign-in, ops and agent skills by @markokraemer in https://github.com/kortix-ai/suna/pull/9264
feat(pi): load the project's root AGENTS.md into the system prompt by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9411
fix(sessions): a turn that waits on a person stops renewing its box (KRTX-1739) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9418
fix(apps-router): forward a User-Agent when the client sends none by @markokraemer in https://github.com/kortix-ai/suna/pull/9419
feat(session): long pastes become a "Pasted text" tile on web and mobile by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9380
fix(web): align the preview modal's source-toggle aria-pressed with the file header (KRTX-1778) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9409
feat(web,mobile): smooth streaming replies, word by word by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9420
fix(web): show the Email channel on the channels page (KRTX-1801) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9403
fix(web): translate the command-attachment refuse description (KRTX-1710) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9387
fix(self-host): doctor fails on open unconfirmed sign-up; bootstrap-owner needs the host key (KRTX-1715) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9421
refactor(mcp): one Kortix MCP server — remove kortix.com/mcp + WebMCP; fix dev's #9380 tests by @markokraemer in https://github.com/kortix-ai/suna/pull/9422
feat(triggers): see every app event at a glance; the event source is an adapter type (source: composio) by @markokraemer in https://github.com/kortix-ai/suna/pull/9425
feat(config-releases): build a release from the checkout or the project snapshot, so the 32 MiB archive cap no longer drops a session's config by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9424
fix(cli): an app event error from its connector or source names the connector fix; TRG-18 race by @markokraemer in https://github.com/kortix-ai/suna/pull/9426
learnings: run pnpm test:verify before merging into dev by @markokraemer in https://github.com/kortix-ai/suna/pull/9428
fix(config-releases): a box with no base pin builds an archive-less release from its checkout at boot by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9429
feat(tools): list the Kortix tools in kortix.yaml as kortix:; kortix tools ls/eject by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9427
fix(ci): read each env blob from its own region, not the us-west-2 default by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9430
docs(infra): the audit archive is a record, not a cache; copy it before a region switch by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9431
fix(db): scope user_roles RLS policies to their JWT roles (KRTX-1166) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9433
fix(accounts): erasure removes parked boxes, session files and managed repos (KRTX-1734) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9435
fix(push): a session push reaches only people who may still open the project (KRTX-1722) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9436
fix(triggers): a failed app-event or monitor fire is recorded on the trigger (KRTX-1743) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9438
fix(triggers): a trigger with no agent is authorized as the agent its run uses (KRTX-1720) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9439
fix(auth): headless sign-up follows the sign-up policy and SSO-only domains (KRTX-1716) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9440
refactor(mobile): split 1k files, dedupe shared UI, delete dead code (KRTX-1292) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9441
fix(session): subagent retry — reopenable thread + task_id-aware recovery prompt (KRTX-1746) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9362
refactor(web): reuse the shared bounded background-worker parser (KRTX-1756) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9364
feat(notifications): notify the right person on any surface: inbox, Web Push, email (KRTX-1742) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9446
feat(config-releases): config releases run for every project — remove the config_releases flag by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9432
feat(legal): add Hivelocity, OpenCode Zen, Morph, Plain, Pipedream and Expo to the subprocessor list by @markokraemer in https://github.com/kortix-ai/suna/pull/9451
feat(web): Connect MCP row in the project sidebar, official MCP icon by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9454
refactor(kortixd): split config-provider and workspace-provider, share through lib/ by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9455
chore(mobile): upgrade to Expo SDK 57 (React Native 0.86.3), version 1.5.0 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9458
feat(mobile): New session focuses the project home composer by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9457
feat(notifications): KRTX-1742 behind the notification_center flag, off by default by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9459
feat(triggers): every app with events, browse before connecting, one clean trigger UI, and the event_triggers feature flag by @markokraemer in https://github.com/kortix-ai/suna/pull/9461
feat(apps): Backends become Apps of kind convex — capabilities, project issuer, bindings, agnostic SDK by @markokraemer in https://github.com/kortix-ai/suna/pull/9463
fix(notifications): flag-on edge cases, presence parity and copy for notification_center (KRTX-1742) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9464
ci: read the CI, preview and prod env blobs off us-west-2; fix the raw reader #9430 missed by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9467
fix(web): Next 16.4 with turbopackGc, so the dev cache stops filling the disk by @markokraemer in https://github.com/kortix-ai/suna/pull/9466
perf(api): one joined session+sandbox read per /start tick (KRTX-2018) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9465
chore(release): VERSION → 0.13.54 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9474
chore(release): staging VERSION → 0.13.54 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9475
fix(db): wrap public.credit_ledger RLS auth.role() in an initplan scalar subquery (KRTX-1138) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9434
ci: run every job on free GitHub-hosted runners; remove Blacksmith by @markokraemer in https://github.com/kortix-ai/suna/pull/9453
fix(review): show why a file's diff body is blank and stop shipping silent empty patches (KRTX-2010) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9468
fix(apps): budget only for on-demand Apps, access-filtered list, renewing App sessions by @markokraemer in https://github.com/kortix-ai/suna/pull/9476
fix(triggers): gate the fire when the account has no usable model (KRTX-1505) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9477
fix(apps): settle provider state-change conflicts on App stop (KRTX-2027) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9478
fix(db): fold the boot schema probe into the request pool; raise DEFAULT_DB_POOL_MAX 5→6 (KRTX-2020) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9442
feat(api,cli): POST /v1/feedback and a kortix feedback CLI command (KRTX-1646) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9389
perf(connectors): one /call spends a bounded set of statements (KRTX-2017) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9452
fix(proxy): surface the upstream's own 5xx reason in the logs; consolidate dispatch (KRTX-2073) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9479
fix(sandbox): honor the KORTIX_PT_ENV_PATH seam in reloadSessionEnv (KRTX-2039) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9481
fix(kortixd): fail cursor transcript reads on a degraded mirror (KRTX-2040) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9480
fix(cli): list the project's agents in agents ls (KRTX-1525) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9470
fix(review): render changed-file contents for large change requests (KRTX-2010) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9460
feat(drives): project Files with per-folder access, mounted and synced into sessions by @allenabraham999 in https://github.com/kortix-ai/suna/pull/9472
feat(sessions): ephemeral boxes, persistent machines and release boot artifacts, behind one Volumes switch per org by @allenabraham999 in https://github.com/kortix-ai/suna/pull/9473
fix(connectors): bound the Slack misfire-undo POST by the call deadline (KRTX-2062) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9483
fix(api): make upsertConnectionCredential a single atomic ON CONFLICT write (KRTX-2061) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9485
fix(api): unset revokes a secret's outstanding intake links (KRTX-2056) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9484
fix(marketplace): contain add-to-project dialog mount crashes to the dialog (KRTX-1950) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9448
feat(connectors): one-step MCP install, member-authorized tool catalogs, redesigned app and connector pages by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9449
fix(web): restore the post-signup onboarding wizard on the account's first project (KRTX-2092) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9492
fix(web): preview session drive files through the drive API by @allenabraham999 in https://github.com/kortix-ai/suna/pull/9493
fix(api): /start retries a transient provision failure instead of replaying it by @allenabraham999 in https://github.com/kortix-ai/suna/pull/9489
fix(billing): lock the legacy per-seat migration and route its writes through applyStripeSync (KRTX-2089) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9488
fix(api): env-build rejection can no longer escape the session boot paths unhandled (KRTX-2064) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9494
fix(sessions): a user Stop wins over in-flight opens and queued prompts by @allenabraham999 in https://github.com/kortix-ai/suna/pull/9495
fix(sandbox): rerun project boot hooks after resume by @markokraemer in https://github.com/kortix-ai/suna/pull/9496
fix(connectors): Install adds the project profile; each account picks its audience by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9497
fix(sessions): persistent machine Reset keeps chat; runtime assets never serve a stale digest by @allenabraham999 in https://github.com/kortix-ai/suna/pull/9491
fix(mobile): finish SSO sign-in through the web handoff (KRTX-2052) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9490
fix(web): magic-link sign-in survives a dropped action Set-Cookie (KRTX-2095) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9498
feat(web): rebuild the Reminders page with a calendar, bulk actions, and a List table by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9499
fix(connectors): the connector-connected notice joins the prompt queue and steers into the running turn by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9504
test: pin SESS-48's exhausted-reason contract and #9499's ICU-sensitive label test (KRTX-2112) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9503
fix(api): attribute the boot-window 503 and stop paging it as a route 5xx (KRTX-397) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9500
fix(api): /userinfo rejects tokens of deactivated OAuth clients (KRTX-2107) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9505
fix(edge): drop the request body on GET/HEAD in the api-router worker (KRTX-2081) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9501
fix(release): clear the staging gate for the release after v0.13.53 by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9510
fix(api): keep the old root's transcript rows when the runtime root changes by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9513
fix(computer): desktop control works for every tool, survives restarts and app updates; CLI and desktop app are one runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/9507
feat(api-contract): add the kortix.session/2 session-log module (minor 1) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9509
fix(sandbox): resolve the OpenCode boot root from the claimed pin when the pin file is missing by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9515
fix(release): clear the second staging gate round for the release after v0.13.53 by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9519
feat(api-contract): freeze the session-log minor 1 additions and add a shape snapshot by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9517
KRTX-532: batch the project-reminders session-visibility fan-out (64→~6 db statements/request) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9437
fix(auth): bound every sign-up/sign-in submit and make it retryable (KRTX-2072) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9487
fix(sdk): keep saved transcript rows on an empty runtime read (P0.4) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9526
fix(api): /v1/setup /status no longer blocks the event loop probing docker (KRTX-2108) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9525
fix(infra): pin prod API rolling overlap to 100% to fund the next DB pool raise (KRTX-586) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9518
feat(apps): Apps on the Fly.io model — releases, machines, volumes; convex becomes a template by @markokraemer in https://github.com/kortix-ai/suna/pull/9527
test: clear the third staging gate round (stop-wins race, SDK poll-deadline flake) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9528
Promote dev 7825eae424 to staging by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9523
feat(sandbox): session-log port and journal in kortixd (P2.4) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9530
feat(computers): the agent CLI is the one control surface; Kortix relays access, the app and web render it by @markokraemer in https://github.com/kortix-ai/suna/pull/9532
fix(api): image copies manifest-schema's node_modules (dev API boot crash after #9527); restore i18n key order by @markokraemer in https://github.com/kortix-ai/suna/pull/9533
fix(sdk): bound concurrent binary file reads; ship the provision timeline (KRTX-471) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9516
fix(cli): kortix apps launch keeps kortix.yaml byte-identical outside the new blocks by @markokraemer in https://github.com/kortix-ai/suna/pull/9535
feat(apps): machines get KORTIX_USES_URL_ so a server App can call an App it uses by @markokraemer in https://github.com/kortix-ai/suna/pull/9537
fix(triggers): one event-lock holder per process, so the connector sweep cannot deadlock the pool by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9541
fix(cli): apps launch reads kortix.yaml once; hover-store tests poll for settled timers by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9543
refactor(sdk): make the mobile warm-session pool an SDK adapter (KRTX-703) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9538
fix(api): isolate concurrent session refusal contexts (KRTX-2133) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9539
Promote dev 4987f193b3 to staging by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9544
test: J36 asserts the visible session filter; drop unused test code CodeQL flagged by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9545
fix(api): bound disk-quota Daytona REST fetches (KRTX-2132) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9540
fix: an unpayable trigger fire answers 402; a deleted project's gone screen stays; gate flows hold on a deployed target by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9548
refactor(web): delete the host model flattener; the SDK is its only definition (KRTX-455) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9536
test: the Platinum sizing invariant gets its own 120 s budget; drop no-effect expressions CodeQL flagged by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9551
Promote dev 96df3af6da to staging by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9549
fix(api): the transcript capture never deletes because a read is shorter; only a recorded rewind does (P0.3) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9555
fix(worktree): run the repo's pinned supabase CLI for every worktree call by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9554
fix(mobile): open every web link in the in-app browser by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9550
feat(api-contract): fromV1 and toV1 between the v1 mirror and the session log (P1.3) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9556
feat(db): session_log tables for kortix.session/2 (P2.1) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9557
test: gate round 10 — @local-only journeys stay off deployed lanes; flows wait out per-process caches by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9559
fix(api-contract): session-log v1 typechecks under kortixd's flags; the packages lane runs kortixd's tsc by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9561
feat(mobile): minimum-version gate driven by the API (P4.6) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9562
feat(api-contract): modelView and oracle normalizers for the session log (P1.4) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9564
feat(sandbox): pi session-log export adapter (P2.5) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9565
feat(sdk): session-log types vendored from api-contract with a drift guard (P1.5) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9568
test(api): Anthropic-transport resolver tests run on a fixture catalog; the daily catalog refresh goes green by @markokraemer in https://github.com/kortix-ai/suna/pull/9572
chore(catalog): refresh model seeds by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9573
feat(sandbox): OpenCode session-log export adapter (P2.6) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9574
fix(sdk): the Bedrock heal test asserts the invokable-profile intent, not one day's catalog by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9575
Promote dev 9bbf745af7 to staging by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9570
ci(tests-browser-nightly): read the deployed staging SHA before the target preflight by @markokraemer in https://github.com/kortix-ai/suna/pull/9578
feat(api): session-log journal ingest and manifest routes (P2.2) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9579
feat(apps): display config, a signed-in Convex dashboard tab, CSP policy-list fix by @markokraemer in https://github.com/kortix-ai/suna/pull/9581
fix(web): the Add account dialog that Install opens proposes a free name by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9583
test(web): the content-timestamp check tolerates the squash commit that carries the manifest by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9585
feat(sandbox): log.* events on the runtime stream behind schema=v2, capability session.log.v2 (P4.3) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9586
feat(session): fold a settled turn's work into one "Worked for" row by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9558
feat(api): hidden project flag session_log (P4.1) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9587
fix(agent-tunnel, cli): Bun WebSockets name themselves, so Cloudflare lets them through; the probe keeps its verdict by @markokraemer in https://github.com/kortix-ai/suna/pull/9576
fix(web): KRTX-1581 make sidebar toggle state-aware for assistive tech by @agent-kortix in https://github.com/kortix-ai/suna/pull/9566
ci(db-drift): compare prod only with migrations its ledger applied; ignore runtime audit partitions by @markokraemer in https://github.com/kortix-ai/suna/pull/9577
docs: rewrite /docs from scratch — 31 pages, Git as a core Develop page by @markokraemer in https://github.com/kortix-ai/suna/pull/9588
feat(session): dock the agent question onto the composer as one surface by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9589
Hotfix: the Add account dialog that Install opens proposes a free name (#9583) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9591
feat(api): session reads over the session log behind the session_log flag (P4.2) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9596
test(e2e): repair the five quarantined journeys against the current UI and provider contract by @markokraemer in https://github.com/kortix-ai/suna/pull/9597
refactor(api): split provider-transition-store into routing and activation modules (KRTX-1528) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9590
feat(apps): previews stay loaded across the project; clean Convex template; apps// layout by @markokraemer in https://github.com/kortix-ai/suna/pull/9599
Release v0.13.54 — Tools on every harness, one-step MCP install, and billing alerts for owners by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9598
ci: fix the v0.13.54 staging gate (gitleaks docs placeholders, journeys 27 + 34) and run package quality once per Tests run by @markokraemer in https://github.com/kortix-ai/suna/pull/9601
fix(cli): reject unknown flags on providers subcommands (KRTX-1541) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9600
docs(skills): the agent offers to connect the user's computer when they mention local files by @markokraemer in https://github.com/kortix-ai/suna/pull/9602
feat(sandbox): live-turn puts on the v2 session-log stream (P4.3b) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9608
feat(apps): a Convex App is the project's backend, not 'db' by @markokraemer in https://github.com/kortix-ai/suna/pull/9607
feat(feature-flags): Volumes and Stateless sessions as operator-only organization flags by @allenabraham999 in https://github.com/kortix-ai/suna/pull/9592
feat(api): log.* events on the session stream behind schema=v2, converted for old daemons (P4.4) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9610
fix(web, cli): a pooled App preview stays loading until it loads; apps launch writes with wx; journey 34 sub-agent fold by @markokraemer in https://github.com/kortix-ai/suna/pull/9611
feat(sdk): session-log store, selectors and v2 negotiation (P4.5) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9612
fix(web): providers tab no longer claims the managed provider when zero models are served (KRTX-1482) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9605
test(e2e): journey 19 reads the organization origin label (#9592) by @markokraemer in https://github.com/kortix-ai/suna/pull/9619
Promote dev ab602abbed to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/9620
Release v0.13.55 — Tools on every harness, one-step MCP install, and billing alerts for owners by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9625
Hotfix: prod API keeps the live 200%/100% ECS rollout so Deploy Prod's Terraform applies (v0.13.55) by @markokraemer in https://github.com/kortix-ai/suna/pull/9634
Release v0.13.56 — Tools on every harness, one-step MCP install, and billing alerts for owners by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9637
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.53...v0.13.56
Read the full release on GitHub →
v0.13.53 October 9, 2026 New
Two-factor step-up opens full screen, and the MCP connect dialog uses a split layout with the details beside the form.
Fixed
Slack: in a channel thread, the agent runs only when someone tags it.
The /download page shows the original phone screenshots on the mobile card again.
Mobile over-the-air publishing no longer fails on the update lookup step.
Security
Updated the shell-quote dependency to 1.11.0 (CVE-2026-102422).
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.52...v0.13.53
Release on GitHub →
v0.13.52 October 7, 2026 New
Steer a running turn. A message sent with Enter while the agent works reaches the running turn at its next step, and the turn does not stop. The message waits above the composer as "Read at next step". Cmd/Ctrl+Enter still queues a message for after the turn, and a queued message has a "Stop and send" action. The CLI has kortix sessions chat --steer.
Live queue state. The queue above the composer updates from the session stream instead of a once-a-second poll.
Spend by source. LLM credit usage shows which trigger, member or caller spent it.
Trigger templates can use cron.scheduled_date and cron.scheduled_hour.
CLI: kortix validate warns about large repositories, and kortix ship runs it first.
New skill form: a skill can be created from a form without a model.
The new-project handoff shows each provisioning step as it happens.
Improved
A ChatGPT connection that reached its plan limit is tried again after 15 minutes, and its owner can retry it at once.
pi compacts the conversation at a token budget instead of at the model's full window.
A sandbox that cannot start because the provider's storage quota is full says so.
A slow session restore shows as waiting, not as stalled or failed.
A scheduled account deletion now runs when it is due. It removes the account's data and login, cancels the subscription and stops the sandboxes.
Members no longer see Restart, Stop or Delete on sessions they cannot control. A manually fired trigger is labeled as manual.
Fixed
YAML and JSON files preview again.
A 401 makes every app fetch a fresh token.
Usage metering closes gaps where a stream could go unbilled, and refunds are clawed back correctly.
Monthly renewals keep credit balances to the full four decimals.
An "Only you" secret stays private when its holder's role or group changes.
Only live account tokens are listed, and a 401 from a revoked token names it.
Security hardening: tenant isolation for invites, usage and setup links, agent app preview isolation, MFA step-up, and sandbox proxy access checks.
The API finishes in-flight work on shutdown and retries webhooks until they are acknowledged.
CLI fixes for projects link --host, approvals ls and change requests.
Slack and Teams file downloads stay inside the project.
An approval request sends one notification, not one per server.
A change to who can use a secret or a connected account applies on every server at once.
What's Changed
refactor(api): R4 API layers — explicit routes, services free of HTTP, workers/, iam read models by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9200
feat(infra): prepare dev and staging to leave us-west-2 (region consolidation, phase 0) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9201
fix(web): members are not offered session Restart, Stop or Delete they cannot use by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9211
refactor(api): break the project-snapshot barrel import cycles (KRTX-1598) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9140
fix(tunnel): parse the rpc body with the shared tolerant parser (KRTX-1569) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9139
fix(web): one CodeMirror state/view/lezer copy, so yaml and json files preview again by @markokraemer in https://github.com/kortix-ai/suna/pull/9217
fix(cli): resolve one principal for the change-request commands (KRTX-1486) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9102
fix(cli): show approvals ls action ids with one connector prefix (KRTX-1668) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9215
fix(api): name the real manifest file in the oauth1 auth rejection (KRTX-1558) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9137
fix(cli): projects link --host authenticates with the named host's stored key (KRTX-1673) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9220
feat(web): show the streamed provisioning steps on /new's handoff (KRTX-1543) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9216
chore(release): VERSION → 0.13.52 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9234
chore(release): staging VERSION → 0.13.52 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9233
fix(api): a held prompt no longer loops the drain, and a shutdown hands its claims back by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9229
fix(api): an "Only you" secret stays closed when its holder is promoted, removed or its group deleted by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9231
fix(web): label a manual trigger fire as manual in the sessions list (KRTX-1676) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9224
fix(sessions): a full sandbox-provider storage quota says so instead of "could not start. Try again" by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9236
refactor(api): split sandbox env transport, flatten monitors and access casts (KRTX-1499) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9101
feat(infra): switch dev to its us-east-2 stack (region consolidation, phase 2) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9230
fix(api): normalize x-forwarded-proto in the public-share origin (KRTX-1570) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9138
feat(triggers): cron.scheduled_date and cron.scheduled_hour template fields by @markokraemer in https://github.com/kortix-ai/suna/pull/9239
feat(gateway): spend by source — which trigger, member or caller spent LLM credits by @markokraemer in https://github.com/kortix-ai/suna/pull/9242
fix(billing): execute scheduled account deletions from a leader-elected worker (KRTX-1260) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8993
fix(pi): compact at a token budget, not at the model window by @markokraemer in https://github.com/kortix-ai/suna/pull/9245
fix(api,cli): name the revoked account token in the dead-credential 401 (KRTX-1564) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9227
feat(skills): give the skill New flow a no-model form path (KRTX-1537) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9232
fix(api): list only live account tokens (KRTX-1675) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9221
feat(api): R9 prompt queue — one state definition, NOTIFY-driven drain, restart-safe dedupe, every sender through the queue by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9255
feat(infra): switch staging to its eu-west-2 stack (region consolidation) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9254
fix(gateway): re-try a ChatGPT connection 15 min after a plan limit; owner retry now by @markokraemer in https://github.com/kortix-ai/suna/pull/9257
docs(learnings): give every provider cooldown a short re-try by @markokraemer in https://github.com/kortix-ai/suna/pull/9259
feat(cli): kortix validate warns on large repositories; kortix ship runs validate by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9261
fix(sdk): a 401 forces a fresh token in every host; raw SDK fetches go through send() by @markokraemer in https://github.com/kortix-ai/suna/pull/9262
feat(sessions): steer a running turn (R10) + queue state from the session stream by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9260
fix(billing): metering integrity — no free streams, refund clawback, fail-closed gate by @markokraemer in https://github.com/kortix-ai/suna/pull/9265
fix(sandbox-proxy): canonical gate path, project-level access, edge and egress hardening by @markokraemer in https://github.com/kortix-ai/suna/pull/9258
fix(ci): point workflows at the dev trunk; main no longer exists by @markokraemer in https://github.com/kortix-ai/suna/pull/9268
fix(web): isolate agent app previews; MFA step-up, demo-request and shell hardening by @markokraemer in https://github.com/kortix-ai/suna/pull/9267
fix(api): drain on SIGTERM, ack-or-retry webhooks, fence the leader lease, bound worker state by @markokraemer in https://github.com/kortix-ai/suna/pull/9271
fix(authz): tenant-isolation hardening (invites, usage, gateway edge, setup links, impersonation) by @markokraemer in https://github.com/kortix-ai/suna/pull/9272
fix(runtime): a keep-alive poll never undoes a stop; release dedupe claims; bound the runtime streams by @markokraemer in https://github.com/kortix-ai/suna/pull/9273
fix(ci): trust the dev branch in the Terraform apply gate after the main → dev rename by @markokraemer in https://github.com/kortix-ai/suna/pull/9274
fix(ci): prod deploy role scoped to the prod environment, trunk rename main->dev, fail-closed gates (audit 09) by @markokraemer in https://github.com/kortix-ai/suna/pull/9276
fix(web): a slow restore is a waiting state, not a stall or an error by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9266
fix(billing): scheduled account deletion deletes data and auth user, claims atomically, retries failed steps by @markokraemer in https://github.com/kortix-ai/suna/pull/9277
fix(release): unblock the v0.13.52 staging gate by @markokraemer in https://github.com/kortix-ai/suna/pull/9270
docs(billing): correct the deletion-guard comment about auth-user deletes by @markokraemer in https://github.com/kortix-ai/suna/pull/9279
perf(db): index trigger session lookups by (project, slug, key) by @markokraemer in https://github.com/kortix-ai/suna/pull/9282
fix(release): v0.13.52 gate round 2 — deletion snapshot, stale suppression, learnings index by @markokraemer in https://github.com/kortix-ai/suna/pull/9280
Promote dev 938fe72de5 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/9285
fix(channels): confine Slack and Teams file downloads to the project; no sync needed (KRTX-933) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9291
fix(ci): staging web reads its Vercel credentials from us-west-2 by @markokraemer in https://github.com/kortix-ai/suna/pull/9293
fix(web): a small avatar holds one initial at its own size (KRTX-1047) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9295
Promote dev 0ccced22cd to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/9294
docs(learnings): rename the trunk only together with every workflow, test and hook that names it by @markokraemer in https://github.com/kortix-ai/suna/pull/9298
fix(web): pin the "Sending" label under a sent message so it never slides by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9297
fix(ci): staging verify reads the Vercel bypass from us-west-2 by @markokraemer in https://github.com/kortix-ai/suna/pull/9301
fix(api): one permission push per request id across every API replica; AUD-6 polls its delivery by @markokraemer in https://github.com/kortix-ai/suna/pull/9304
test(e2e): IAM-40 waits out the IAM cache window; IAM-27 asserts the exact cap only on one replica by @markokraemer in https://github.com/kortix-ai/suna/pull/9305
test(e2e): accounts flow passes a defined userId to the member delete by @markokraemer in https://github.com/kortix-ai/suna/pull/9306
fix(iam): never cache secret and connection grants; SEC-AUD flows run on deployed targets by @markokraemer in https://github.com/kortix-ai/suna/pull/9307
test(flows): CONN-29 polls the widen past the object-grant cache TTL by @markokraemer in https://github.com/kortix-ai/suna/pull/9308
chore: dead-code sweep (-18.9k lines, 7 web deps) by @markokraemer in https://github.com/kortix-ai/suna/pull/9310
test(e2e): journeys 23, 27 and 38 follow staging's real behavior (v0.13.52 gate) by @markokraemer in https://github.com/kortix-ai/suna/pull/9309
Promote dev a44ba90fb0 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/9311
Release v0.13.52 — Steer a running turn, live queue state, and spend by source by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9302
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.51...v0.13.52
Read the full release on GitHub →
v0.13.51 October 6, 2026 New
See the model behind each answer. A session shows which model answered and what the answer cost.
pi 1.0. The pi harness is on pi 1.0. It brings compaction and slash commands, and pi now runs only inside the sandbox.
Config releases follow your repository. A release is a checkout of the base branch with the repository's own layout. An unbuildable or quarantined tip no longer drops a session's configuration without notice.
Security settings: a redesigned authenticator-app enrollment, and a list of every signed-in device. Signing a device out stops its access at once.
Viewers: the session file and App viewers show an address bar. App previews show calmer loading and build states, and hover cards name running ports and links as well as files.
Mobile: an updated app, with JavaScript changes now delivered as over-the-air updates. It adds channel cards for Slack and Teams prompts and one progress indicator per running turn. The Files row opens the Files page, and the project's Apps are listed.
Downloads: the desktop installer has a drag-to-install window, and /download links to the App Store and Google Play listings.
The website describes Kortix as the open-source AI Operating System.
Improved
When a ChatGPT usage limit is reached, the gateway falls back to the project's model chain and says when the limit resets.
A failed sandbox template build names its cause.
Adding a member by email is faster.
Sandbox shells no longer write core dumps.
Fixed
Editing a sent prompt keeps its attachments, and so does editing a prompt queued while the session boots.
A manual trigger run no longer fails when it races a new session that creates the same agent identity.
Relative OpenCode instructions read from the release, not from the workspace.
The demo booking confirmation stays open until you close it.
The Kortix web app is patched against three new vulnerabilities in its dependencies.
What's Changed
chore(secrets): rotate the dev/staging web gate password by @markokraemer in https://github.com/kortix-ai/suna/pull/9151
brand+seo: Kortix, the open-source AI Operating System (soft rebrand, SEO/GEO pass, AI OS pillar page) by @markokraemer in https://github.com/kortix-ai/suna/pull/9152
fix(api): a concurrent agent service account create re-reads the winner instead of failing by @markokraemer in https://github.com/kortix-ai/suna/pull/9155
chore(release): staging VERSION → 0.13.51 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9156
chore(release): VERSION → 0.13.51 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9157
perf(db): plan legacy user role auth calls once (KRTX-1150) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8880
fix(db): scope the legacy public.credit_usage policies to their roles (KRTX-1164) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8927
fix(db): drop the legacy public.agents select policy flagged by the supabase advisor (KRTX-1158) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9065
fix(db): wrap public.resources RLS auth.uid() in an initplan (KRTX-1147) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9066
fix(db): wrap user_memories RLS auth.uid() in initplan form (KRTX-1149) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9069
perf(db): dedupe legacy credit purchase RLS policies (KRTX-1163) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9075
test(db): point the credit_usage policy-roles test at the renamed migration by @markokraemer in https://github.com/kortix-ai/suna/pull/9158
refactor(api): split the config-releases builder seam, stop wasted archive builds (KRTX-1595) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9141
test(db): point the credit_purchases single-policy test at the renamed migration by @markokraemer in https://github.com/kortix-ai/suna/pull/9159
fix(db): scope the legacy audit_log policies to their JWT roles (KRTX-1159) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9082
fix(db): wrap the legacy auth.role() policy on renewal_processing (KRTX-1146) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9086
test(kortixd): write the first five monitor lines in one write by @markokraemer in https://github.com/kortix-ai/suna/pull/9160
test: fail when code names a migration file that does not exist by @markokraemer in https://github.com/kortix-ai/suna/pull/9161
fix(db): wrap project_select_policy auth.uid() in an initplan (KRTX-1144) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9090
test(db): give the credit_purchases single-policy suite its own probe role by @markokraemer in https://github.com/kortix-ai/suna/pull/9162
test: skip the migration-reference guard's own fixtures by @markokraemer in https://github.com/kortix-ai/suna/pull/9163
fix(db): wrap public.audit_log RLS auth calls in initplan scalar subqueries (KRTX-1134) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9104
fix(db): defuse the armed legacy account-deletion cascade (KRTX-1517) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9108
fix(db): give agent_templates_backup a surrogate primary key (KRTX-1169) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9113
perf(db): drop the unused profiles_email_idx on kortix_yolo.profiles (KRTX-1217) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8935
chore(secrets): rotate leaked Betterstack credentials + web-gate verifier learning by @markokraemer in https://github.com/kortix-ai/suna/pull/9165
feat(mobile): channel cards for current Slack and Teams prompts, one shared parser by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9168
fix(session): keep attachments when editing a sent prompt by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8961
fix(web): plain session header menu items, use Copy icon by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9169
feat(web): address-pill header for the session file and app viewers by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9171
feat(mobile): ship JS/TS as OTA updates from CI, guarded by the native fingerprint by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8767
fix(gateway): a ChatGPT usage limit falls back to the project chain and says when it resets by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9172
fix(api): add-member email lookup uses the auth.users index (request_deadline on staging) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9173
fix(gateway): round the ChatGPT usage-limit reset wait by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9174
fix(mobile): compare OTA native code only against builds of the current app id by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9175
fix(sandbox): no core dumps in sandbox shells; a crash dump carries the agent env by @markokraemer in https://github.com/kortix-ai/suna/pull/9177
feat(mobile): one shimmer per running turn, Files row opens the Files page (KRTX-1638, KRTX-1636) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9176
feat(web): show hover card names running ports and links, not only files by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9178
fix(web): demo booking keeps its confirmation open and closes only on request by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9179
feat(kortixd): pi 1.0.0, compaction and slash commands on pi by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8738
fix(mobile): list the project's Apps instead of always showing "No apps yet" by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9183
fix(kortixd): pi 1.0.3 + daemon bun.lock, so the API image builds again by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9186
feat(web): redesign authenticator app enrollment in Security settings by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9185
fix(config-releases): an unbuildable or quarantined tip never silently drops a session's config by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9187
feat(web): list every signed-in device in Settings > Security by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9184
feat(desktop): drag-to-install DMG window with a dithered background by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9190
fix(auth): a signed-out device's bearer stops working at once; label the device routes by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9193
fix(mobile): scroll the drawer nav pills with the session list by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9192
feat(web): calm preview states: load line page, dot-matrix while building, debug harness by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9188
refactor(pi): remove the pi_worker split and the compiled-boot pipeline; pi runs only in the sandbox by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9189
fix(desktop): show the DMG background on macOS 26 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9194
Promote selected main commits (through 2010294429) to staging by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9195
feat(config-releases): a release is a checkout of the base branch, with the repository's own layout by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9197
fix(snapshots): a failed Platinum template build names its cause by @kubet in https://github.com/kortix-ai/suna/pull/9198
fix(config-releases): relative OpenCode instructions read the release, not /workspace by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/9199
feat(session): show the model that answered and what it cost by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8759
feat(web): link the App Store and Google Play listings on /download by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9202
fix(web): Edit on a message queued during boot keeps its files by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/9204
Promote e4d68df3df (store links on /download) to staging by @sutharjay1 in https://github.com/kortix-ai/suna/pull/9203
fix(deps): seroval 1.6.3 and source-map-js 1.2.2 for three new CVEs by @markokraemer in https://github.com/kortix-ai/suna/pull/9207
Promote main 34c9f9d94f to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/9210
Release v0.13.51 — See the model behind each answer, pi 1.0, and config releases that follow your repository by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9196
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.50...v0.13.51
Read the full release on GitHub →
v0.13.50 October 4, 2026 New
Fork a conversation. A session's conversation offers a Fork action, so you can branch from any point.
Cancel a subscription from the billing pane.
One permission per topic. The broad project.customize.* permissions are replaced by project.settings.write, project.sandbox.write, and project.model.read/.write. Agent changes use project.agent.write. Every role keeps exactly what it had. Project members can now open Agents and Triggers read-only.
Improved
Sign-in: an existing account opens on the password form, and the email link is one click away. After you enroll in two-factor authentication, sign-in asks for the code. A magic link still completes when its verifier cookie is lost. A failed server sign-out is reported on the sign-in page.
Security settings list the devices that are signed in.
Account deletion: "Delete immediately" deletes the account, and the dialog reads as a choice.
Creating a project lands you on the project page.
The session key panel says whose keys a session reaches, and why a key is not available.
Connectors: Computers appear under Connected only after a machine is paired, and connector notes display the same way on every surface.
The audit log: reconciliation catches up on accounts with very large histories.
The API returns 400 for a malformed account id, and a marketplace install fails clearly when no model can serve its import.
Database health: more RLS policies evaluate the signed-in user once per query, and legacy tables gain primary keys and missing indexes.
Fixed
The CLI:
sessions log and chat show the real stop or failure reason.
Trigger schedule updates keep their time zone.
Policy conditions keep their operators.
--json output and session listings stay stable.
projects rm --purge reports "Purged".
Project-scoped commands reach projects that have no session.
The empty models state points to providers.
Mobile:
Question answers can be retried until they are accepted.
Mermaid diagrams render.
Teams mentions are stripped from session titles.
Diff stats keep literal escapes.
App previews refresh their credentials when opened.
Desktop: "Allow all" adds Kortix to the macOS Screen Recording list.
A warm session that has not been prompted reads as starting, not running.
The sandbox agent's dependencies are patched against two undici vulnerabilities.
Customize tabs appear immediately, and only the page body waits for permissions.
What's Changed
fix(customize): paint the tab bar on the first frame; gate only the page body by @markokraemer in https://github.com/kortix-ai/suna/pull/9042
fix(api): list stopped sessions the runtime row does not confirm (KRTX-1452) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9020
fix(cli): preserve trigger timezone on schedule updates (KRTX-1338) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8869
fix(audit): bound each reconciliation pass by source rows, so heavy accounts converge by @markokraemer in https://github.com/kortix-ai/suna/pull/9049
refactor(iam): one permission per topic — retire project.customize.* by @markokraemer in https://github.com/kortix-ai/suna/pull/9050
fix(mobile): preserve literal newline escapes in diff stats (KRTX-1265) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8860
perf(db): omit unused sandbox export ordering (KRTX-1074) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8867
test: add the e2e pilot and testing assessment by @markokraemer in https://github.com/kortix-ai/suna/pull/9052
test(flows): APP-7 accepts a released image when a deployed target finishes the build first by @markokraemer in https://github.com/kortix-ai/suna/pull/9056
chore(release): VERSION → 0.13.50 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9060
chore(release): staging VERSION → 0.13.50 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9061
refactor(sdk): move the mobile sandbox-image runtime into @kortix/sdk (KRTX-1065) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8779
fix(api): bound the session-config mirror wait and prove freshness per read (KRTX-818) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9048
feat: Kortix is the open-source AI Operating System — rename everywhere + AI OS marketing site by @markokraemer in https://github.com/kortix-ai/suna/pull/9068
fix(mobile): strip Teams mentions from session titles (KRTX-1266) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8863
perf(db): cache legacy threads RLS identity (KRTX-1148) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8879
perf(db): index the parked-runtime verification sweep on kortix.session_sandboxes (KRTX-1307) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8995
fix(web): render the signed-in device list on /settings/security (KRTX-1392) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9018
test(api): pin the forwarded-prompt sweep to its partial index (KRTX-1303) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9010
fix(mobile): render Mermaid show items as diagrams (KRTX-1267) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8866
feat(billing): add a cancel subscription control to the billing pane (KRTX-1316) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9043
test(lanes): make the packages test lane hermetic on a platform sandbox (KRTX-1409) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9011
fix(api): report not_open when the strand re-queue's guarded update matches nothing (KRTX-1469) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9022
fix(tests): pin one gateway internal token across local stack halves (KRTX-1433) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9025
fix(mobile): refresh preview credentials on opening (KRTX-1247) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8857
fix(connectors): list Computers under Connected only once a machine is paired (KRTX-1492) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9073
perf(db): index chat_pending_auth_messages.project_id for its projects FK (KRTX-1097) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9055
fix(migration): give the smoke storage-object query an explicit psql separator (KRTX-1457) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9015
fix(cli): report Purged when projects rm --purge hard-deletes (KRTX-1487) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9092
fix(tests): catalog the real steps of every harnessFlow id and its -pi twin (KRTX-1434) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9000
refactor(dev): extract warm_frontend_routes, fix empty-array crash on bash 3.2 (KRTX-1456) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9014
fix(api): treat an integrations.sh surface 404 as an empty record (KRTX-1442) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9004
fix(agent-tunnel): resume the tunnel lease through the drift-safe service resume (KRTX-1389) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9007
fix(cli): reject explicit roles for everyone grants (KRTX-1337) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8871
fix(cli): surface the real stop reason in sessions log and chat (KRTX-1257) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8894
fix(web): the Delete account dialog reads as a choice, not a done state (KRTX-1403) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9076
perf(db): clear the auth_rls_initplan advisor finding on public.webhook_events (KRTX-1151) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9083
fix(db): add primary key to legacy workflow backup (KRTX-1170) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8886
refactor(cli): compress MCP execution, root dispatch and picker lifecycle (KRTX-1341) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8915
refactor(cli): split the CLI mega-modules and delete their dead duplicated surface (KRTX-1334) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8982
fix(api): publish the real value sets for merged-literal OpenAPI enums (KRTX-1490) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9032
fix(api): delete the account for real on delete-immediately (KRTX-1402) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9033
refactor(api,sdk): one contract — typed handlers, true spec, SDK drift test, daemon callbacks (R3) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8954
chore(deps): bump pypdf from 6.16.1 to 6.19.0 in /packages/starter/templates/general-knowledge-worker/skills/presentations/scripts by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/8644
chore(deps): bump ip-address from 10.7.0 to 10.7.2 in /.deepsec by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/8513
chore(deps): bump actions/checkout from 4 to 7 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7991
chore(deps): bump go.opentelemetry.io/otel/sdk/log from 0.19.0 to 0.21.0 in /apps/kortix-app-runtime/caddy by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/8299
fix(web): keep the dev gate off the auth callback routes (KRTX-1467) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9062
fix(api): bound the sandbox env memo on the skip path (KRTX-1501) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9084
fix(api): refuse foreign credential shapes in validateSecretKey with a precise error, not a doomed probe (KRTX-1414) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9097
fix(cli): preserve session listing across flag spellings (KRTX-1323) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8875
fix(cli): preserve JSON output for session reload (KRTX-1326) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8877
fix(web): give the account-hub audit tab a page heading (KRTX-1423) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9115
fix(web): default existing-account sign-in to the password form (KRTX-1346) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9103
fix(cli): let project-scoped commands reach a non-session project (KRTX-1437) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9110
fix(dev): make the tunnel skip paths startable (KRTX-1455) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9003
fix(web): drop the timed-out extension window-message noise (KRTX-1459) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9112
fix(sessions): the key panel and its refusal say whose keys a session reaches, and why not by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8192
fix(cli): dispatch channels after parsing flags (KRTX-1335) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8873
fix(cli): document the built-in dev host as https in hosts --help (KRTX-1262) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9109
fix(cli): make the empty models state point at providers, not an empty ls (KRTX-1538) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9118
test(cli): pin the sandbox env-file path for projects use --host (KRTX-1429) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9116
fix(api): return 400 for a malformed account_id on account-scoped routes (KRTX-1421) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9114
fix(api): report an unprompted warm session shell as starting, not running (KRTX-1466) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9100
test(cli): pin --host token routing under the ambient session principal (KRTX-1404) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9077
fix(cli): preserve operators in policy condition values (KRTX-1324) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8874
fix(cli): show the real failure reason for a failed turn in sessions log and chat (KRTX-1463) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9111
fix(api): refuse a marketplace install whose import turn has no servable model (KRTX-1540) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9094
fix(shared): parse the connector notes block on every surface (KRTX-1383) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9081
fix(tests): keep the packages lane green on loaded worker sandboxes (KRTX-1479) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9074
fix(web): reach the too-long name message for typed input on /new (KRTX-1424) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9067
fix(worker): retry worker RPC only on transport failures, never on error text (KRTX-1388) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9030
fix(mobile): keep question answers retryable until accepted (KRTX-1246) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8870
fix(web): surface an unconfirmed server sign-out on /auth (KRTX-1393) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9078
feat(web): offer a Fork action on session conversations (KRTX-1474) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9041
fix(web): land on the project page after Create project (KRTX-1419) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9028
fix(web): a fresh magic-link sign-in completes its PKCE exchange after a lost verifier cookie (KRTX-1412) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9034
fix(web): enforce the TOTP challenge after enrollment (KRTX-1386) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9029
chore(deps): bump hono from 4.13.5 to 4.13.7 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/8563
refactor(api): dedupe agent governance, git auth and compute accrual copies (KRTX-1498) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9085
refactor(web): simplify IAM contracts, capability model and audit filters (KRTX-1056) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8919
refactor(web,sdk): delete dead component layers and centralize connector setup (KRTX-1012) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8829
refactor(whitelabel-demo): dedupe shared paths, split fat components (KRTX-1418) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9091
fix(db): re-date the agent_workflows_backup migrations after dev's applied set by @markokraemer in https://github.com/kortix-ai/suna/pull/9125
fix: v0.13.50 gate — sandbox-agent lockfile, undici 8.10.2, documented sudo in the sandbox image by @markokraemer in https://github.com/kortix-ai/suna/pull/9127
fix(deps): sync the daemon's standalone bun.lock with the hono bump by @markokraemer in https://github.com/kortix-ai/suna/pull/9128
perf(db): add a primary key to basejump.config (KRTX-1167) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9089
fix(web): mark the AI OS hero art decorative; journey 01 takes #9103's explicit link choice by @markokraemer in https://github.com/kortix-ai/suna/pull/9129
Revert otel/sdk/log 0.21 bump in the Caddy runtime (breaks the API image build) by @markokraemer in https://github.com/kortix-ai/suna/pull/9130
fix(db): consolidate legacy deletion request policies (KRTX-1155) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8884
perf(db): add a primary key to agents_backup_cleanup_20250729 (KRTX-1171) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9106
fix(db): consolidate public.referrals RLS policies to one permissive policy per action (KRTX-1165) by @agent-kortix in https://github.com/kortix-ai/suna/pull/9107
fix: v0.13.50 gate — CLI export, linear Teams mention strip, starter snapshot, SDK timer containment by @markokraemer in https://github.com/kortix-ai/suna/pull/9132
fix(security): email only Medium+ GuardDuty findings by @markokraemer in https://github.com/kortix-ai/suna/pull/9133
fix(security): keep GuardDuty detectors at SIX_HOURS publishing by @markokraemer in https://github.com/kortix-ai/suna/pull/9135
docs(learnings): change Terraform-owned AWS config only in Terraform by @markokraemer in https://github.com/kortix-ai/suna/pull/9136
revert: AI OS rename + marketing site (#9068), back to the prod site by @markokraemer in https://github.com/kortix-ai/suna/pull/9142
fix(security): document Trivy exceptions for sandbox sudo and two unfixed CVEs by @markokraemer in https://github.com/kortix-ai/suna/pull/9145
fix(desktop): Allow all adds Kortix to the Screen Recording list by @markokraemer in https://github.com/kortix-ai/suna/pull/9147
fix(security): refuse crash dumps and files over 20 MB in pre-commit and pre-push by @markokraemer in https://github.com/kortix-ai/suna/pull/9149
test(sdk): end each fake-timer act() scope on real timers in the poll-deadline test by @markokraemer in https://github.com/kortix-ai/suna/pull/9148
Promote main ecd96ff736 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/9150
Release v0.13.50 — Fork a conversation, cancel from billing, and one permission per topic by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/9153
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.49...v0.13.50
Read the full release on GitHub →
v0.13.49 October 4, 2026 New
Permissions decide, for agents as for people. An agent that holds a permission can do the work end to end. kortix_permissions: all, "*", and any list that contains "*" mean the same thing. With all, an agent can also manage project members and delete the project. Creating credentials stays with people.
An agent can grant only what it holds. When an agent edits an agent's permissions, connectors, secrets, or Apps, it can add only what it holds itself. This applies through every route, change request, and push. An agent that does not hold every grant opens a change request instead of pushing the default branch directly.
One authorization path. Every agent with a kortix_permissions grant acts as itself, in every project. The per-project switch back to the authority of the person who started it is gone.
One bad permission entry no longer empties an agent. An entry Kortix cannot grant is skipped, and the rest of the agent's grant stays. kortix validate still reports it.
The Meta agent is platform-owned. It runs read-only and appears first in the agent picker.
No more active-session limits. Billing is the only limit on how many sessions run at once.
The blog is served from its own app at /blog.
Improved
A change-request merge that edits agents, triggers, or default_agent needs the same permission as the direct route.
The download links (/download/macos, /windows, /linux) fall back to the releases page after 3 seconds if GitHub does not answer.
Deleting a sign-in removes the accounts that only that person belonged to, and revokes all of that person's credentials.
The manager's session inventory no longer lists deleted warm drafts.
Fixed
kortix validate rejects invalid arguments.
The sandbox's /turn request is read correctly before streaming starts.
The mobile stop icon honors its size.
The infrastructure audit checks network ACL admin ports separately for IPv4 and IPv6.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.48...v0.13.49
Release on GitHub →
v0.13.48 October 3, 2026 New
Your computer, on the web. Each physical computer appears once, even after you re-pair it. Computer Use runs inside the Kortix desktop app, and it asks for every macOS permission right after you connect. Pairings with no hardware id that stay silent for 30 days are removed.
Edit a queued prompt in place. The prompt queue sits in its own card above the composer.
Review Center has its own page. You approve requests in a modal on the approve page.
Channel bindings live in one dialog, with one tab per platform and a settings dialog for each binding. Teams bindings read "Team › Channel" and include the thread title.
Shared sessions show who sent each message, with an avatar per sender.
Marketplace redesign: one card per item, a file tree in the sidebar, and related skills.
A new /developers page. Its "copy prompt command" output now pastes safely into any POSIX shell.
One-day personal API keys. You can create a key that expires after one day.
Apps on mobile: a new Apps tab in the project drawer.
Show files name the file in a hover card.
Improved
Audit log, rebuilt. Events are written to weekly partitions with time-ordered ids, without the per-session lock that slowed ingestion. Noise rows (missing-secret probes, a login event per request) are gone. Weeks older than 90 days move to S3 under Object Lock, and exports read archived weeks too.
The agent harness: Kortix tools run on both supported harnesses, and the web, CLI, and mobile clients render from the Kortix session contract.
Slack: messages name people and channels instead of showing ids, and plan steps render channels natively. Agent history and thread reads name each author. Slack shows its own logo everywhere.
Connectors: discovery tries managed connectors first, with explicit API and MCP sources. Discovery still works when a spec source cannot load.
Sandbox file uploads send 8 MiB requests, so a 1 MiB file uploads in about 2 s instead of 20 s.
Sessions honor US compute placement and reuse warm sessions. Warm sessions you are billed for stay visible in the session list. You can switch agents in a started session, and the locked agent picker explains why it is locked.
Each sandbox sends its calls to its own regional control plane.
Database health: RLS policies evaluate the signed-in user once per query, duplicate indexes are dropped, foreign keys are indexed, and unused legacy tables are removed.
Apps: deleting an App deletes its deployment images, and you can delete a single deployment.
Invite emails name the invited address.
Fixed
A session whose turn ends with a terminal error now parks, instead of staying busy.
The CLI: --host and named-host project context route to the right host, browser login uses the target host, and --json output carries no human notices. accounts current --json exits 1 when no account is active, projects use reports errors instead of crashing, and tokens rm with a malformed id returns 400.
Credit balances read the same on the CLI and the web, and a free account sees its balance on Plan.
Sign-in keeps the details of an email sign-in failure. Rate-limit errors show guidance instead of raw text, and account deletion ends active sessions at once.
The web: the command palette finds active projects, the selected language persists, the account hub opens from deep links, connected-account settings open again, and settings rows stack on narrow screens. The Apps card shows its live preview again.
Video: unsupported fullscreen and blocked autoplay no longer raise errors.
Mobile: the composer detects mention and command triggers at the caret, not only at the end of the text.
Marketplace installs report failures instead of exiting silently.
What's Changed
feat(session): participants endpoint and per-message sender avatars for shared sessions by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8493
feat(computers): "Your computer" on the web; re-pairing says "already connected" by @markokraemer in https://github.com/kortix-ai/suna/pull/8660
fix(auth): end sessions after immediate account deletion (KRTX-951) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8640
feat(desktop): Computer Use runs inside Kortix; macOS grants go to Kortix, asked at once by @markokraemer in https://github.com/kortix-ai/suna/pull/8678
test(kortixd): wait for the note's content, not for the file (W5 E4 race) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8651
refactor(web): one toast surface, delete lib/toast wrapper by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8682
refactor(sdk): separate facade, transport and working decisions (KRTX-916) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8577
fix(web): guard unsupported video fullscreen API (KRTX-942) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8621
chore(api): revert archived wake budget extension (KRTX-440) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8662
chore(api): revert slow chunk read diagnostics (KRTX-797) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8663
refactor(sdk): revert audit query builder deduplication (KRTX-413) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8664
chore(api): revert resource-grant timing instrumentation (KRTX-821) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8665
chore(api): revert proxy failure log enrichment (KRTX-811) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8666
refactor(mobile): revert session action flow extraction (KRTX-774) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8668
chore(api): revert account-key session start denial (KRTX-426) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8669
chore(api): revert config deadline stage attribution (KRTX-818) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8670
refactor(web): revert sidebar menu extraction (KRTX-651) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8671
chore(api): revert Platinum reaper throttle classification (KRTX-345) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8672
refactor(api): revert preview helper extraction (KRTX-328) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8673
chore(api): revert secrets read timing instrumentation (KRTX-819) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8674
chore(web): revert dead connector hook deletion (KRTX-709) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8676
feat(computers): setup on the spot: every macOS permission asked right after connecting by @markokraemer in https://github.com/kortix-ai/suna/pull/8687
fix(web): persist selected language in browser session (KRTX-950) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8680
fix(sessions): honor US compute placement and warm reuse by @kubet in https://github.com/kortix-ai/suna/pull/8653
fix(web): restore connected account settings destination (KRTX-961) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8683
refactor(search): share runtime ranking and delete host shims (KRTX-394) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8684
refactor(api): compress shared middleware and value projections (KRTX-960) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8685
fix(web): include active projects in palette search (KRTX-964) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8686
revert(messaging): take agents-message-people out of main, keep message authors by @markokraemer in https://github.com/kortix-ai/suna/pull/8659
chore(release): VERSION → 0.13.48 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8691
chore(release): staging VERSION → 0.13.48 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8692
feat(computers): one entry per physical computer; older connections apart by @markokraemer in https://github.com/kortix-ai/suna/pull/8697
feat(capture): Kortix Capture — 24/7 screen capture per user, searchable by people and agents by @markokraemer in https://github.com/kortix-ai/suna/pull/8698
fix(main): packages lane red — 4 capture audit labels untranslated in 8 locales, capture sweeper unclassified by @markokraemer in https://github.com/kortix-ai/suna/pull/8700
feat(computers): remove pairings without a hardware id after 30 silent days by @markokraemer in https://github.com/kortix-ai/suna/pull/8701
feat: OpenCode decoupling W6 — clients on the Kortix contract (web renders from SDK kinds, neutral CLI/TUI seam, mobile on @kortix/sdk) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8699
fix(db): drop three audit_events indexes no read path uses (22 GB) by @markokraemer in https://github.com/kortix-ai/suna/pull/8703
infra(capture): allow the dev capture bucket to be destroyed (step 1 of removing Kortix Capture from main) by @markokraemer in https://github.com/kortix-ai/suna/pull/8704
revert(capture): remove Kortix Capture from main by @markokraemer in https://github.com/kortix-ai/suna/pull/8705
fix(audit): stop writing noise rows — missing-secret probes, per-request login, self-audit by @markokraemer in https://github.com/kortix-ai/suna/pull/8706
chore: restore 13 wrongly reverted PRs (merge-gate revert cascade, 2026-10-01) by @markokraemer in https://github.com/kortix-ai/suna/pull/8702
fix(audit): the git proxy's legacy-token fallback is a probe by @markokraemer in https://github.com/kortix-ai/suna/pull/8711
refactor(web): consolidate connector setup concerns (KRTX-966) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8689
fix(auth): retain email sign-in failure details (KRTX-958) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8712
fix(connectors): managed-first discovery with explicit API/MCP sources (KRTX-885) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8713
feat(audit): new audit_events rows get a time-ordered UUIDv7 event_id (1/5) by @markokraemer in https://github.com/kortix-ai/suna/pull/8708
feat(audit): remove the per-session lock and hash chain from audit ingestion (2/5) by @markokraemer in https://github.com/kortix-ai/suna/pull/8710
feat(audit): weekly range partitions for audit_events, swapped in without moving rows (3/5) by @markokraemer in https://github.com/kortix-ai/suna/pull/8715
feat(infra): audit-archive S3 bucket with Object Lock for audit_events by @markokraemer in https://github.com/kortix-ai/suna/pull/8709
feat(audit): archive weeks older than 90 days to S3 under Object Lock and drop their partitions (4/5) by @markokraemer in https://github.com/kortix-ai/suna/pull/8716
feat(audit): export reads archived audit weeks from S3; retention docs and viewer note (5/5) by @markokraemer in https://github.com/kortix-ai/suna/pull/8717
chore(env): dev runs the audit archive (mirror of kortix-dev-env) by @markokraemer in https://github.com/kortix-ai/suna/pull/8718
refactor(web): unify Drive row interactions and remove unused paths (KRTX-986) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8720
fix(web): reject failed careers application responses (KRTX-979) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8721
refactor(web): compress file renderer lifecycles (KRTX-983) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8723
refactor(markdown): share fenced-code language aliases (KRTX-992) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8724
refactor(web): unify marketing tree and boundary renderers (KRTX-980) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8726
refactor(web): unify tab lists and diagram zoom (KRTX-1008) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8727
fix(api): invalidate archived-project secret intake (KRTX-991) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8728
refactor(shared): own CLI and TUI host storage (KRTX-993) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8729
fix(slack): show channel and people names instead of ids by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8730
feat(slack): name each author in agent history and thread reads by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8731
fix(email): invite names the invited address and clears SpamAssassin's image-only window by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8732
feat(web): edit each channel binding in a settings dialog by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8733
feat: OpenCode decoupling W7 — Kortix tools on pi, system skills and docs describe both harnesses by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8714
perf(mobile): stop the waking-session freeze, cut re-renders, render markdown images by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8468
fix(slack): plan steps name people as text and render channels natively by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8735
feat(web): rebuild the /developers page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8736
fix(apps): delete releases App deployment images; delete one deployment by @kubet in https://github.com/kortix-ai/suna/pull/8734
feat(web): show the prompt queue as its own card above the composer by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8737
feat(web): channel bindings in one dialog with a tab per platform by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8739
fix(platinum): call each sandbox's own control plane, not the home one by @kubet in https://github.com/kortix-ai/suna/pull/8740
fix(connectors): Connectors API Discover is off by default again (hotfix) by @markokraemer in https://github.com/kortix-ai/suna/pull/8741
fix(teams): name channel bindings Team › Channel, with the thread title by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8744
fix(dev): build the default image and make it resident in US before the API rolls by @kubet in https://github.com/kortix-ai/suna/pull/8743
fix(config-releases): the meta coordinator runs its own governance-only release by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8745
fix(web): Slack's own logo on session channel cards, not pink by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8749
perf(mobile): remove render and animation hot paths before store release by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8747
fix(web,mobile): Slack's own logo everywhere: connector detail and mobile by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8757
fix(cli): accounts current --json exits 1 when no account is active (KRTX-1044) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8752
fix(cli): reject missing named-host project context (KRTX-1042) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8758
feat(sessions): edit a queued prompt in place by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8753
fix(web): make the locked session agent picker read inert with a why tooltip by @agent-kortix in https://github.com/kortix-ai/suna/pull/8748
fix(settings): render the account hub on deep links (KRTX-1050) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8762
fix(computer): honor empty-directory deletion contract (KRTX-1057) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8764
refactor(web): share factory across circular dotm variants (KRTX-656) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8558
fix(connectors): expose computer discovery RPCs (KRTX-1055) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8766
perf(api,sdk): R1 hot path: fewer statements, sleeps and git calls between a prompt and the harness by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8765
feat(web): Review Center as its own page, approvals in the approve-page modal by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8761
fix(api): the latency bench's restart guard is local-only; R1 numbers on dev by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8770
fix(files): upload sandbox files in 8 MiB requests, not 64 KiB round trips (1 MiB: 20 s → 2 s) by @kubet in https://github.com/kortix-ai/suna/pull/8768
fix(sandbox): a box registers every model it is told to use; the gateway decides what is served by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8772
fix(billing): show free account balance on Plan (KRTX-1060) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8769
fix: make main green: SQL guard, queued-prompt e2e, and the four failures it was hiding by @kubet in https://github.com/kortix-ai/suna/pull/8771
fix(web): replace raw auth rate-limit errors with guidance (KRTX-1049) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8763
refactor(web): delete unreachable hooks (KRTX-1063) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8773
fix(runtime): no relaunch on first open of a swapped template; direct regional creates by @kubet in https://github.com/kortix-ai/suna/pull/8775
fix(cli): align human credit output with web units (KRTX-1054) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8776
fix: main green — page heading on standalone project pages; two stale tests by @kubet in https://github.com/kortix-ai/suna/pull/8778
refactor(sdk): centralize provider admin state (KRTX-1014) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8777
perf(proxy): /v1/p reads the token row once and overlaps the sandbox row with auth by @kubet in https://github.com/kortix-ai/suna/pull/8774
perf(snapshots): exact-name Platinum template lookups; reap the predecessor off the session path by @kubet in https://github.com/kortix-ai/suna/pull/8780
fix(cli): route projects use --host to the named host (KRTX-1041) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8750
perf(db): drop duplicate index on basejump.account_user (KRTX-1078) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8782
perf(db): index the account_tokens foreign keys (KRTX-1091) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8788
fix(db): drop duplicate index idx_agents_account_non_suna (KRTX-1083) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8783
perf(db): index the basejump.account_user account_id foreign key (KRTX-1085) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8786
fix(api): park a session whose turn ends with a terminal error (KRTX-1046) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8755
refactor(web): delete unreachable analytics, desktop and notification paths (KRTX-1059) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8791
fix(cli): state the one-way disable semantics in the tokens help (KRTX-1070) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8784
fix(db): index the app_deployment_events runtime foreign key (KRTX-1092) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8805
perf(db): prepared connections plan every execution for its own parameters by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8839
fix(db): index the unindexed basejump.invitations foreign keys (KRTX-1087) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8817
fix(billing): name the session in sandbox compute ledger debits (KRTX-1069) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8813
fix(db): index the granted_by FK on the legacy public.user_roles (KRTX-1124) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8831
fix(db): index the legacy public.credit_ledger created_by FK (KRTX-1122) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8807
fix(db): evaluate auth.uid() once in the checkout_clicks RLS policy (KRTX-1135) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8810
fix(db): wrap public.api_keys RLS auth.uid() in an initplan (KRTX-1133) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8824
fix(db): wrap legacy credit_accounts RLS auth calls in subqueries (KRTX-1136) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8827
ci: stop burning Actions minutes on every push to main by @markokraemer in https://github.com/kortix-ai/suna/pull/8844
perf(db): add covering indexes for the unindexed foreign keys on public.agent_versions (KRTX-1121) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8801
perf(api): resolve the admin accounts search users-first (KRTX-1127) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8832
chore(api,sdk): refactor plan R0 guard rails by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8294
fix(db): rebuild the basejump.accounts owner policy as an initplan (KRTX-1129) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8815
fix(db): wrap legacy public deletion-request policies for the RLS init plan (KRTX-1130) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8819
fix(db): wrap auth.uid() in the agent_runs select policy (KRTX-1131) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8821
fix(api): turn-ledger savepoint log carries the error in the message by @agent-kortix in https://github.com/kortix-ai/suna/pull/8845
fix(db): wrap legacy public.credit_usage RLS policy auth calls in InitPlan subqueries (KRTX-1140) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8814
fix(db): drop the legacy basejump account_user select policy (KRTX-1128) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8793
fix(db): re-date pending concurrent migrations to unblock dev (KRTX-1083) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8838
feat(test): local test attestation gate by @markokraemer in https://github.com/kortix-ai/suna/pull/8850
perf(db): index the account_secret_resources.project_id foreign key (KRTX-1090) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8833
perf(db): index the basejump.accounts foreign keys (KRTX-1086) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8851
fix(mobile): remove inactive sandbox switch shortcut (KRTX-898) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8561
fix(cli): keep human notices off the machine stream for --json (KRTX-1043) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8751
fix(api): keep billed warm sessions visible in the project session list (KRTX-1068) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8835
fix(api): rate-limit the dead-credential 401 warn line (KRTX-1039) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8754
fix(api): degrade connector auth discovery when a spec source cannot be loaded (KRTX-1038) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8756
fix(marketplace): surface install failures instead of silent exit 0 (KRTX-1045) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8781
fix(sdk): never retry a 4xx in the picker and tunnel query retry policies (KRTX-1040) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8837
refactor(web): compress public route helpers (KRTX-989) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8722
fix(db): re-date the invitations FK index migration after the ordering violation (KRTX-1087) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8846
fix(db): remove broken agent_runs_select_policy_initplan migration (unblocks deploys) by @markokraemer in https://github.com/kortix-ai/suna/pull/8852
docs(learnings): a migration naming a nonexistent column blocks every dev deploy by @markokraemer in https://github.com/kortix-ai/suna/pull/8853
fix(api): R2 reliability with 3 replicas — no per-process state, no swallowed writes, no sleeps by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8848
fix(db): the local migration lint refuses a migration dated before main's newest by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8932
fix(cli): drop the per-subcommand --help promise from projects group help (KRTX-1261) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8888
feat(iam): offer one-day personal key expiry (KRTX-936) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8606
fix(web): stack settings rows below sm so help text stays readable (KRTX-1313) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8909
fix(api): answer 400 for a malformed token id in tokens rm (KRTX-1330) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8892
fix(cli): parse projects use error responses instead of crashing (KRTX-1192) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8891
fix(web): show the full Linux download size on narrow viewports (KRTX-1291) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8903
fix(mobile): detect composer triggers at the caret (KRTX-1248) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8856
fix(cli): route browser login through target host (KRTX-1255) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8864
refactor(web): delete unused apps-web exports, badge and rail item (KRTX-909) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8900
fix(cli): scope account defaults to explicit host (KRTX-1336) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8868
fix(cli): scope cloud E2E token rename/cleanup to the minted row (KRTX-1342) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8887
refactor(web): drop the dead email-code action the link flow replaced (KRTX-1332) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8889
refactor(web): separate Apps concerns and remove unreachable code (KRTX-977) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8719
feat(web): marketplace redesign — one card, sidebar file tree, related skills by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8945
fix(deps): devalue 5.9.3; ignore unreachable node-forge CVE-2026-85393 by @markokraemer in https://github.com/kortix-ai/suna/pull/8951
fix(test): key attestation to the PR diff so unrelated main-merges don't invalidate it by @markokraemer in https://github.com/kortix-ai/suna/pull/8952
refactor(web): compress project workflows and remove obsolete onboarding code (KRTX-1010) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8760
fix(session): keep agent switching available in a started session (KRTX-1290) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8943
fix(web): handle play() rejections and drop the autoplay NotAllowedError noise (KRTX-1333) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8946
feat(mobile): an Apps tab in the project drawer (KRTX-1286) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8947
perf(db): drop the unused indexes on kortix.access_requests (KRTX-1174) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8893
fix(db): consolidate legacy credit account select policies (KRTX-1160) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8885
perf(db): scope legacy credit ledger policies by role (KRTX-1162) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8882
perf(db): cache legacy credit purchase RLS auth calls (KRTX-1139) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8878
perf(db): drop invalid duplicate messages index (KRTX-1084) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8859
chore(db): retire the dead legacy public.credit_balance table (KRTX-1137) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8849
fix: clear staging gate #8950 — CodeQL highs + web tests by @markokraemer in https://github.com/kortix-ai/suna/pull/8957
fix(db): drop the legacy file_uploads table (KRTX-1142) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8842
perf(db): wrap message_select_policy auth.uid() calls in initplans (KRTX-1143) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8840
feat(web): name show files in a hover card, drop the file-name row by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8958
perf(db): index the public.credit_usage message_id foreign key (KRTX-1123) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8812
refactor(db): drop the duplicate account_memberships unique index (KRTX-1082) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8785
fix(web): /developers copies the prompt command with POSIX single quotes by @markokraemer in https://github.com/kortix-ai/suna/pull/8962
fix: core lane for staging #8960 — credit_purchases RLS qualification, stale shiki php diff by @markokraemer in https://github.com/kortix-ai/suna/pull/8963
fix(web): apps card shows the live preview again (journey 18) by @markokraemer in https://github.com/kortix-ai/suna/pull/8965
fix(db): re-date out-of-order public_credit_usage_message_id_index (unblock dev) by @markokraemer in https://github.com/kortix-ai/suna/pull/8967
fix(db): re-point account_secret_grants FK before dropping the duplicate membership index by @markokraemer in https://github.com/kortix-ai/suna/pull/8969
fix(db): snapshot companion for the duplicate account_memberships index drop by @markokraemer in https://github.com/kortix-ai/suna/pull/8970
fix(db): re-date 8 migrations that sort before dev's applied set by @markokraemer in https://github.com/kortix-ai/suna/pull/8971
fix: clear CodeQL highs on staging PR #8968 by @markokraemer in https://github.com/kortix-ai/suna/pull/8972
fix(web): journey 18 modal steps match the product by @markokraemer in https://github.com/kortix-ai/suna/pull/8973
ci(tests): the core lane installs Chromium too by @markokraemer in https://github.com/kortix-ai/suna/pull/8974
fix(api): stamp created_at when a warm session is adopted by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8953
fix(release): unblock dev deploy and the v0.13.48 staging gate by @markokraemer in https://github.com/kortix-ai/suna/pull/8976
Promote main 1cf6d6ed0c to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/8977
Release v0.13.48 — Your computer on the web, a rebuilt audit log, and editable queued prompts by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8746
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.47...v0.13.48
Read the full release on GitHub →
v0.13.47 October 1, 2026 Microsoft Teams for every project, secrets you can share with an agent, failed-trigger alerts, and immediate sign-out
New
Microsoft Teams is on for every project. There is no feature flag to turn on: connect Teams from the project's Connectors → Channels page. A tenant admin consents once, or the project brings its own bot. A project that connected Teams while it was a flag keeps its install. @kortix/sdk keeps teams as a deprecated flag key that always reports enabled. (#8601, #8603)
What Kortix says to one person in Teams stays with that person. In a channel or group chat, only that person sees:
the prompt to connect an account or request access, with the connect button right in the thread;
command replies;
why a message did not run;
approval requests and decisions.
Teams marks these "Only you can see this message", as Slack does. The shared "Working on it…" card appears only when the message can run. (#8609)
Kortix shows when your Teams app is out of date. When your organization's Teams catalog has an older Kortix app, the Channels page and kortix channels status say so and name the two steps: a Teams admin publishes the update, then a team owner updates the app in each team where Teams offers it. A Teams thread that the agent may not read now comes back with who fixes it, instead of Microsoft's error alone. The Teams app moves to version 1.6.1. (#8624)
A failing trigger is no longer silent. When a trigger's run fails, the Schedule page shows the trigger as failed with the reason, and the account owner gets one push when a failure streak starts, not one per fire. The next run that finishes clears it. A reused session that grew too large to compact is retired, so the next fire starts a fresh one. (#8586, #8588)
Human Messaging reaches every agent surface (projects with the Human Messaging feature on). Agents in sessions, Slack, Teams and the hosted MCP server know how to ask a person and answer back, and the mobile app groups what people asked you under "Asked you". An ask from a session runs the asking session's own agent. (#8622, #8623)
Share a secret or a connector account with an agent. "Who can use it" now offers agents next to people and groups. A value shared with an agent reaches every session of that agent, triggers and schedules included; running the agent stays gated by its own access. A secret link can keep the value to the person who asked. kortix secrets share --agent <name> does the same from the CLI. (#8635, #8638)
Approve or deny a connector call from the Review Center header , next to Back, as for a change request. Deny takes an optional note that reaches the agent. Long parameter values collapse behind Show more. (#8641)
An agent's ask names the agent , not the session title, in "Asked you" (Human Messaging projects). With the Human Messaging feature off, it no longer appears anywhere. (#8626, #8637)
Security
Sharing a session cannot leak a personal value. Making a session project-visible or creating a public share is refused (409 PERSONAL_SECRET_REQUIRES_PRIVATE_SESSION) while the session holds a value shared only with its owner. (#8635)
Permissions follow the capability. A rule on bash also covers the terminal tools, websearch covers web and image search, and webfetch covers page scraping. Unknown tools fail closed. (#8553)
Fixed
Slack and Teams sign-in links open again. Since 2026-09-24 the link to connect a chat account answered "page not found". (#8611)
Accounts that require MFA work after the code is verified. Linking Slack or Teams, and some API routes such as connectors, asked for the second factor again even after it passed. Connecting a chat account now continues by itself after the code. (#8611) Members' sessions in such an account now reach shared provider keys, including a ChatGPT login shared with the project, and changing a shared key still needs the second factor. (#8618, #8620)
A Slack or Teams conversation runs the model it shows. A message without a /model change could run on the model of an earlier message instead of the conversation's model. (#8618)
Signup asks you to open the emailed link. The confirmation screen no longer asks for a six-digit code that the email does not contain. (#8608)
Signing out takes effect on every route at once. A logged-out, banned or revoked access token is rejected everywhere. Before, it stayed valid until it expired, up to an hour, on routes outside the account session check. (#8594)
Migrated sessions start again. A session moved from the previous platform could hold a sign-in token that the move had revoked, and never finished starting. Opening it now restores that one token, only for the session's own box. (#8636)
Audit ingestion wastes fewer retries. After a database timeout, a retry sends half the rows instead of the same statement again, and a small batch gives up after one try. (#8599)
Email connections survive a failed inbox listing. When the inbox listing failed, Kortix treated it as an empty list and removed the project's email connections. It now keeps them and reports the error. (#8607)
The bring-your-own Teams webhook answers 404 , not 503, for a project that has no bot of its own. (#8603)
The Kortix icon is the same everywhere again. The favicon, app icons and home-screen icon all show the light tile with the dark mark, in light and dark mode. (#8647)
Translated pages are translated again. Blog titles and descriptions, SEO descriptions, the site description and the open-source headline show in all eight non-English languages. The brand kit had left them in English. (#8587)
Behind the scenes
Sandbox boot is split into session setup, prompt delivery and turn relays, with no change in behavior (#8600); its boot-order guards follow the moved code (#8627). The SDK's server entrypoint no longer imports itself in a cycle (#8591).
Test repairs for mobile, the CLI and self-hosted Supabase, and the Stop flow (#8575, #8578, #8584, #8590). A flaky kortixd test resets its shared cooldown (#8598). A synthetic test token no longer trips the secret scanner (#8614, #8616). Learnings entries on translating changed copy and on Teams app updates (#8593, #8624).
The runtime protocol is Kortix-owned: transcripts are versioned as kortix.transcript.v1, both agent harnesses serve Kortix turn routes, and @kortix/sdk no longer depends on @opencode-ai/sdk. (#8553)
SDK and host refactors with no change in behavior (#8246, #8398, #8449, #8581, #8632), billing provider handlers split out (#8628), an engineers IAM group for MFA-gated day-to-day AWS access (#8633), and release-gate fixes (#8643, #8645, #8646, #8648, #8650, #8652). Message ids now use the platform's secure random source. (#8646, #8648)
One migration: a nullable run_failing_since column on trigger runtime state (#8588).
Release source: staging 40de384e4f517dacea723221cb430ef45ffe8b00 (promotion #8642; supersedes the earlier candidate 4defc4c213).
What's Changed
fix(mobile): repair main after 5ac201f (KRTX-899) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8578
fix(cli,tests): repair main after f605a96 (KRTX-910) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8584
feat(triggers): a failed trigger run shows on the trigger and pushes the account owner by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8586
fix(triggers): a failed run stays failed across later fires and pushes once per streak by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8588
fix(web): repair main after 7e5e373 — localize the brand-kit copy, fix the tone assertion by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8587
test(flows): accept the /stop "stopping" answer and wait for the stop to land by @markokraemer in https://github.com/kortix-ai/suna/pull/8590
docs(learnings): changed English copy needs a new hashed key in every catalog by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8593
fix(auth): reject logged-out ES256 access tokens on every route by @markokraemer in https://github.com/kortix-ai/suna/pull/8594
chore(release): staging VERSION → 0.13.47 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8596
chore(release): VERSION → 0.13.47 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8597
fix(kortixd): reset the reconcile cooldown before the refresh convergence rows by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8598
fix(audit): never re-send an identical audit ingest statement after a timeout by @markokraemer in https://github.com/kortix-ai/suna/pull/8599
Promote main 13a995e7aa to staging by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8595
feat(teams): Microsoft Teams is on for every project — graduate the teams flag by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8601
fix(teams): the bring-your-own webhook answers 404 for a project with no bot of its own by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8603
fix(mobile): repair main after f256929 (KRTX-398) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8575
Promote main c259040683 to staging by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8604
fix(teams): what the bot says to one person in a channel or group chat only that person sees by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8609
fix(channels): chat sign-in links open and complete by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8611
test(web): a synthetic sign-in token that gitleaks does not flag by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8614
chore(security): ignore the reviewed synthetic sign-in token in 127d878b9b by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8616
fix(auth): align signup prompt with email link (KRTX-937) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8608
fix(channels): a channel turn runs the model Kortix shows; MFA accounts reach shared keys by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8618
refactor(sandbox): separate session and relay from boot (KRTX-930) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8600
fix(secrets): a caller's own key changes keep their MFA level by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8620
feat(messaging): teach every agent surface to message people; mobile Asked you by @markokraemer in https://github.com/kortix-ai/suna/pull/8622
fix(sessions): an ask from a session runs the asking session's agent by @markokraemer in https://github.com/kortix-ai/suna/pull/8623
refactor(sdk): remove server entrypoint back edges (KRTX-927) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8591
fix(teams): show a tenant's outdated Teams app and say who updates it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8624
fix(api): preserve email connections when install listing fails (KRTX-935) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8607
test(kortixd): repair main after 986ffa6 (KRTX-930) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8627
docs(learnings): moving a function breaks the source guards that read its old file by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8630
feat(messaging): human_messaging off = invisible everywhere; pi honours noReply; asks name their asker by @markokraemer in https://github.com/kortix-ai/suna/pull/8626
Promote main 022eb6f264 to staging by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8629
refactor(sdk): dedupe the audit querystring builder across audit and host-boundary (KRTX-413) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8398
refactor(sdk): share workspace search core and prepare injected client (KRTX-392) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8449
refactor(sdk): split event dispatch and stream hydration (KRTX-921) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8581
feat(iam): engineers group for MFA-gated PowerUser access by @markokraemer in https://github.com/kortix-ai/suna/pull/8633
refactor(sdk): move gateway query hooks behind web shim (KRTX-716) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8246
feat(secrets): agents as principals, session-share guard, secret-link audience by @markokraemer in https://github.com/kortix-ai/suna/pull/8635
fix(sessions): a box's own superseded session token heals on start instead of locking the session out by @markokraemer in https://github.com/kortix-ai/suna/pull/8636
refactor(billing): separate provider handlers and wallet orchestration (KRTX-944) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8628
feat(messaging): an agent's ask names the agent, not the session title by @markokraemer in https://github.com/kortix-ai/suna/pull/8637
fix(secrets): agent object grants never activate an agent; agent values at first boot; link values are fresh by @markokraemer in https://github.com/kortix-ai/suna/pull/8638
docs(learnings): an object grant never activates an agent service account by @markokraemer in https://github.com/kortix-ai/suna/pull/8639
refactor(search): use shared workspace search client in hosts (KRTX-393) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8632
feat(review-center): approval decides from the header; long parameter values collapse by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8641
fix: green main — heal module import, billing-gate mock, agent-identities query key by @markokraemer in https://github.com/kortix-ai/suna/pull/8643
feat: OpenCode decoupling W5 — Kortix-owned contract (kortix.transcript.v1 emitted by pi, Kortix turn verbs, @kortix/sdk without @opencode-ai/sdk) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8553
fix: clear the staging gate — CodeQL ReDoS + fs race, journey 23 label by @markokraemer in https://github.com/kortix-ai/suna/pull/8645
fix(sdk): clear CodeQL high alerts — crypto id suffix, no backtracking slash trim by @markokraemer in https://github.com/kortix-ai/suna/pull/8646
fix(web): every app icon and favicon renders the favicon.svg art by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8647
fix(sdk): wire message id tail defaults to crypto random by @markokraemer in https://github.com/kortix-ai/suna/pull/8648
test(kortixd): wait for the note file, not just a running tool (W5 E4 race) by @markokraemer in https://github.com/kortix-ai/suna/pull/8650
test(web): give flag-gated session surfaces a query client (human_messaging, #8626) by @markokraemer in https://github.com/kortix-ai/suna/pull/8652
fix(audit): the project agent-identities route gets its own audit action by @markokraemer in https://github.com/kortix-ai/suna/pull/8654
fix(sdk): unbiased crypto tail for wire message ids by @markokraemer in https://github.com/kortix-ai/suna/pull/8655
fix(email): never relay mail to reserved test domains by @markokraemer in https://github.com/kortix-ai/suna/pull/8656
test(agent-tunnel): keep the runner's AGENT_TUNNEL_HOME out of the CLI tests by @markokraemer in https://github.com/kortix-ai/suna/pull/8657
refactor(slack): separate thread routing and session launch (KRTX-939) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8613
test(api): notification emails go to a relayable recipient domain by @markokraemer in https://github.com/kortix-ai/suna/pull/8658
Promote main 1bf48b514c to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/8642
Release v0.13.47 — Microsoft Teams for every project, secrets you can share with an agent, failed-trigger alerts, and immediate sign-out by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8605
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.46...v0.13.47
Read the full release on GitHub →
v0.13.46 October 1, 2026 An agent permission fix, refresh-token replay protection, prompt authorship, and agents that can ask people (behind a flag).
New
Every prompt records who wrote it, and the transcript shows the author.
Agents can ask a person a question or start a group conversation with people, behind the human_messaging project flag (off by default).
Security
An agent whose policy denies bash or edit can no longer open a shell through the terminal tools or write files through the memory tool.
A refresh token cannot be replayed, and logging out revokes the session.
Fixed
Chat stays available while a connector waits for approval.
The advanced panel preference keeps the panels you open.
The cost explorer shows a loading state until usage arrives.
Mobile renders model reasoning as a thinking row.
Deleting an account no longer reports its sandboxes as lost work.
A conversation with people is named at a word boundary.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.45...v0.13.46
Release on GitHub →
v0.13.45 October 1, 2026 Session labels, a redesigned approval flow, and long sessions that compact instead of failing.
New
Sessions carry writable labels and metadata across the API, SDK, CLI, MCP and web, and the session list filters by label.
Redesigned approval, preview and install consent screens.
A split "Connect your computer" dialog with one-click CLI copy.
Recent session views stay open across project navigation; the command palette finds sessions by ID.
The desktop app copies the current session URL from the Go menu and reports sanitized crash telemetry.
Push notifications route by browser presence: a session open in a tab does not also push.
Project-bound agents get their own cost rollups.
kortix apps access --viewer, and the CLI lints manifest wiring references.
The pi harness loads repository-native Pi configuration and supports config releases.
Each agent's OpenCode plugins load in isolation.
Sign in to OpenCode Go with your OpenCode account from a sign-in card, instead of pasting a key; each provider now has its own key name.
Connector discovery is on by default for every project.
Choose who can use a secret's value: only you, everyone, or chosen people and groups.
Manifest v3: agents boot from kortix.yaml.
Improved
Managed models can write up to 65,536 output tokens; the ChatGPT lineup and provider defaults come from live data.
A session whose sandbox lacks the model a turn asks for is repaired, for any provider.
Audit reconciliation is incremental, which cuts database load.
Session pages prefetch on intent, and a revived stream rehydrates the transcript.
Long managed sessions compact instead of failing at the model's context window; new sessions boot with the current managed context limit.
The session scope view reads the cached repository instead of waiting for a git fetch.
Stop answers within the request deadline and reports stopping while the sandbox finishes shutting down.
Creating a project retries the first push while GitHub finishes creating the repository, instead of rolling back.
Agent config from the base branch reaches a session on reload, even without config releases.
A session restored from an archived sandbox gets up to 12 minutes to wake instead of failing at 8.
Mobile queues prompts in the server inbox, and a turn that ended while the stream was down goes idle.
New users land on the project selector.
Neutral runtime names across the API, SDK and CLI (OpenCode decoupling).
Security
Dependency updates close a critical Next.js vulnerability and eight high-severity ones (axios, undici, fast-uri, js-yaml, brace-expansion, @xmldom/xmldom, path-to-regexp, @grpc/grpc-js).
Fixed
A malformed access request answers 400 instead of 500.
Reminder trigger sessions open themselves, with atomic caps.
App viewer tokens no longer fail with 401 after an access-policy save, and no longer appear in App logs.
Account API keys are refused before session daemon access; the session token acts as the person who starts each turn.
Slack replies to a bound session return to the thread they came from; Slack writes stay inside the calling project's channels and threads; an unavailable model stops before a Slack thread starts.
Listing or sharing connectors, or disconnecting a computer, no longer fails with 500 on a database deadlock.
An agent cannot be switched while its session is running; overlapping turns keep the running state.
A failed secret save keeps the form's contents.
Sessions on a sandbox owned by another API instance refuse prompts instead of racing it.
Agent .md model references resolve through the Kortix provider in gateway mode.
What's Changed
fix(sandbox): agent .md model refs resolve through the kortix provider in gateway mode by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8358
fix(connectors): keep Slack writes out of other projects' channels and threads by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8359
fix(api): refuse prompts and warm sessions for sandboxes another API instance owns by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8354
feat(mobile): render connect links as cards and keep their connected state by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8370
fix(api): lock tunnel rows when attaching computers on connector list (23503) by @markokraemer in https://github.com/kortix-ai/suna/pull/8383
fix(connectors): one key-share lock in the shared computer attach; the share route stops answering 500 by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8396
feat: OpenCode decoupling W3 — kortixd speaks Kortix (neutral wire, one host relay, closed health block, runtime capabilities) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8306
fix(sdk): closing frames no longer count as session activity by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8357
fix(web): drive session loader restarts through the canonical hook (KRTX-456) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8091
fix(web): clarify queued chat delivery states (KRTX-494) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8164
fix(mobile): lighter inline code chip, surface-colored Kortix tile in the connector handshake by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8414
fix(sdk): keep first session stream connected (KRTX-432) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8165
feat(usage): grant project-bound agents their own cost rollups (KRTX-204) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8167
feat(sessions): route push by browser presence (KRTX-588) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8227
fix(web): find sessions by ID in command palette (KRTX-794) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8268
fix(session): prevent switching agents in running sessions (KRTX-805) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8288
feat(desktop): copy the current session URL from the Go menu (KRTX-801) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8307
feat(web): add browser dictation to chat composer (KRTX-830) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8325
feat(web): retain recent session views across project navigation (KRTX-838) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8335
refactor(sdk): add pure workspace search core (KRTX-391) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8344
feat(tests): add Platinum workload benchmark (KRTX-465) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8360
fix(api): reject unregistered runtime agents (KRTX-175) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8361
fix(sandbox): warn on harness MCP declarations (KRTX-182) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8362
docs(daemon): guide config change requests through source checkout (KRTX-173) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8363
test(api): pin source checkout change-request round-trip (KRTX-170) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8365
feat(cli): lint manifest wiring references (KRTX-174) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8367
feat(pi): load repository-native Pi configuration (KRTX-166) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8368
fix(api): detect speculative warm sessions from actual marker (KRTX-177) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8369
perf(api): measure prompt queue delivery latency (KRTX-179) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8371
refactor(web): register session tools at app entry (KRTX-485) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8373
feat(sdk): retain catalog free flag in flattened models (KRTX-453) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8375
refactor(sdk): split IAM client by concern (KRTX-411) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8376
refactor(mobile): register tools at mount points (KRTX-737) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8377
refactor(mobile): extract AutoContinue from composer (KRTX-766) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8378
refactor(mobile): extract drawer row clusters (KRTX-767) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8381
refactor(mobile): split mention search and decisions (KRTX-776) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8384
refactor(web): extract session raw-message explorer (KRTX-730) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8385
docs(cli): connect public docs to live system skills (KRTX-105) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8387
docs(worker): evaluate durable object session runtime (KRTX-183) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8388
refactor(sdk): flatten findSessionAttachments into per-part extractors (KRTX-416) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8389
refactor(sdk): dedupe backend-base URL normalizers onto platformApiBase (KRTX-414) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8390
fix(session): preserve running state across overlapping turns (KRTX-260) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8391
refactor(mobile): split tool renderers and share disclosure state (KRTX-752) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8392
refactor(mobile): delete dead prop modes from CompactionMarker and TurnActions (KRTX-751) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8393
refactor(sdk): dedupe the required-connector canonicalizer into one shared module (KRTX-412) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8394
test(sdk): characterize the retired endpoint shims before removal (KRTX-418) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8395
refactor(sdk): collapse getAccountState and getAccountStateMinimal onto one reader (KRTX-415) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8399
refactor(mobile): delete the redundant morph_edit tool alias (KRTX-740) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8400
test(mobile): pin ToolPartRenderer dispatch with render tests (KRTX-734) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8401
refactor(mobile): dedupe tab history activation in the tab store (KRTX-800) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8402
fix(web): gate project creation on effective permission (KRTX-223) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8404
fix(web): align the segmented tab chip with its tab on every edge by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8419
fix(mobile): a turn that ended while the stream was down goes idle by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8415
fix(web): show OpenCode Go branding in model selector (KRTX-781) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8238
feat(desktop): capture sanitized crash telemetry (KRTX-829) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8326
docs(network): define egress policy gateway design (KRTX-259) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8364
fix(db): repair main after f2cd037a7a — regenerate session_presence_leases after the migrations it predated by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8428
refactor(mobile): import the sdk detectLocalhostUrls in sandbox previews (KRTX-772) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8407
refactor(mobile): one shared close-then slot replaces four sheet copies (KRTX-770) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8408
refactor(mobile): delete the dead activity-step inline row (KRTX-738) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8409
refactor(mobile): move show file-type icons to the tool-icons leaf, delete dead exports (KRTX-743) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8410
refactor(api): slim the secret-relay route sleeve (KRTX-290) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8411
test(session): pin host vs SDK flattenModels drift with characterization tests (KRTX-452) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8412
refactor(mobile): extract the shared composer status pill (KRTX-773) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8413
refactor(web): delete unused presentation renderer helpers (KRTX-596) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8416
refactor(web): reuse preview policy for file classification (KRTX-401) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8418
fix(connectors): classify invalid Linear GraphQL as caller errors (KRTX-678) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8420
fix(sandbox): repair main after b5b080023b — resolve zod in the standalone daemon build; ignore synthetic test tokens in gitleaks by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8432
test(pools): pin warm-session pool semantics before the SDK core move (KRTX-700) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8425
fix(slack): stop unavailable model before starting a thread (KRTX-433) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8417
chore(release): VERSION → 0.13.45 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8440
chore(release): staging VERSION → 0.13.45 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8441
refactor(web): extract file content state from renderer (KRTX-399) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8422
feat(web): redesign the approval, preview and install consent screens by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8421
fix(mobile): move queued prompts to server inbox (KRTX-262) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8372
refactor(web): dedupe the marketing code panels into one shared module (KRTX-590) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8423
Hotfix to staging (v0.13.45): agent .md model refs resolve through the kortix provider by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8438
refactor(api): extract project access read model (KRTX-293) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8424
refactor(api): reuse the GitHub installation GET handler for both routes (KRTX-863) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8427
test(mobile): pin SessionPage scroll, queue and composer behavior (KRTX-757) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8430
refactor(api): move the preview response and header helpers into preview-response.ts (KRTX-328) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8431
test(web): characterize session tool dispatch and child modal (KRTX-484) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8433
fix(api): repair main after 1b179a7 (KRTX-204) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8434
revert: fix(api): reject unregistered runtime agents (KRTX-175) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8435
fix(api): repair main after e6325c2 (KRTX-805) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8436
fix(api): repair main after f2cd037 (KRTX-588) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8437
fix(web): new users land on the project selector, never forced into /new by @markokraemer in https://github.com/kortix-ai/suna/pull/8461
refactor(mobile): extract useProjectStack and useProjectHomeSend from ProjectScreen (KRTX-764) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8439
fix(connectors): support label-only PATCH for connections (KRTX-163) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8443
fix(api): reject out-of-range transcript timestamps (KRTX-461) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8444
chore(web): measure ECS latency before canonical cutover (KRTX-184) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8445
fix(api): gate US sandbox placement on colocated data plane (KRTX-178) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8446
feat(web): re-cut the README showcase from the September captures (KRTX-831) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8447
refactor(billing): share customer compute rate card (KRTX-195) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8450
feat(config): isolate OpenCode plugin entrypoints per agent (KRTX-168) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8452
refactor(api): split access.ts into quota, visibility, identity and access modules (KRTX-301) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8453
fix(workspace): default declared agents to restricted workspace (KRTX-165) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8454
refactor(api): split shared.ts session-open orchestration into focused modules (KRTX-274) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8456
feat(sessions): writable labels + metadata across API, SDK, CLI, MCP and web (KRTX-783) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8249
fix(sessions): a label-filtered flat list returns only labeled sessions (KRTX-783) by @markokraemer in https://github.com/kortix-ai/suna/pull/8469
refactor(web): delete write-only SSH dialog store and its orphaned palette handler (KRTX-723) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8448
docs(learnings): a list filter must gate rows appended after the query by @markokraemer in https://github.com/kortix-ai/suna/pull/8472
fix(api): repair main after ea78f4f (KRTX-204) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8457
fix(sdk): repair main after 42bcc3c (KRTX-452) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8458
fix(api): repair main after c8cfb17 (KRTX-805) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8459
fix(slack): repair main after 4ce44de (KRTX-433) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8460
refactor(api): split sandbox-turn-lifecycle, cut over the legacy activeTurn arm (KRTX-255) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8462
fix(api): log transcript capture SQLSTATE without query parameters (KRTX-747) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8463
fix(api): expose slow resource-grant read stages (KRTX-821) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8464
refactor(web): extract composer render components (KRTX-374) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8465
fix(sdk): identify failed project secret POST transport (KRTX-466) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8467
chore(secrets): per-env OpenCode Zen key in api env profiles by @markokraemer in https://github.com/kortix-ai/suna/pull/8479
fix(api): the session token acts as the person who starts each turn by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8478
feat: OpenCode decoupling W4 — neutral API and SDK names (readiness, contract fields, SDK aliases, DB fields in code, CLI and copy) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8466
fix(sessions): reload brings the base branch agent config into a session without config releases by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8482
fix(db): repair main after 699dadc38a — project_usage_read sorts after the migrations already applied by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8483
fix(api): classify Platinum reaper write throttle as transient (KRTX-345) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8470
fix(connectors): repair main after ada1948 (KRTX-163) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8471
refactor(api): centralize session route binding sleeves (KRTX-277) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8473
fix(api): deny account keys before session daemon access (KRTX-426) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8474
fix(api): retain implicit audit on failed explicit write (KRTX-104) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8476
refactor(mobile): reuse SDK session health probe (KRTX-771) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8480
fix(cli): repair split-manifest wiring fixtures (KRTX-174) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8481
fix(apps): App viewer tokens stop 401ing after an access-policy save, and stop leaking into App logs by @markokraemer in https://github.com/kortix-ai/suna/pull/8486
fix(sessions): the reload's config-dir sync judges only the files base changed by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8487
feat(cli): kortix apps access --viewer; agent skills teach acting as the viewer by @markokraemer in https://github.com/kortix-ai/suna/pull/8488
docs(learnings): regenerate the index (duplicate line from a merge) by @markokraemer in https://github.com/kortix-ai/suna/pull/8489
chore(tools): configure per-agent built-in tool availability (KRTX-169) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8366
refactor(mobile): remove legacy expanded tool bodies (KRTX-735) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8379
refactor(mobile): share connector handoff shell (KRTX-769) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8380
refactor(mobile): extract session delete and compact flows (KRTX-774) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8382
refactor(mobile): split user message parser and share card shell (KRTX-739) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8386
refactor(kortixd): split runtime asset swap reporting (KRTX-530) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8397
refactor(web): type session context providers and parts (KRTX-731) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8403
refactor(mobile): delete the dead chain-of-thought reporting machinery (KRTX-775) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8405
fix(web): preserve secret form after failed save (KRTX-462) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8484
feat(web): split "Connect your computer" modal with beams art, one-click CLI copy by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8491
fix(gateway): long managed sessions compact instead of failing at the context window by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8490
fix(infra): redirect dev web HTTP to HTTPS (KRTX-437) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8494
refactor(mobile): consolidate tool row ambient context (KRTX-736) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8495
chore(api): measure slow runtime chunk reads (KRTX-797) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8496
fix(tests): green main core lane — stale flows, specs, suites and workflow secrets by @markokraemer in https://github.com/kortix-ai/suna/pull/8497
fix(api): green main packages lane for kortix-api unit suite by @markokraemer in https://github.com/kortix-ai/suna/pull/8500
fix: green main — kortixd runtime-assets W3 regression, specs 26 and 27 by @markokraemer in https://github.com/kortix-ai/suna/pull/8499
fix(api): retry managed repo seed push with backoff while the new repo is not reachable over git by @markokraemer in https://github.com/kortix-ai/suna/pull/8501
fix(api): answer Stop inside the request deadline with a truthful 'stopping' state by @markokraemer in https://github.com/kortix-ai/suna/pull/8502
feat(pi): config releases on the pi harness by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8451
fix(sandbox): new sessions boot OpenCode with the current managed context limit by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8505
refactor(web): move turn rendering out of session-chat.tsx (KRTX-355) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8492
fix(infra): drop the dev web HTTP listener — Drata 8008 blocks staging (reverts #8494) by @markokraemer in https://github.com/kortix-ai/suna/pull/8506
fix(tests): stat the CLI through a handle in runtime-assets test (CodeQL js/file-system-race) by @markokraemer in https://github.com/kortix-ai/suna/pull/8507
Promote main 79159fba39 to staging (v0.13.45) by @markokraemer in https://github.com/kortix-ai/suna/pull/8503
fix(mobile): green the mobile test lane (queue, health, tool registration, light tokens) by @markokraemer in https://github.com/kortix-ai/suna/pull/8508
fix(deps): clear Trivy HIGH/CRITICAL CVEs blocking staging promotion by @markokraemer in https://github.com/kortix-ai/suna/pull/8509
feat(manifest): declare non-enforcing agent egress policy (KRTX-878) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8510
Promote main 9d8b8245d1 to staging (v0.13.45) by @markokraemer in https://github.com/kortix-ai/suna/pull/8512
refactor(web): extract warm-or-create session job (KRTX-704) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8504
chore(secrets): drop AWS_IAM_USER_ARN for deleted dotenv IAM users by @markokraemer in https://github.com/kortix-ai/suna/pull/8514
fix(web): ignore anonymous auth refresh noise (KRTX-876) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8485
fix(web): green the web unit suite (32 failures) by @markokraemer in https://github.com/kortix-ai/suna/pull/8515
fix(api): attribute session config deadline stages (KRTX-818) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8511
fix(api): time slow secrets reads by dependency stage (KRTX-819) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8516
fix(api): attribute sandbox proxy failures in logs (KRTX-811) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8517
fix(api): allow slow archived restores to finish (KRTX-440) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8518
feat(connectors): enable direct discovery by default (KRTX-885) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8519
feat(llm): Sign in with OpenCode for OpenCode Go; one key name per provider by @markokraemer in https://github.com/kortix-ai/suna/pull/8520
fix(tunnel): unpair locks connector rows before the machine row (40P01) by @markokraemer in https://github.com/kortix-ai/suna/pull/8524
fix(web): golden case for the anonymous auth refresh noise rule (#8485) by @markokraemer in https://github.com/kortix-ai/suna/pull/8525
fix(slack): route bound session replies to originating thread (KRTX-886) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8522
fix(api): serve GET session scope from the warm git mirror by @markokraemer in https://github.com/kortix-ai/suna/pull/8527
fix(web): keep shared session avatars legible (KRTX-888) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8526
Promote main ad46bf44b4 to staging (v0.13.45) by @markokraemer in https://github.com/kortix-ai/suna/pull/8523
fix(web): align session sidebar pagination control (KRTX-890) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8528
revert(web): remove composer dictation (KRTX-830) by @markokraemer in https://github.com/kortix-ai/suna/pull/8530
fix(web): show saved profile name in account menu (KRTX-893) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8529
revert(web): remove composer dictation (KRTX-830) → staging by @markokraemer in https://github.com/kortix-ai/suna/pull/8531
Promote main bf78fe8895 to staging (v0.13.45) by @markokraemer in https://github.com/kortix-ai/suna/pull/8532
feat(secrets): who can use a secret value — only you, everyone, or people and groups by @markokraemer in https://github.com/kortix-ai/suna/pull/8533
fix(gateway): send OpenCode Zen a strict OpenAI chat body by @markokraemer in https://github.com/kortix-ai/suna/pull/8534
feat(web): OpenCode Go sign-in card like ChatGPT's by @markokraemer in https://github.com/kortix-ai/suna/pull/8535
fix(reminders): trigger sessions open themselves, atomic caps, 366d horizon by @markokraemer in https://github.com/kortix-ai/suna/pull/8536
docs(learnings): apply merged dev Terraform deletions by hand the same hour by @markokraemer in https://github.com/kortix-ai/suna/pull/8537
fix(api): request-access answers 400, not 500, for a body it could not parse by @markokraemer in https://github.com/kortix-ai/suna/pull/8538
fix(secrets): a pre-on_behalf_of session token resolves by the mint rule by @markokraemer in https://github.com/kortix-ai/suna/pull/8539
fix(web): prefetch session destinations on intent (KRTX-779) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8233
fix(sdk): rehydrate transcript after parked stream revival (KRTX-832) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8327
feat(config): boot v3 agents from kortix.yaml (KRTX-167) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8406
fix(models): serve the ChatGPT lineup and provider defaults from live data by @markokraemer in https://github.com/kortix-ai/suna/pull/8541
fix(api): OpenCode sign-in polls at the provider's interval by @markokraemer in https://github.com/kortix-ai/suna/pull/8543
fix(models): let managed models write 65,536 output tokens by @markokraemer in https://github.com/kortix-ai/suna/pull/8542
revert: declared agents keep the project checkout by default (#8454) by @markokraemer in https://github.com/kortix-ai/suna/pull/8548
perf(audit): incremental reconciliation with a per-account high-water mark by @markokraemer in https://github.com/kortix-ai/suna/pull/8547
fix(api): repair main after 510b569 (KRTX-167) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8545
fix(tests): unused @ts-expect-error on AgentBlockV2.mode after #8406 (TS2578) by @markokraemer in https://github.com/kortix-ai/suna/pull/8552
refactor(web): extract sidebar menu primitives (KRTX-651) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8155
fix(sessions): repair a box that lacks the model a turn asks for, any provider by @markokraemer in https://github.com/kortix-ai/suna/pull/8554
fix(tests): far-future expiry in the connector link info fixture by @markokraemer in https://github.com/kortix-ai/suna/pull/8555
Promote main a00772e042 to staging (v0.13.45) by @markokraemer in https://github.com/kortix-ai/suna/pull/8549
v0.13.45 — Session labels, a redesigned approval flow, and long sessions that compact instead of failing. by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8455
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.44...v0.13.45
Read the full release on GitHub →
v0.13.44 September 30, 2026 Computers work like every connector, and the audit trail records the credential that made each call.
New
Computers are connector accounts like any other: the same row, the same Share dialog (people, groups or everyone), and one registration per machine.
The audit trail shows Via for each event: the credential the API authenticated (browser session, personal access token, connected app, session token, API key, service account or SCIM token), never a self-reported client label.
Fixed
Slack and Teams connector reads stay inside the calling project's own conversations.
Stopping a session no longer fails with a database deadlock when a wake runs at the same moment.
A malformed member id returns 400 instead of 500.
A stopped session box stays stopped: auto-resume is turned off before the stop, not after.
A transient git failure while saving a project's manifest returns a retryable 503 and no longer exposes the repository URL.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.43...v0.13.44
Release on GitHub →
v0.13.43 September 30, 2026 Every kortix CLI command over MCP, connectors as MCP tools, and US-region sessions.
New
The hosted MCP server reaches full kortix CLI parity through a sandboxed kortix tool, and serves project skills.
Connectors are first-class MCP tools.
Projects can run their sessions in the US East region.
A GDPR-complete privacy policy and a public subprocessors page at /legal/subprocessors.
Improved
GLM 5.3 Flash is served from OpenCode Zen first, with the OpenRouter pool as fallback.
Slack channels have defaults, and Teams and Slack permissions cover roles, identity links, join policies, and the bot's own scope.
MCP OAuth refresh tokens get a grace period, a sweeper, and code-reuse revocation. Reads after a push return fresh data.
Fixed
A session that was open across a deploy keeps accepting prompts. A runtime restart no longer ends a turn it already accepted, and every turn end reaches the API.
A live session no longer goes to sleep after a short network interruption.
A session whose sandbox lost its OpenCode root pin resumes the right conversation.
A pi model that stops responding ends with a visible timeout.
Deleting a user revokes their API tokens, OAuth tokens, and pending authorization codes.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.42...v0.13.43
Release on GitHub →
v0.13.42 September 29, 2026 Connect your own computer from the desktop app, Teams at Slack parity, and saved history that is always on.
New
Local mode: connect your computer from the desktop app. Each computer is a connector account with access approval, and the tunnel keeps running in the background while the app is closed.
Microsoft Teams reaches Slack parity: direct messages, a connected note, a home tab, message actions, edit and delete, /unbind, /status buttons, /sessions, the full agent picker, review cards, and call-to-action links as buttons.
Saved session history is always on, and a reload shows the newer saved copy.
Mobile: an empty session opens on its composer, messages queue while the computer wakes, and sub-agents show their saved steps.
A redesigned Create a project page. New accounts get their name during onboarding, not from the email address.
Sessions list as a tree that shows who started each run, with server-side search.
Copy a session ID or link from the session menu.
Improved
The desktop app reopens your last project on launch, the same as the web.
Connect-computer approval is a dialog you can close.
A ChatGPT login the provider refuses is refreshed, and the message says who can reconnect it.
Session overrides open while their catalog loads; Save commits what is ready.
An agent-created session saves its transcript at every turn end.
Audit ingest answers within the request deadline.
Transcript reads and gateway resolution do less work per request.
MCP list_projects returns the caller's project role.
Fixed
Prompt attachment imports keep the sender's access.
Computer access and machine states return 4xx errors, not 500.
Repository previews in channels show only public repositories.
The Composio Microsoft Teams app is hidden; Teams is a native channel.
The public health endpoint no longer exposes internal deployment details.
A malformed preview cookie is refused, and playground budget denials are typed.
What's Changed
fix(api): preserve transient git cause through grant remint (KRTX-215) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8161
fix(api): return typed playground budget denial (KRTX-214) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8163
fix(api): refuse malformed preview cookie (KRTX-332) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8166
feat(local-mode): connect your computer from the desktop app — accounts, access approval, forever-on tunnel by @markokraemer in https://github.com/kortix-ai/suna/pull/8168
fix(connectors): computer access and machine states are 4xx, not 500 by @markokraemer in https://github.com/kortix-ai/suna/pull/8169
fix(ci): green main after local mode (desktop smoke bun, schema index test) by @markokraemer in https://github.com/kortix-ai/suna/pull/8170
docs(learnings): relay close codes, build-tool deps; enforce bun in desktop build jobs by @markokraemer in https://github.com/kortix-ai/suna/pull/8171
chore(release): staging VERSION → 0.13.42 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8173
chore(release): VERSION → 0.13.42 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8174
refactor(web): collapse the six toast factories onto one render helper (KRTX-661) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8126
refactor(web): delete unused InputGroupText and InputGroupTextarea (KRTX-663) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8149
refactor(web): delete the unused LazyModal from modal.tsx (KRTX-659) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8132
refactor(api): extract relay stream helpers (KRTX-288) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8175
fix(sessions): an agent-created session saves its transcript at every turn end by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8177
fix(connectors): hide the Composio Microsoft Teams app; Teams is a native channel by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8176
feat(teams): show call-to-action links as buttons in answer cards by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8178
Promote main 1465473e7c (fully green) to staging by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8180
docs(repo): add the canonical design-reference table to agent files (KRTX-73) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8181
fix(gateway): refresh a ChatGPT login the provider refuses, and say who reconnects it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8182
feat(mobile): empty sessions open on the composer, messages queue while the computer wakes, sub-agents paint saved steps by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7982
feat(teams): Slack-parity cards — /status buttons, /sessions, full agent picker, review kinds by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8185
fix(api): key-reconcile finds supervised daemon; start warn deduped (KRTX-696) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8183
refactor(api): extract relay hop loop and response builder (KRTX-289) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8184
fix(web): session overrides open while their catalog loads; Save commits what is ready by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8179
fix(api): stop counting the parked-sandbox 503 as route 5xx (KRTX-397) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8186
refactor(api): split the CLI agent-token e2e into harness and matrix modules (KRTX-351) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8187
feat(teams): close the remaining Slack gaps — DMs, connected note, home, message action, edit/delete, /unbind by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8191
feat(sessions): saved history is always on, and a reload shows the newer saved copy by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8189
fix(web): label and translate the 3 audit routes main added without them by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8193
refactor(api): split index.ts into app assembly, error handlers, bootstrap and dispatch modules (KRTX-347) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8188
Promote main 19b2c150f0 to staging by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8194
fix(channels): show repo previews only for public repos, and name Kortix-hosted repos plainly by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8199
fix(mcp): list_projects returns the caller's project role by @markokraemer in https://github.com/kortix-ai/suna/pull/8205
test(web): pin session context modal metric math behind characterization tests (KRTX-406) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8190
refactor(web): split pty-terminal's attach lifecycle into a connection hook (KRTX-460) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8196
config-releases: remove the CONFIG_RELEASES_ENABLED env switch; the project flag is the only gate by @markokraemer in https://github.com/kortix-ai/suna/pull/7780
fix(api): race each audit-ingest chunk against the request deadline (KRTX-522) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8198
refactor(web): split session-layout panel sizing and header switcher out (KRTX-459) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8200
fix(api): one warn line per mid-turn stop episode, not one per reaper pass (KRTX-474) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8201
refactor(web): flatten discoverPrefixViaFileApi cache merge into rememberPrefix (KRTX-480) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8202
refactor(shared): add the shared html-text and safe-url modules (KRTX-367) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8203
fix(web): never mark the workspace refresh skipped on reload (KRTX-698) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8204
fix(api): attribute provider ingress time and log the proxy give-up timeline (KRTX-471) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8206
chore(mobile): release 1.4.2 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8209
refactor(web): delete dead audit-poll hooks in session-audit-shared (KRTX-481) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8208
feat(api): log the Server-Timing stage breakdown on the slow and failed tail (KRTX-468) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8195
fix(api): one bounded sandbox endpoint resolution per transcript read (KRTX-386) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8212
refactor(web): remove dead model connection gate (KRTX-482) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8215
test(api): cover slow-request timing completion logs (KRTX-532) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8211
perf(api): avoid duplicate project lookup in gateway resolution (KRTX-586) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8216
refactor(shared): switch web and mobile to shared sanitizer (KRTX-368) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8217
refactor(web): extract instant-session send orchestration (KRTX-458) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8218
chore(sandbox): attribute slow daemon requests (KRTX-472) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8220
fix(api): hide deployment metadata from public health (KRTX-732) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8221
fix(api): bound project reads during audit contention (KRTX-470) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8222
refactor(web): isolate auto-scroll physics (KRTX-706) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8223
refactor(web): remove unused delete-operation store (KRTX-708) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8224
refactor(web): isolate session token metrics (KRTX-728) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8225
feat(web): show a subsession's parent as a header breadcrumb by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8207
refactor(web): remove unused account settings modal state (KRTX-719) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8226
refactor(shared): add tool registry lookup resolver (KRTX-748) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8228
fix(api): normalize prompt attachment MIME metadata (KRTX-778) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8229
fix(api): validate required headless auth bodies (KRTX-741) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8230
refactor(web): remove unused legacy status hooks (KRTX-713) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8232
fix(web): add Back button to the Review Center detail page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8250
fix(api): retry transient provider stops (KRTX-520) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8219
refactor(web): remove unused connector hook and duplicate steps (KRTX-709) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8234
refactor(tools): share host registry lookup (KRTX-750) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8235
refactor(web): remove unused phone factor hooks (KRTX-724) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8236
test(mobile): pin project screen connect and stack behavior (KRTX-762) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8239
fix(edge): hide backend routing headers (KRTX-780) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8240
fix(mobile): model pick persistence, native text selection, release 1.4.3 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8244
refactor(web): remove dead billing exports and deduplicate mutations (KRTX-710) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8241
refactor(web): isolate sub-session context aggregation (KRTX-729) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8242
refactor(web): collapse panel state patches (KRTX-712) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8245
fix(web): repair main after 20e6b14 (KRTX-732) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8247
refactor(web): split burst row renderers and share trigger chrome (KRTX-380) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8248
fix(mcp): harden the hosted MCP server end to end — security, OAuth, protocol, tools, docs by @markokraemer in https://github.com/kortix-ai/suna/pull/8251
fix(api): repair main after 58555ae (KRTX-470) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8255
Harness-agnostic project layout: agents/, skills/, memory/, harnesses/opencode/ + agents..file by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7681
fix(sdk): poll /start no faster than the server can make progress (KRTX-385) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8197
fix(gateway): OpenCode Go works end to end; BYOK providers show their real name and logo by @markokraemer in https://github.com/kortix-ai/suna/pull/8261
feat(sessions): record who started each run; list sessions as a tree with server-side search (KRTX-639) by @markokraemer in https://github.com/kortix-ai/suna/pull/8258
fix(web): consent page names the real error; learnings: connected apps never mint durable credentials by @markokraemer in https://github.com/kortix-ai/suna/pull/8262
refactor(mobile): extract project session connect hook (KRTX-763) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8260
fix(web): pluralize the spawned-sessions toggle label (KRTX-639 follow-up) by @markokraemer in https://github.com/kortix-ai/suna/pull/8266
fix(web): repair main after a51d9be (KRTX-458) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8254
fix(api): repair main after 0a62a6b (KRTX-778) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8264
fix(api): answer prompts released after Stop in one turn by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8231
fix(web): repair main after b2b14ee (KRTX-368) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8252
refactor(web): delete dead admin barrel, stress-test hook and orphan shims (KRTX-707) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8257
refactor(web): delete dead billing hooks (KRTX-711) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8263
fix(pi): OpenCode decoupling W1 — pi enforces permission, write rule and skills grant; shell env, default agent, gateway gate, email tools, approval push by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8027
test(web): reconcile send assertions with main (KRTX-472) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8256
fix(api): repair main after 111927b (KRTX-470) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8267
refactor(web): replace composer-editor ref mirrors with one useLatestRef hook (KRTX-381) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8269
fix(api): repair main after cc8d4fe (KRTX-763) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8270
fix(runtime): never relaunch a box under a live turn; stop OpenCode retrying provider 4xx by @markokraemer in https://github.com/kortix-ai/suna/pull/8273
fix(api): avoid warning on vanished transcript files (KRTX-798) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8271
refactor(web): delete unimported subscription compat hooks (KRTX-714) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8274
fix(platinum): only Kortix wakes a session box; a dead daemon is relaunched, never parked by @markokraemer in https://github.com/kortix-ai/suna/pull/8277
feat(web): copy session ID and link from the session menu (KRTX-801) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8281
refactor(web): delete dead withRestrictionCheck wrapper and alias export (KRTX-725) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8275
fix(api): repair main after 7e1bbfc (KRTX-368) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8280
refactor(web): consolidate scoped session filter selectors and toggles (KRTX-715) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8282
fix(api): repair main after 5203c66 (KRTX-707) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8283
fix(api): repair main after fbb00f4 (KRTX-711) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8284
refactor: OpenCode decoupling W2 — delete dead routes, hooks, aliases and renderers (C1–C7) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8021
feat(web): redesign /new and name new accounts at onboarding (KRTX-638) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8286
refactor(web): consolidate preference setters (KRTX-718) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8285
fix(tests): green main for the v0.13.42 promotion (artifact default_agent, MCP job shell, mobile --isolate) by @markokraemer in https://github.com/kortix-ai/suna/pull/8278
fix(desktop): reopen the last project on launch, same as web by @markokraemer in https://github.com/kortix-ai/suna/pull/8290
fix(api): retain principal access for prompt attachment imports (KRTX-806) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8289
fix(desktop): make the connect-computer approval a closable dialog by @markokraemer in https://github.com/kortix-ai/suna/pull/8293
refactor(web): delete dead useLeadingDebouncedCallback and unused barrel re-exports (KRTX-720) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8295
refactor(web): delete dead presentation viewer compat hooks (KRTX-722) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8296
fix: green main for the v0.13.42 promotion (opencode_archive contract, /new Log out tests, design-system i18n) by @markokraemer in https://github.com/kortix-ai/suna/pull/8292
Promote main 601cb9b5fd to staging (v0.13.42) by @markokraemer in https://github.com/kortix-ai/suna/pull/8297
v0.13.42 — Connect your own computer from the desktop app, Teams at Slack parity, and saved history that is always on. by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8300
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.41...v0.13.42
Read the full release on GitHub →
v0.13.41 September 29, 2026 Kortix as an MCP server, Codex CLI support, reminders, approvals you can answer, and sessions that repair themselves instead of stopping.
New
One account-level MCP server at /v1/mcp, bound to your token like the CLI. It exposes sandbox shell and files, skills, and the session list; long commands run as jobs, and connected apps can be listed and revoked. kortix mcp runs the whole CLI as an MCP server, and a Connect MCP menu sets it up.
The LLM gateway accepts the OpenAI Responses API, so the Codex CLI works against Kortix.
Reminders: schedule prompts into a session, with a Reminders view and a per-project flag.
Approvals: the agent describes each gated call, the approver can reply, and approval cards reach Slack and Teams.
New projects get a three-step onboarding and a first chat.
GitHub projects can be created under personal GitHub accounts, and their sessions start.
Sandbox templates can run Docker inside the sandbox.
Agents can store secrets they already have, and long setup links load.
ChatGPT accounts show when they need reconnection, and a failed ChatGPT turn offers Reconnect or Connect ChatGPT.
Saved session history is 1:1 with the live session and on by default, including sub-agents.
The mobile app signs in to self-hosted Kortix instances.
Slack: a session's Slack thread is bound automatically so replies come back to it, and the agent can remove its own reactions.
The CLI saves large connector results as JSON (--out, and MCP results above 16 KB).
Improved
A project's fallback model chain runs when a model is unavailable, when a ChatGPT plan or BYOK model fails, and when every pooled account is paused or needs reconnection.
The LLM gateway bounds requests per credential.
DeepSeek and GLM accept images and a thinking control; model hosting is named accurately.
Session connection and run status are accurate across web, mobile and the SDK, without flapping.
A session is never parked while its runtime repair is still running, and its model converges when it opens.
Sessions move off retired managed models automatically, and the error names the cause.
Sharing a session switches it to the project's keys instead of stranding it.
Sandbox images carry every runtime asset, and updates move only the chunks that changed.
Audit events are ingested and reconciled without blocking requests or scanning whole tables.
Sandbox health polls and connector listings answer faster.
Fixed
Every prompt file reaches the computer.
Every agent picker lists the project's own agent roster.
Connector toolkit search returns the same page shape as the unsearched list.
A dead credential gets a typed 401, so retrying clients stop.
The Firecrawl proxy rejects private and metadata URLs.
Values can be copied out of the XLSX and CSV viewers.
A pinned runtime that still serves no longer refuses its session.
Old saved tool calls show what they kept; an empty session opens on its composer.
A stopped session wakes without needing a message.
GET /kortix/part in the sandbox requires the same credential as its sibling routes.
Teams: the bot token is sent only to stored service URLs, and the sign-in link appears only in one-to-one chats.
What's Changed
feat(slack): auto-bind a session's Slack thread so replies come back to it by @markokraemer in https://github.com/kortix-ai/suna/pull/7869
chore: repo-wide dead code, asset, and dependency cleanup by @markokraemer in https://github.com/kortix-ai/suna/pull/7867
docs(repo): self-merge to main when verified; release gates keep explicit approval by @markokraemer in https://github.com/kortix-ai/suna/pull/7873
chore: repo cleanup follow-ups — stale paths, orphan tests, executor-sdk by @markokraemer in https://github.com/kortix-ai/suna/pull/7876
feat(cli,web): kortix mcp — the whole CLI as an MCP server + Connect MCP menu by @markokraemer in https://github.com/kortix-ai/suna/pull/7875
feat(slack): agent can remove its own reactions — slack unreact by @markokraemer in https://github.com/kortix-ai/suna/pull/7878
feat(contributing): script a preview demo account into managed-model access by @markokraemer in https://github.com/kortix-ai/suna/pull/7879
chore(release): VERSION → 0.13.41 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7883
fix(sandbox): gate GET /kortix/part with the same credential check as its siblings by @markokraemer in https://github.com/kortix-ai/suna/pull/7865
chore(release): staging VERSION → 0.13.41 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7884
feat(llm-gateway): OpenAI Responses API ingress — Codex CLI support by @markokraemer in https://github.com/kortix-ai/suna/pull/7880
fix(reaper): close row↔VM divergence in every direction, for every box by @markokraemer in https://github.com/kortix-ai/suna/pull/7861
feat(mcp): hosted MCP server with OAuth sign-in, behind the per-project mcp flag by @markokraemer in https://github.com/kortix-ai/suna/pull/7881
fix(contributing): preview-subscribe refuses live Stripe keys by @markokraemer in https://github.com/kortix-ai/suna/pull/7885
ci: stop a superseded preview suite; two browser workers per shard by @markokraemer in https://github.com/kortix-ai/suna/pull/7886
fix(worktree): skip the Apps runtime build when go is not installed by @markokraemer in https://github.com/kortix-ai/suna/pull/7898
feat(cli): save large connector results as JSON (call --out, MCP spill above 16 KB) by @markokraemer in https://github.com/kortix-ai/suna/pull/7887
fix(preview): admit suites on pool and GitHub capacity, stop idle hosts, report only this run by @markokraemer in https://github.com/kortix-ai/suna/pull/7909
fix(sandbox): bake every runtime asset into the image, and move only the chunks that changed by @markokraemer in https://github.com/kortix-ai/suna/pull/7877
docs(learnings): bound agent tool output that grows with upstream data by @markokraemer in https://github.com/kortix-ai/suna/pull/7917
fix(preview): pull immutable images only when missing, wait out Docker Hub limits; GitHub admission at 100/h by @markokraemer in https://github.com/kortix-ai/suna/pull/7931
ci(preview): the label deploys and never tests; a superseded run never deploys by @markokraemer in https://github.com/kortix-ai/suna/pull/7892
fix(preview): stop preview hosts after 1 h idle, not 3 h by @markokraemer in https://github.com/kortix-ai/suna/pull/7951
fix(runtime-convergence): admission refusal replaces the box, never parks it by @markokraemer in https://github.com/kortix-ai/suna/pull/7905
fix(preview): create preview hosts with 8 GB, not 16 GB by @markokraemer in https://github.com/kortix-ai/suna/pull/7955
fix(sessions): never park a session while its repair is still running by @markokraemer in https://github.com/kortix-ai/suna/pull/7954
fix(llm-gateway): re-point sessions off retired managed models, name the cause by @markokraemer in https://github.com/kortix-ai/suna/pull/7953
fix(sessions): sharing a session switches it to the project's keys, never strands it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7657
feat(sessions): saved history is 1:1 and on by default, sub-agents included by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7853
fix(web): a share refreshes the session's provider key panel by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7958
feat(providers): ChatGPT accounts show when they need reconnection by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7658
fix(sessions): stop parking a session mid-repair, and converge its model on open by @markokraemer in https://github.com/kortix-ai/suna/pull/7957
fix(sessions): a re-pointed model pin has to travel on the prompt by @markokraemer in https://github.com/kortix-ai/suna/pull/7959
fix(sessions): a PINNED runtime that still serves must not refuse its session by @markokraemer in https://github.com/kortix-ai/suna/pull/7961
feat(sessions): failed ChatGPT turns offer Reconnect or Connect ChatGPT by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7651
fix(sessions): old saved tool calls show what they kept; an empty session opens on its composer by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7960
fix(sessions): unreachable must say WHICH of its five failures happened by @markokraemer in https://github.com/kortix-ai/suna/pull/7962
fix(teams): bot token only to stored service URLs; sign-in link only in one-to-one chats by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7963
Promote main 267e2d7a34 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/7967
fix(sessions): every prompt file reaches the computer by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7966
fix(channels): a failed session start closes its own platform's card, never another's by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7965
fix(mobile): restore inline transcript link taps (KRTX-562) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7850
fix(sessions): stamp the unreachable cause on the row, not only in a log by @markokraemer in https://github.com/kortix-ai/suna/pull/7968
fix(worktree): refuse a commit on a foreign branch in a pnpm worktree by @markokraemer in https://github.com/kortix-ai/suna/pull/7973
fix(review): remove risk labels from the Review Center by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7978
fix(llm-gateway): a project's fallback chain runs when a ChatGPT plan or BYOK model fails by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7979
fix(sessions): record WHO answered an unreachable, not just the status code by @markokraemer in https://github.com/kortix-ai/suna/pull/7974
fix(web): copy values out of the XLSX and CSV viewers by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7977
fix(sessions): nest sub-agent sessions under a coordinator on an older page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7975
refactor(kortixd): layer src into app, routes, services and lib, with enforced import boundaries by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7856
fix(web): ChatGPT sign-in dialogs show a finishing state instead of an idle Reconnect button by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7980
fix(sdk): wake stopped session without a message (KRTX-570) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7855
fix(web): keep the viewer copy shortcut out of the hardcoded-text audit by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7985
fix(preview): capture preview templates at the host's 8 GB by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7971
fix(runtime-convergence): admission is always enforced; repair before replace by @markokraemer in https://github.com/kortix-ai/suna/pull/7987
ci: a pull request into main runs nothing; the dev box is the pre-merge gate by @markokraemer in https://github.com/kortix-ai/suna/pull/7995
fix(gateway): a non-streaming ChatGPT failure keeps its HTTP status by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7984
feat(mcp): sandbox shell and files, skills, session list; audit as mcp by @markokraemer in https://github.com/kortix-ai/suna/pull/7994
fix(sdk,web,mobile): accurate session connection and run status, no flapping by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7976
fix(gateway): run the project's chain when every account is paused or needs reconnection, after the wallet gate by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7983
release(v0.13.41): ChatGPT-plan fallback fixes (#7979, #7983, #7984) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7996
fix(mobile): hide OpenCode built-ins in agent picker (KRTX-604) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7888
fix(sdk): verify final transcript after in-flight poll (KRTX-450) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7894
fix(web): show parked computer as asleep (KRTX-191) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7895
refactor(api): simplify secret consumer and delivery mapping (KRTX-220) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7896
test(api): pin route-binding envelopes (KRTX-276) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7900
test(api): pin relay framing and refusal envelopes (KRTX-287) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7901
refactor(api): split hosted connection connect phases (KRTX-294) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7903
refactor(api): flatten queued continue delivery phases (KRTX-258) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7904
refactor(api): isolate template runtime fingerprinting (KRTX-313) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7907
refactor(llm-gateway): split AI SDK request modules (KRTX-341) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7910
refactor(web): remove unreachable sub-agent copies (KRTX-371) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7911
refactor(api): split GitHub integration by responsibility (KRTX-318) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7912
refactor(web): share provider pool editor shell (KRTX-360) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7913
fix(sdk): ignore replayed final response chunks (KRTX-493) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7915
refactor(web): share transcript export option rows (KRTX-359) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7916
refactor(api): split trigger responsibilities (KRTX-298) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7920
refactor(web): flatten session override rows (KRTX-361) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7921
refactor(sdk): normalize tool card aliases (KRTX-490) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7922
refactor(sdk): deduplicate web search source mapping (KRTX-491) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7923
refactor(sdk): isolate hydration part reconciliation (KRTX-511) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7927
refactor(web): share show action toolbar (KRTX-370) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7928
refactor(api): split snapshot ledger and archive publisher (KRTX-305) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7930
refactor(api): split auth principal resolvers (KRTX-349) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7933
refactor(api): split prompt attachment lifecycle modules (KRTX-323) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7939
refactor(api): split snapshot builder concerns (KRTX-311) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7942
refactor(api): break sandbox provider registry cycle (KRTX-553) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7943
refactor(api): split custom role policy routes (KRTX-547) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7944
refactor(api): dispatch create session idempotency conflicts (KRTX-268) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7948
fix(connectors): preserve account when chat link finalize retries (KRTX-438) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7950
feat(onboarding): open new projects on a first chat instead of auto-sending by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7337
revert(runtime-convergence): always-on admission regressed the sweep 8 PASS -> 1 by @markokraemer in https://github.com/kortix-ai/suna/pull/7998
ci: test and preview are one-shot explicit opt-ins; a red main names its suspects by @markokraemer in https://github.com/kortix-ai/suna/pull/7997
feat(mcp): one account-level MCP server at /v1/mcp, bound to the token like the CLI by @markokraemer in https://github.com/kortix-ai/suna/pull/7999
chore(deps): bump bridgecrewio/checkov-action from 12.3119.0 to 12.3125.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7989
chore(deps): bump github/codeql-action from 4.38.1 to 4.38.2 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7990
chore(deps): bump terraform-linters/setup-tflint from 6.3.0 to 6.3.1 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7992
chore(deps): bump github/codeql-action/upload-sarif from 4.38.1 to 4.38.2 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7993
fix(api): warn once per unreadable turn episode (KRTX-544) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7940
fix(api): sign manual stop transcript capture as stopper (KRTX-427) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7929
fix(api): explain personal GitHub App repository creation refusal (KRTX-232) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7918
feat(desktop): hide developer Frontend URL presets in production builds (KRTX-48) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7782
fix(api): classify manifest push policy rejection (KRTX-518) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7819
test(session): pin host HTML sanitizer outputs (KRTX-366) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7908
refactor(api): isolate control snapshot readers (KRTX-219) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7890
refactor(web): remove unused provider display helpers (KRTX-569) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7938
feat(sandbox): container_runtime templates run Docker with bridge + overlay by @markokraemer in https://github.com/kortix-ai/suna/pull/8001
refactor(api): dedupe runtime wake cleanup updates (KRTX-267) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7897
refactor(api): split gateway candidate resolution (KRTX-343) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7914
refactor(api): share token last-used throttle (KRTX-306) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7902
test(web): characterize session chat shell (KRTX-354) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7937
refactor(api): split lifecycle command store (KRTX-256) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7899
refactor(api): split member and invitation registration (KRTX-546) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7946
refactor(api): isolate Platinum discovery and uploads (KRTX-314) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7906
refactor(api): split public App proxy policies (KRTX-561) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7945
refactor(sandbox): flatten OpenCode asset guards (KRTX-515) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7925
refactor(llm-gateway): split server and share request admission (KRTX-344) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7926
fix(projects): refuse new-repo create under a personal GitHub account by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7445
docs(llm-gateway): restore request-path rationale dropped by the server split by @markokraemer in https://github.com/kortix-ai/suna/pull/8003
ci(preview): the preview label deploys only (~7 min); only a dispatch runs --target-full by @markokraemer in https://github.com/kortix-ai/suna/pull/8004
fix(sessions): the box owns its identity key — reconcile the row to it by @markokraemer in https://github.com/kortix-ai/suna/pull/8000
refactor(api): split session creation modules (KRTX-222) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7936
refactor(web): split tool infrastructure by concern (KRTX-369) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7932
feat(mcp,oauth): long commands as jobs; connected apps list and revoke by @markokraemer in https://github.com/kortix-ai/suna/pull/8006
fix(sdk): every agent picker reads the Kortix project roster by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8007
fix(audit): index account_id on the two reconciliation source tables; bound the reconciliation retry loop by @markokraemer in https://github.com/kortix-ai/suna/pull/7970
Promote main 278a24c633 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/8008
feat(secrets): agents store secrets they already have; long setup links load by @markokraemer in https://github.com/kortix-ai/suna/pull/8009
fix(db): move the GitHub-installation migrations after the newest merged migration by @markokraemer in https://github.com/kortix-ai/suna/pull/8010
fix(mobile): SDK composer lists, self-hosted sign-in, loader, md PDF by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7981
fix(deps): raise .deepsec overrides past 17 Trivy findings by @markokraemer in https://github.com/kortix-ai/suna/pull/8011
fix(tests): green Tests on main — catalog order, monitor drop accounting, lifecycle races, CAS 409, revenuecat DB leak by @markokraemer in https://github.com/kortix-ai/suna/pull/8005
fix(tests): the e2e env reader skips dotenvx ciphertext (every browser journey red since #7981) by @markokraemer in https://github.com/kortix-ai/suna/pull/8013
fix(api): copy the SDK from deps so its llm-catalog import resolves in the image by @markokraemer in https://github.com/kortix-ai/suna/pull/8014
docs(learnings): a committed env value is ciphertext; helpers treat it as absent by @markokraemer in https://github.com/kortix-ai/suna/pull/8015
fix(sandbox): the secret-capabilities prompt tells agents to store a pasted value by @markokraemer in https://github.com/kortix-ai/suna/pull/8016
docs(learnings): runtime workspace imports need the deps-stage copy in the API image by @markokraemer in https://github.com/kortix-ai/suna/pull/8017
OpenCode decoupling W0: per-harness session flows, OpenCode-name lint ratchet, shared host health by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8002
fix(deploy): an ECS rollout succeeds only on the revision it registered by @markokraemer in https://github.com/kortix-ai/suna/pull/8018
feat(reminders): session reminders — scheduled prompts into one session by @markokraemer in https://github.com/kortix-ai/suna/pull/8020
feat(approvals): agent describes gated calls; approver can reply; resume keeps the session's model by @markokraemer in https://github.com/kortix-ai/suna/pull/8019
fix(models): name the US provider, not OpenRouter; restore ZDR/US line by @markokraemer in https://github.com/kortix-ai/suna/pull/8022
feat(web): launch film as code + /launch page by @markokraemer in https://github.com/kortix-ai/suna/pull/8023
docs(learnings): round a feed price before comparing it to a cap by @markokraemer in https://github.com/kortix-ai/suna/pull/8024
fix(web): /presentations 500 on production builds; drop the Claude/Cursor subscription claim by @markokraemer in https://github.com/kortix-ai/suna/pull/8028
Promote main 78395d4286 (last fully green main) to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/8025
feat(channels): approval cards for gated connector calls in Slack and Teams by @markokraemer in https://github.com/kortix-ai/suna/pull/8033
fix(reaper): stop logging transient provider throttles as errors (KRTX-617) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8035
fix(api): log the title-generate gateway status as upstream_status (KRTX-612) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8034
refactor(api): delete dead runtime-wake-fence and inbox-rows exports (KRTX-266) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8032
fix(sdk): exclude OpenCode built-in agents from the selectable roster (KRTX-642) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8029
feat(web): 'Sovereign' film on real product captures + 'Rent vs own' (16:9, 9:16) by @markokraemer in https://github.com/kortix-ai/suna/pull/8045
fix(models): images + thinking control for DeepSeek/GLM, stale-capability converge, US hosting hint by @markokraemer in https://github.com/kortix-ai/suna/pull/8026
docs(learnings): curate modalities and reasoning options for managed models by @markokraemer in https://github.com/kortix-ai/suna/pull/8052
fix(web): stop the Kortix upgrade upsell on a provider usage limit (KRTX-621) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8037
fix(kortixd): stop config-release retries on a dead session token (KRTX-613) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8036
perf(connectors): opt catalog summary paths out of action schemas (KRTX-615) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8046
perf(api): serve sandbox-health polls from cache while refreshing (KRTX-620) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8044
fix(api): log only failed requests at WARN (KRTX-627) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8048
fix(kortixd): stop polling runtime-assets manifest with a refused session credential (KRTX-636) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8050
fix(api): log an unreachable pre-stop abort as info, not a warn (KRTX-619) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8042
refactor(api): split projects/secrets.ts into envelope, grant-policy and consumer modules (KRTX-322) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8062
test(api): characterize the preview forwarder and WS upstream resolver (KRTX-327) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8060
test(api): enforce the model-picker ↔ resolver parity for pooled secrets (KRTX-431) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8065
perf(api): one mirror fetch per session-config read (KRTX-629) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8063
fix(api): stop audit ingest running past the 25s request deadline (KRTX-644) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8061
refactor(api): dedupe SSE usage settlement into services/llm.ts (KRTX-335) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8057
docs(learnings): record the background-retry hot-loop rule from the accounts p95 incident (KRTX-630) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8053
fix(web): de-noise digest-less React #419 Suspense bailout from frontend Sentry (KRTX-628) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8049
fix(hooks): the .env guard checks its result and uses the pinned dotenvx by @markokraemer in https://github.com/kortix-ai/suna/pull/8074
fix(kortixd): tests run with an isolated HOME; the CLI $HOME fallback is Linux-only by @markokraemer in https://github.com/kortix-ai/suna/pull/8080
refactor(api): dedupe credit-reservation helpers and flatten tryAuthenticate (KRTX-334) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8072
fix(api): turn-end orphan repair requires the reaper's age floor (KRTX-624) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8081
fix(db): index provider_events.account_id for audit reconciliation (KRTX-643) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8071
refactor(api): route path-form public shares through the shared sandbox forwarder (KRTX-333) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8069
fix(kortixd): stop the dead-credential relays on a revoked session token (KRTX-446) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8066
fix(llm-gateway): run the fallback chain when a model is unavailable (KRTX-633) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8030
fix(api): bound the audit read-path flush barrier (KRTX-631) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8070
feat(reminders): Reminders UI + per-project reminders feature flag by @markokraemer in https://github.com/kortix-ai/suna/pull/8073
fix: make main Tests green (#8019/#8057 mocks, dead-token breaker probe, SWR clock, launch i18n exemption) by @markokraemer in https://github.com/kortix-ai/suna/pull/8064
docs(learnings): packages lane before merging a mocked-module change; breakers need a probe by @markokraemer in https://github.com/kortix-ai/suna/pull/8107
fix(db): drop the unused audit_events account/client-source/time index by @markokraemer in https://github.com/kortix-ai/suna/pull/8093
docs(skills): route "check back later" to reminders from the agent prompt, onboarding, and Slack by @markokraemer in https://github.com/kortix-ai/suna/pull/8112
refactor(api): split loadProjectConfig into a manifest resolver and one resource scanner (KRTX-307) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8097
fix(tests): fund MCP-3's team account before it creates a session by @markokraemer in https://github.com/kortix-ai/suna/pull/8099
fix(connectors): restore items/cursor wire shape for toolkit search by @markokraemer in https://github.com/kortix-ai/suna/pull/8100
fix(tests): RTA-5 compares only box identity fields, not build stamp by @markokraemer in https://github.com/kortix-ai/suna/pull/8101
fix(mobile): open a Show tool preview in-session, not the Browser tab (KRTX-602) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8031
fix(api): answer POST /internal/gateway/trace without waiting on the audit pool (KRTX-609) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8038
refactor(api): dedupe session-lifecycle runtime fetches into one transport (KRTX-265) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8039
fix(api): bound the Quick Queue interrupt re-arm loop on an unreachable runtime (KRTX-626) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8040
fix(api): return 499 for a client-cancelled llm-gateway proxy request (KRTX-616) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8041
perf(proxy): attribute upstream fetch time so slow stages are queryable (KRTX-577) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8067
fix(web): filter bare app:/// iOS WebView stack-overflow noise (KRTX-640) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8068
fix(web): pointer cursor on every clickable element (KRTX-15) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8077
refactor(api): flatten turn-stream kind callback into per-kind handlers (KRTX-280) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8082
refactor(api): split projects/triggers.ts into types, manifest-IO and entry modules (KRTX-320) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8083
refactor(projects): one Git connection/metadata writer shape (KRTX-302) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8084
fix(db): reconcile DB Drift Sentinel gaps (prod enum, dev stray column, guarded NOT NULLs) by @markokraemer in https://github.com/kortix-ai/suna/pull/8012
fix(learnings): regenerate MEMORY.md so the index matches entries/ by @markokraemer in https://github.com/kortix-ai/suna/pull/8146
fix(tests): green main — learnings index check ignores squash-merge order; one AsyncStorage mock in mobile tests by @markokraemer in https://github.com/kortix-ai/suna/pull/8144
refactor(api): split gateway routes into focused route modules (KRTX-291) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8086
fix(api): return a typed 401 for a dead credential so retrying clients stop (KRTX-446) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8087
refactor(api): split sandbox-env-sync into snapshot, push, propagation and session-push modules (KRTX-300) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8088
refactor(api): split projects/agents.ts into parse/grants/crud modules (KRTX-319) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8090
test(web): pin dotm variant markup and resolver outputs (KRTX-654) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8092
refactor(api): split activateWithCas's transaction body out (KRTX-315) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8094
fix(api): reject private and metadata URLs at the Firecrawl proxy (KRTX-648) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8103
refactor(api): split commitMultipleFilesToBranch into a commit-writer module (KRTX-308) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8106
fix(api): repair main after 5f2ae97 (KRTX-620) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8114
fix(kortixd): count every terminal credential 401 toward the dead-token breaker (KRTX-636) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8115
refactor(web): extract the sidebar context kernel to sidebar-context.tsx (KRTX-650) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8123
feat(api): bound LLM gateway requests per credential (KRTX-664) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8124
refactor(web): delete the four dead Field subcomponents (KRTX-660) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8127
fix(api): keep Platinum stopping state unconfirmed (KRTX-667) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8129
refactor(web): merge LeftArc and RightArc into one ArcSvg (KRTX-658) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8134
fix(api): treat a stop-confirm timeout while stopping as a lifecycle transition (KRTX-667) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8135
refactor(api): split the session-scope rescope handler into decision helpers (KRTX-281) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8139
refactor(web): delete the dead CommandItemHoverCard and CommandKbd (KRTX-657) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8140
perf(connectors): stop fetching action schemas the listing discards (KRTX-665) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8141
perf(api): serve the maintenance config from the cached platform setting (KRTX-666) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8145
refactor(web): delete dead zoom helpers and dialog parts in preview-image (KRTX-662) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8147
fix(auth): KRTX-668 revoke logout sessions and test refresh replay by @agent-kortix in https://github.com/kortix-ai/suna/pull/8148
fix(mobile): close the remaining tab-store AsyncStorage mock race by @markokraemer in https://github.com/kortix-ai/suna/pull/8151
fix(audit): rate-limit the write-contention warning (KRTX-614) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8043
perf(api): one audit-ingest statement per relay batch (KRTX-665) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8136
refactor(api): flatten turn-stream kind callback into per-kind handlers (KRTX-280) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8119
Revert #8148: logout session revocation broke AUTH-1/AUTH-3 on main by @markokraemer in https://github.com/kortix-ai/suna/pull/8153
fix(billing): warn once per wallet drain episode, not per overdraft settlement (KRTX-338) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8047
fix(api): classify transient Platinum guest renewal failures (KRTX-685) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8156
fix(web): pointer cursor on every clickable element (KRTX-15) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8089
refactor(api): split secrets.ts create handler and its validation ladder (KRTX-292) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8117
fix: green main — config archive race (CodeQL), ECS budget reason, cursor-default comments by @markokraemer in https://github.com/kortix-ai/suna/pull/8159
Promote main 42bc3cc2c7 (fully green) to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/8160
Release v0.13.41 — Kortix as an MCP server by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7969
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.40...v0.13.41
Read the full release on GitHub →
v0.13.40 September 28, 2026 Sessions recover a stuck sandbox and a stale runtime on their own.
Fixed
A session whose sandbox name was still held by an old archived sandbox could never get a new sandbox. It now provisions under a fresh name.
Opening a session repairs a stale runtime immediately instead of waiting for the background check.
A prompt parked while the sandbox restarts keeps its sandbox deadline through every retry.
A Firefox browser-extension error no longer reaches error reporting.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.39...v0.13.40
Release on GitHub →
v0.13.39 September 27, 2026 Sessions keep working through model and runtime outages, turns start faster, and sessions open instantly.
Improved
Opening a session shows its saved history immediately from cache while the live transcript loads, in one request instead of several.
Turns start faster: configuration, model catalog and ingress checks run in parallel.
Sessions retry transient model errors inside the turn and continue through short provider outages instead of stopping.
A session whose runtime was lost resumes automatically when it was running unattended.
The sandbox model catalog stays current across boot, wake, restart and every turn.
Streaming responses never forward a partial event line; a stream cut before the first byte is retried, and a later cut ends with an explicit error.
The kortixt terminal desk adds cloud sessions, port forwarding, a Links panel and a self-updating launcher.
Managed models route through their OpenRouter pools by default; direct Morph routing is off unless an operator enables it.
Gateway request logs break admission time down by step: preparation, admission, routing, resolution and billing.
Fixed
Turns were sometimes marked abandoned while still running.
Transcript requests could return 401 during a session.
Stopped sandboxes could stay running after their session ended.
Orphan cleanup only stops sandboxes that this deployment's database owns.
What's Changed
feat(sdk,web,mobile): instant session loads — history from cache, lists that never block, one status vocabulary by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7778
feat(gateway): split gateway admission time by step by @markokraemer in https://github.com/kortix-ai/suna/pull/7833
chore(release): staging VERSION → 0.13.39 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7834
chore(release): VERSION → 0.13.39 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7835
Promote main da10498817 to staging (v0.13.39) by @markokraemer in https://github.com/kortix-ai/suna/pull/7836
fix(tests): pi harness must not read the developer's own skills by @markokraemer in https://github.com/kortix-ai/suna/pull/7790
fix(daemon): asset swap yields to an in-flight config convergence by @markokraemer in https://github.com/kortix-ai/suna/pull/7791
fix(runtime): sandbox model catalog stays current — boot, wake, restart, turn-start by @markokraemer in https://github.com/kortix-ai/suna/pull/7786
docs(spec): runtime convergence — no terminal states, admission control by @markokraemer in https://github.com/kortix-ai/suna/pull/7785
test(config-releases): pin the proven-check tool-loading contract at the unit level by @markokraemer in https://github.com/kortix-ai/suna/pull/7783
test(config-releases): CFG-12 race rounds ask a per-round-unique directive by @markokraemer in https://github.com/kortix-ai/suna/pull/7802
docs(learnings): a one-shot boot decision hardens forever on a resuming box by @markokraemer in https://github.com/kortix-ai/suna/pull/7808
fix: false-abandoned turns, transcript 401s, zombie sandboxes by @markokraemer in https://github.com/kortix-ai/suna/pull/7807
fix(daemon): retry transient model errors in-turn and resume through outages — never stop on "Stream ended without finish_reason" by @markokraemer in https://github.com/kortix-ai/suna/pull/7797
fix(runtime): shed processes before losing the VM; auto-resume unattended sessions after runtime_gone by @markokraemer in https://github.com/kortix-ai/suna/pull/7806
fix(llm-gateway): never forward a partial SSE line; retry a stream cut before first byte, else emit an explicit error frame by @markokraemer in https://github.com/kortix-ai/suna/pull/7804
fix(gateway): turn Morph direct off by default (staging hotfix of #7839) by @markokraemer in https://github.com/kortix-ai/suna/pull/7841
fix(gateway): turn Morph direct off by default for every managed model by @markokraemer in https://github.com/kortix-ai/suna/pull/7839
Remove docs/ for good and every citation that recreated it by @markokraemer in https://github.com/kortix-ai/suna/pull/7843
fix(apps): accept the configured non-empty control secret by @kubet in https://github.com/kortix-ai/suna/pull/7849
fix(sandbox): fence orphan cleanup by database ownership by @kubet in https://github.com/kortix-ai/suna/pull/7852
fix(sandbox): stage database-owned orphan cleanup by @kubet in https://github.com/kortix-ai/suna/pull/7854
fix(worktree): new branches fork from fresh origin/main, not the stale local main by @markokraemer in https://github.com/kortix-ai/suna/pull/7846
kortixt: one-command cloud engineering desk; self-updating launcher; port forwarding; e2e sweep fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/7789
fix(api): durable per-session env-sync skip closes the 2-replica cache miss by @markokraemer in https://github.com/kortix-ai/suna/pull/7848
test(tests): turn-latency benchmark — pnpm test -- --latency --target by @markokraemer in https://github.com/kortix-ai/suna/pull/7847
perf(turn-start): parallelize config/catalog/ingress pre-flight, coalesce the health probe by @markokraemer in https://github.com/kortix-ai/suna/pull/7842
One-read session view: fold audit into the open bundle, dedupe scope+connectors by @markokraemer in https://github.com/kortix-ai/suna/pull/7845
infra: colocate dev/staging API with their database region by @markokraemer in https://github.com/kortix-ai/suna/pull/7844
feat(kortixd): the box side of runtime convergence (Rule 1, 3, blocked) by @markokraemer in https://github.com/kortix-ai/suna/pull/7792
feat(runtime-convergence): API-side desired-runtime document, admission control, runtime block by @markokraemer in https://github.com/kortix-ai/suna/pull/7793
Promote main 38ac81a125 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/7858
Release v0.13.39 — Sessions ride through outages by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7837
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.38...v0.13.39
Read the full release on GitHub →
v0.13.38 September 27, 2026 Sandbox image builds keep working under the snapshot quota, and turning off session oversight takes effect everywhere at once.
Fixed
Snapshot cleanup now removes images left behind by deleted App deployments, so new sandbox images keep building instead of hitting the provider quota.
Turning off session oversight takes effect immediately on every server. Admins can no longer open a member's private session for a few seconds afterwards.
Improved
Gateway request logs split latency into admission time and upstream wait.
The Settings panel and icon pickers load on demand, so the app opens faster.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.37...v0.13.38
Release on GitHub →
v0.13.37 September 27, 2026 Deploys no longer cause a burst of errors, and the app is faster.
Fixed
A production deploy no longer briefly runs the database out of connections. Session start, stop and model listing stay available while a new version rolls out.
Improved
The connector catalog resolves connectors concurrently.
Avatars render from generated paths instead of loading the full icon set.
Branch listings for views are faster, and Composio auth configuration is served from cache while it refreshes.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.36...v0.13.37
Release on GitHub →
v0.13.36 September 27, 2026 The admin accounts list loads reliably, and sessions resolve their connectors faster.
Fixed
The admin console's account list uses an index and no longer times out. A slow query now returns a clear error instead of raw database text.
Improved
Sessions resolve their connectors in one batched lookup, and Composio discovery serves cached results while it refreshes.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.35...v0.13.36
Release on GitHub →
v0.13.35 September 27, 2026 Audit events are never lost under load, stuck session starts stop retrying forever, and the app is faster.
Fixed
Audit events that hit database lock contention are retried with backoff instead of being dropped.
A session start whose repository clone fails now stops after its retry limit instead of retrying forever.
Improved
Faster page loads and API responses: cached git reads, fewer browser preflight requests, fewer repeated queries, and smaller payloads.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.34...v0.13.35
Release on GitHub →
v0.13.34 September 27, 2026 Share connector accounts with groups and people, mobile push notifications, and pi.dev packages for pi sessions.
New
Share connector accounts with specific groups, specific people, or everyone in the project. Anything can also be granted to everyone in a project.
Mobile push notifications when a turn completes, fails, asks a question, or needs a permission, even while the app is closed. Transcripts can also be shared as a public link from mobile.
pi.dev packages. pi sessions can load any extension from pi.dev, per project, per agent, or for every session.
Claude Code on the gateway. Claude Code works fully against /v1/messages, and ChatGPT models work from a gateway key.
Fixed
A long run whose first prompt has not loaded yet still reads in order.
A sandbox's binaries update at a turn boundary instead of waiting for a restart.
A restart failure is no longer reported as a lost computer before the provider is asked, and a removed parked box is recovered first.
A parked session stays stopped under passive traffic, and the app stops polling a parked or unreachable sandbox.
Unconfigured sessions use the project's shared ChatGPT accounts.
Bring-your-own Anthropic-compatible providers respect their configured base URL.
A session name set at creation is kept.
The session audit view loads without 25-second timeouts.
Interleaved text in streamed Anthropic responses opens its own content block.
An invalid Composio toolkit returns a clear error instead of a server error.
Tool output is parsed in linear time on web, mobile and the SDK.
Several browser errors no longer surface as app errors.
Project routes always run authentication before the route handler.
Mobile Review merges work and feel instant, with change-request cards in sessions.
Historical session dates and activity ordering are restored for migrated sessions.
The web app no longer hits React error #467 while loading translations.
What's Changed
system-skills: connector account ownership — shared slots must be authorized as the project identity by @agent-kortix in https://github.com/kortix-ai/suna/pull/7527
fix(api): session-create 500 stops leaking the raw insert error (KRTX-237) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7714
fix(audit) KRTX-211: index session-scoped audit read; kill 25s statement-timeout 503s by @agent-kortix in https://github.com/kortix-ai/suna/pull/7680
fix(api): keep a parked session stopped under passive proxy traffic (KRTX-378) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7734
fix(api): persist a create-supplied session name as the explicit override (KRTX-388) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7733
fix(api): cache projection etag after the durable store write (KRTX-218) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7723
fix(runtime): recover a removed parked box before reporting runtime_lost (KRTX-225) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7696
fix(api): answer 422, not a paged 500, for an invalid Composio toolkit slug (KRTX-212) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7729
Fix FE ApiError: Failed to commit agent config on a repository-policy push rejection (KRTX-236) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7711
fix(sdk): observe the session-sync read timeout when a loader throws synchronously (KRTX-384) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7732
fix(sdk): stop self-heal polls on a parked or unreachable sandbox (KRTX-269) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7722
fix(llm-gateway): open a fresh content block for interleaved text (KRTX-340) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7726
fix(web): stop Sentry paging on React #419 from Next.js 404/redirect recoveries (KRTX-230) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7707
fix(api): keep repository push stderr out of policy logs by @markokraemer in https://github.com/kortix-ai/suna/pull/7742
fix(gateway): unconfigured sessions use project-shared ChatGPT accounts by @markokraemer in https://github.com/kortix-ai/suna/pull/7737
fix(sandbox): attribute memory pressure and bound API test workers by @markokraemer in https://github.com/kortix-ai/suna/pull/7731
fix(web): de-noise React error #412 (Connection closed.) RSC flight close — KRTX-240 by @agent-kortix in https://github.com/kortix-ai/suna/pull/7716
Fix FE RangeError: Maximum call stack size exceeded (KRTX-235) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7712
fix(sdk,web,mobile): a long run whose prompt is not loaded reads in order by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7738
fix(apps): a switched-off hosting provider showed "starting" forever instead of asking for a redeploy by @markokraemer in https://github.com/kortix-ai/suna/pull/7180
fix(release-gate): v0.13.29 browser failures — spec 21 preflight + Owner facet, spec 28 duplicate tile title by @markokraemer in https://github.com/kortix-ai/suna/pull/7517
docs(learnings): port 15 rules from stale learnings PRs by @markokraemer in https://github.com/kortix-ai/suna/pull/7740
build(deps): bump github/codeql-action from 4.37.7 to 4.37.8 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6858
build(deps): bump bridgecrewio/checkov-action from 12.3117.0 to 12.3119.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6856
chore(deps-dev): bump mermaid from 11.15.0 to 11.16.1 in /apps/mobile by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7518
chore(deps): bump pypdf from 6.15.0 to 6.16.1 in /packages/starter/templates/general-knowledge-worker/.kortix/opencode/skills/presentations/scripts by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7090
chore(deps): bump hono from 4.12.27 to 4.13.7 in /.deepsec by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7188
fix(db): retry a busy migration advisory lock before failing deploy by @markokraemer in https://github.com/kortix-ai/suna/pull/7743
chore(agents): ponytail on by default as agent-agnostic skills; every CLAUDE.md symlinks AGENTS.md by @markokraemer in https://github.com/kortix-ai/suna/pull/7744
fix(security): read tool output in linear time on web, mobile, and the SDK by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7581
fix(api): de-noise transient git-mirror 503 from frontend Sentry (KRTX-231) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7708
Revert mobile mermaid bump: it broke pnpm frozen-lockfile on main by @markokraemer in https://github.com/kortix-ai/suna/pull/7749
ci(dependabot): run the Tests lanes on npm dependency PRs by @markokraemer in https://github.com/kortix-ai/suna/pull/7751
fix(api): respect catalog api base URL for anthropic-transport BYOK providers by @markokraemer in https://github.com/kortix-ai/suna/pull/7745
fix(agent-tunnel): handle non-JSON responses in TunnelClient gracefully by @markokraemer in https://github.com/kortix-ai/suna/pull/7746
fix(api): never call a restart failure a lost computer without asking the provider by @markokraemer in https://github.com/kortix-ai/suna/pull/7747
docs: support any Serper.dev-compatible endpoint by @markokraemer in https://github.com/kortix-ai/suna/pull/7752
docs(learnings): a failed migration gate skips the API deploy while the frontend still ships by @markokraemer in https://github.com/kortix-ai/suna/pull/7753
docs(preview): document the preview environment flow by @markokraemer in https://github.com/kortix-ai/suna/pull/7755
Revert "docs: support any Serper.dev-compatible endpoint" by @markokraemer in https://github.com/kortix-ai/suna/pull/7762
feat(mobile): push notifications, public transcript share, and mobile triage fixes by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7688
Revert #7180: app wake provider check fails the public-proxy integration suite by @markokraemer in https://github.com/kortix-ai/suna/pull/7764
feat(runtime-assets): converge binaries at a turn boundary, and make the secrets gate one predicate by @markokraemer in https://github.com/kortix-ai/suna/pull/7703
feat(pi): pi.dev packages per project, per agent and system-wide, pre-built and loaded by pi's own extension loader by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7353
fix(llm-gateway): Claude Code on /v1/messages, incl. ChatGPT models from a gateway key by @markokraemer in https://github.com/kortix-ai/suna/pull/7741
fix(mobile): push public-link confirms inside the share sheet by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7769
feat: share connector accounts with groups, people, or everyone — and grant anything to everyone in the project by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7665
fix(tests): FILE-8 waits for the session's remote branch to publish by @markokraemer in https://github.com/kortix-ai/suna/pull/7766
fix(tests): give the CFG-11/CFG-12 fixture's hello.ts a real tool shape by @markokraemer in https://github.com/kortix-ai/suna/pull/7767
chore(deps): bump github/codeql-action from 4.37.8 to 4.38.1 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7754
chore(deps): bump github/codeql-action/upload-sarif from 4.37.7 to 4.38.1 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7758
chore(deps): bump anchore/sbom-action from 0.24.0 to 0.24.2 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7756
chore(deps): bump hadolint/hadolint-action from 3.4.0 to 3.5.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7759
chore(release): staging VERSION → 0.13.34 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7771
chore(release): VERSION → 0.13.34 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7772
Promote main 180e5dc29e to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/7773
fix: PROJ-38 401->403 auth-order regression + missing audit title translations by @markokraemer in https://github.com/kortix-ai/suna/pull/7774
Promote main fa790194ee to staging (v0.13.34, includes #7774 auth-order fix) by @markokraemer in https://github.com/kortix-ai/suna/pull/7775
ci: queued dev deploys, serving-based rolls, Live-on-dev and early preview comments by @markokraemer in https://github.com/kortix-ai/suna/pull/7763
fix(mobile): make Review merges work and feel instant, add session CR cards by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7777
fix(admin): typed 503 for the analytics ledger timeout (KRTX-423) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7770
fix(web): always call use() for the i18n catalog to avoid React #467 by @agent-kortix in https://github.com/kortix-ai/suna/pull/7768
Restore historical Suna session dates and activity ordering by @markokraemer in https://github.com/kortix-ai/suna/pull/7231
refactor: apps/web reads the SDK's diagnostics store and managed storage by @markokraemer in https://github.com/kortix-ai/suna/pull/7644
CI reads every credential from AWS Secrets Manager; GitHub stores none by @markokraemer in https://github.com/kortix-ai/suna/pull/7591
refactor(wire-id): one wrap-aware wire message-id implementation by @markokraemer in https://github.com/kortix-ai/suna/pull/7652
Promote main 381c7e53be to staging (v0.13.34 latest) by @markokraemer in https://github.com/kortix-ai/suna/pull/7784
perf: Customize loads instantly — server caches, warm git mirror, background prefetch by @markokraemer in https://github.com/kortix-ai/suna/pull/7781
fix(iam): CONN-28 — never cache empty object-grant map for connection narrowing by @markokraemer in https://github.com/kortix-ai/suna/pull/7794
Promote main 7ca9f7d630 to staging (v0.13.34 + #7794) by @markokraemer in https://github.com/kortix-ai/suna/pull/7795
Release v0.13.34 — Share connector accounts, mobile push notifications, and pi.dev packages by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7788
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.33...v0.13.34
Read the full release on GitHub →
v0.13.33 September 26, 2026 This release restores everything from v0.13.32, which was rolled back, and adds fixes for live transcripts, sleeping sessions, the file viewer and connectors.
New
Grouped outputs. When the agent shows several results in a row, such as two screenshots, the session renders one tabbed card instead of a card per result.
Managed model routes. Each Kortix-managed model routes through its own provider route, and the model picker shows the price for each route.
Wake failures are explained. When a sandbox fails to wake, the session page shows the failure and when it retries.
Fixed
A live session's transcript recovers when a turn ends even if the working signal was missed.
A session idle for more than a day wakes again, and a failed start is recovered instead of reported lost.
A config update never interrupts the turn it finds running.
Kortix owns the kortix and opencode binaries inside a managed sandbox, so a box cannot end up on a version Kortix cannot heal.
The file viewer reloads when the explorer switches between the live workspace and the saved copy.
X and other Composio toolkits with their own OAuth connect again, and the Connected tab stays current.
Git pushes on branch commits retry a transient failure.
Audit writes for one session no longer queue behind each other.
A requested Stop keeps its reason in the turn history.
Several browser errors from extensions, GPU drivers, closed parent windows and tab discards no longer surface as app errors.
What's Changed
New Contributors
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.32...v0.13.33
Read the full release on GitHub →
v0.13.32 September 25, 2026 Your own model keys and ChatGPT subscription now work in Slack, Teams and the CLI, saved sessions open instantly, and a single Stop can no longer break a session.
New
Your own keys and ChatGPT everywhere. Models you reach through your own API keys, keys shared with you, project keys, and ChatGPT subscriptions are available in Teams, Slack and the CLI, not only the web picker.
Members bring their own ChatGPT subscription , without needing permission to manage project secrets.
Saved sessions open on their conversation. Opening an existing session shows skeleton rows shaped like that session while it loads, instead of the full-screen boot screen.
Command palette. ⌘K opens instantly at a fixed position, and search can copy your account, project and session IDs.
Connect cards name the app they connect, and render as cards even when an agent writes them in a table.
Mobile : dictation in the composer, labelled queue controls with undo, and + only attaches.
SSO domain verification. An enterprise account verifies its email domain with a DNS TXT record before SSO is enforced for it. Existing SSO setups keep working.
Fixed
One Stop during a session's first turn no longer makes every later turn end immediately, and a Stop during start-up releases the held prompt.
A healthy Slack run is no longer closed as idle after 30 minutes of quiet work.
A saved secret that is not granted to the session's agent is now reported as "not granted to this agent" instead of silently missing, and an agent session can sync its own secrets.
In web terminals on custom Debian templates, Kortix tools stay on PATH and secrets load in login shells.
An open file viewer refreshes when the agent edits the file.
A turn that fails mid-stream shows one readable line naming the model, with details folded away.
Streaming from OpenAI-compatible models that omit event separators no longer fails to parse.
The web app detects the end of a turn reliably.
Security
Markdown, embedded frames, credential routing, share links and analytics are hardened.
SDK token, transport, preview-credential and file-write paths are hardened.
Connector requests are checked against private-network egress rules, and connector sync is atomic.
Gateway usage settles exactly once per request.
SSO emails are trusted only on verified domains, and access-control writes are scoped to their account.
Billing wallet functions move to a private database schema.
What's Changed
Connector egress checks, atomic connector sync, and idempotent gateway settlement by @markokraemer in https://github.com/kortix-ai/suna/pull/7618
Gateway: one Dispatch module runs the attempt plan (fallback chains, streaming retries) by @markokraemer in https://github.com/kortix-ai/suna/pull/7620
chore(release): VERSION → 0.13.32 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7625
chore(release): staging VERSION → 0.13.32 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7626
refactor(api): one status-transition module for session lifecycle; split engine.ts by @markokraemer in https://github.com/kortix-ai/suna/pull/7621
fix(tests): keep ke2e principal tokens valid past 1 h; stop fixtures when their flow attempt ends by @markokraemer in https://github.com/kortix-ai/suna/pull/7627
refactor(api): split numbered project route files by domain by @markokraemer in https://github.com/kortix-ai/suna/pull/7623
fix(sdk): token, transport, preview-credential and file-write hardening by @markokraemer in https://github.com/kortix-ai/suna/pull/7610
refactor(billing): one wallet module for every credit movement by @markokraemer in https://github.com/kortix-ai/suna/pull/7624
fix(preview): reclaim session sandboxes with their host by @markokraemer in https://github.com/kortix-ai/suna/pull/7569
fix(tests): SCOPE-6 uses the Git proxy on deployed targets by @markokraemer in https://github.com/kortix-ai/suna/pull/7628
fix(web): harden markdown, frames, credential routing, share links and analytics by @markokraemer in https://github.com/kortix-ai/suna/pull/7617
fix(identity): trust SSO emails only on verified domains; scope IAM writes to the account by @markokraemer in https://github.com/kortix-ai/suna/pull/7615
refactor(web): one markdown trust policy and one file preview policy by @markokraemer in https://github.com/kortix-ai/suna/pull/7629
refactor(api): session lifecycle wave 2 — status writers on the transition module, fenced command lease by @markokraemer in https://github.com/kortix-ai/suna/pull/7632
fix(sandbox): slack CLI surfaces the structured denial message, not "HTTP 403: true" by @agent-kortix in https://github.com/kortix-ai/suna/pull/7634
refactor(db): private wallet schema, idempotency-key uniqueness, kortix.ts schema contract by @markokraemer in https://github.com/kortix-ai/suna/pull/7631
fix(db): build baseline indexes and constraints missing on prod; verify-live-schema checks them by @markokraemer in https://github.com/kortix-ai/suna/pull/7635
test(ci): run the PostgreSQL-backed suites in the core lane, one fresh database per file by @markokraemer in https://github.com/kortix-ai/suna/pull/7636
fix(db): migrate status reads the ledger read-only, never the migration runner by @markokraemer in https://github.com/kortix-ai/suna/pull/7637
perf(db): index compute-session and grant-rotation lookups; one pending deletion request per account; re-register nightly schedules by @markokraemer in https://github.com/kortix-ai/suna/pull/7638
feat: models on your own keys and ChatGPT in Teams, Slack and the CLI by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7593
feat: open a saved session on skeleton rows, not the boot screen by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7640
fix(secrets): a session selects only the pooled keys it can use when it runs by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7639
feat(providers): members bring their own ChatGPT subscription by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7641
refactor(channels): one chat-channel core for Slack, Teams and email by @markokraemer in https://github.com/kortix-ai/suna/pull/7633
refactor(cli): remove unreachable commands and share arg-error helpers by @markokraemer in https://github.com/kortix-ai/suna/pull/7647
refactor(db): one catalog reader for the schema gates; un-quarantine ledger-repair suite by @markokraemer in https://github.com/kortix-ai/suna/pull/7648
feat(web): each saved session opens on its own skeleton rows, with one pulse moving down them by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7656
fix(sandbox): keep Kortix tools on PATH and load secrets in terminal login shells by @markokraemer in https://github.com/kortix-ai/suna/pull/7654
fix(sandbox): one Stop can no longer break every later turn in a session by @markokraemer in https://github.com/kortix-ai/suna/pull/7655
refactor(api): one helper per request primitive, with a tripwire by @markokraemer in https://github.com/kortix-ai/suna/pull/7650
fix(sandbox): a Stop releases the prompt the warm-up gate is holding by @markokraemer in https://github.com/kortix-ai/suna/pull/7664
feat(chat): name the app on connect link cards and lift them out of tables by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7660
feat(mobile): dictation, labelled queue controls with undo, and + only attaches by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7661
fix(channel-cli): downloads and teams conversations surface the API's denial message by @markokraemer in https://github.com/kortix-ai/suna/pull/7643
refactor(api): one module answers which pooled keys a session may use by @markokraemer in https://github.com/kortix-ai/suna/pull/7653
refactor(api): one module decides connector connection mutation by @markokraemer in https://github.com/kortix-ai/suna/pull/7645
refactor(web): delete unimported web modules by @markokraemer in https://github.com/kortix-ai/suna/pull/7646
test(billing, llm-gateway): cut the api-billing-gateway suites over to their owners by @markokraemer in https://github.com/kortix-ai/suna/pull/7662
Sessions run the base branch's current config from a read-only copy; /workspace is never written by @markokraemer in https://github.com/kortix-ai/suna/pull/7403
fix: say 'not granted to this agent' instead of silently withholding a saved secret by @markokraemer in https://github.com/kortix-ai/suna/pull/7659
feat(web): command palette opens instantly above centre, and search can copy your IDs by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7675
fix(slack,sandbox): stop killing live runs as idle by @markokraemer in https://github.com/kortix-ai/suna/pull/7670
fix(tests): make main green after connect link cards (#7660) by @markokraemer in https://github.com/kortix-ai/suna/pull/7676
refactor(mobile): delete 125 modules no app route reaches by @markokraemer in https://github.com/kortix-ai/suna/pull/7649
fix(api): let an agent session sync its own secrets by @markokraemer in https://github.com/kortix-ai/suna/pull/7677
fix(db): local invalid-index repair checks index builds in its own database only by @markokraemer in https://github.com/kortix-ai/suna/pull/7678
test(session-lifecycle): prune the session lifecycle test surface to its keepers by @markokraemer in https://github.com/kortix-ai/suna/pull/7663
test(kortixd): one keeper per contract at its owner boundary; test-only seams deleted by @markokraemer in https://github.com/kortix-ai/suna/pull/7673
fix(session): render failed turns as a checkpoint row with folded details by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7671
fix(web): refresh open file viewers when the agent turn ends by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7674
refactor(sdk): route-contract tripwire, retired endpoints, one transport module by @markokraemer in https://github.com/kortix-ai/suna/pull/7630
refactor(oauth): one hashing scheme for OAuth tokens by @markokraemer in https://github.com/kortix-ai/suna/pull/7666
fix(sdk): detect turn end against the status before the event by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7682
fix(gateway): repair missing OpenAI SSE event boundaries by @markokraemer in https://github.com/kortix-ai/suna/pull/7679
docs(contributing): one PR loop with an agent-browser demo video; skills in .agents/skills; learnings as an episodic ledger; docs/ removed by @markokraemer in https://github.com/kortix-ai/suna/pull/7672
fix(web): scale inline code with the heading it sits in by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7684
docs(learnings): a green preview deploy job is not a tested preview by @markokraemer in https://github.com/kortix-ai/suna/pull/7683
Promote main 92d4bcb6a9 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/7686
Release v0.13.32 — Your own keys in Slack, Teams and the CLI, and sessions that open instantly by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7687
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.31...v0.13.32
Read the full release on GitHub →
v0.13.31 September 24, 2026 The audit log now reads as plain events instead of raw routes, agents act as
their own principal by default, the mobile app gets a large revamp, and the
marketing site ships far less JavaScript.
New
An audit log you can read. Every entry shows a readable title instead of a
raw route, in all nine languages. Every API route and event now has a label,
and kortix audit ls prints the same titles in the terminal.
More outcomes are audited : sandbox-provider transitions, App deployments,
branch cleanup (one entry per deleted remote branch), and an expired tunnel
permission. Background jobs run each tick as a named worker, so their work is
attributable.
Agents act as their own principal by default. An agent has its own
identity and permissions rather than borrowing the person who started it.
Apps are a per-agent resource in both the editor and the CLI.
Reply to several passages at once with inline quote blocks.
GPT-6 Sol and GPT-6 Luna are available through a connected ChatGPT
subscription.
Improved
The marketing pages are static and ship about 80% less JavaScript, and opening
a session is faster.
Mobile : onboarding, drafts, a reworked drawer header, connectors, a
"Needs you" view, session chrome, the browser toolbar, plan rings and sheet
contrast.
Desktop : native window controls, sidebar and settings alignment, the
collapsed sidebar accepts clicks again, and the Customize sidebar toggle stays
clickable.
File attachments now go through OpenAPI and HTTP connectors.
Kortix-managed models route through Morph first, with a confirmed-US,
zero-retention failover when it is unavailable.
Mobile : attachments upload through the shared SDK, a session starts
optimistically, and there is a Members page.
Fixed
Creating a session no longer fails with a server error when a transient
git-mirror fetch fails; it retries instead.
A trigger or channel prompt no longer freezes the mobile app.
A request that changes nothing no longer records a change in the audit log,
and a rate-limited request no longer stores the path it was refused on.
A git push no longer shares its upstream connection with another push.
OpenAI and Anthropic models are never presented as Kortix-managed.
Quote splitting trims newlines in one pass.
A git request that cannot get its repository credential now fails with a clear,
retryable error instead of a misleading "repository not found", and a brief
credential failure is retried before anyone sees it.
Session turns no longer render out of order after prompts sent from the CLI.
On the desktop app, Back is clickable again on sign-in, /projects, /new and
onboarding, and the window can still be dragged from those pages.
The shader wallpaper compiles again; its uniform names used a form GPUs reject.
When memory runs out because of files held in RAM, the memory guard now names
them instead of reporting only that the turn stopped.
An agent merging its own change request no longer gets a false "changes agents
or triggers" refusal right after a push; the check reads the current branches.
An App's Access list shows an agent grant right after it is saved.
Security
Session routes, public shares and proxy edges check access through one shared
rule set, and server-managed session metadata can no longer be set by clients.
Chat-channel webhooks are scoped to their verified project and workspace.
Credit is granted only for settled payments.
Tighter database grants for Supabase client roles; 57 unused legacy database
functions are removed.
Private sandbox ingress, token hashing, and proxy-aware IP rate limits.
What's Changed
test(agp): give the grant wait a deployed-target budget by @markokraemer in https://github.com/kortix-ai/suna/pull/7541
fix(sdk,cli): retry a stalled/failed DELETE so sessions rm cannot hang past its caller's window by @agent-kortix in https://github.com/kortix-ai/suna/pull/7542
fix(git-proxy): accept shallow pushes in the receive-pack command parser by @agent-kortix in https://github.com/kortix-ai/suna/pull/7544
Saved history works while the sandbox is off — on web, SDK and CLI, attachments included by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7546
feat(teams): finish the Teams integration — questions, images, and the rest by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7545
fix(api): retry transient git-mirror clone failures instead of 500 by @agent-kortix in https://github.com/kortix-ai/suna/pull/7551
fix(web): reflect ChatGPT disconnect immediately by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7535
chore(release): staging VERSION → 0.13.31 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7555
chore(release): VERSION → 0.13.31 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7556
fix(kortixd): resume a short S3 snapshot download with a Range request by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7399
perf(sessions): stop making a prompt wait on round trips it does not need by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7430
fix(security): a pathological tag no longer freezes the mobile app by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7549
fix(security): user message tags parse in linear time on web and mobile by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7554
fix(web): restore catalog key order and merge catalogs key by key by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7550
fix(web): restore starter-prompt catalog order after the principal rename by @markokraemer in https://github.com/kortix-ai/suna/pull/7543
feat(audit): every inbound request is audited, at one boundary by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7548
fix(web): setup links render cleanly while their message streams by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7547
feat(session): inline quote blocks for replying to many passages by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7560
Connector connections: show who each account is authorized as, rename labels, fix already-connected links by @markokraemer in https://github.com/kortix-ai/suna/pull/7557
Mobile: session chrome, browser toolbar, plan rings, sheet contrast, 1.4.0 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7533
fix(desktop): no screen is a soft lock — Go menu history and one default Back by @markokraemer in https://github.com/kortix-ai/suna/pull/7243
fix(desktop): harden native window behavior by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7526
Mobile: onboarding, drafts, drawer header, project switcher fix, Needs you, connectors by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7564
fix(app): restore web settings exit alignment by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7567
fix(api): retry transient warm git-mirror fetch instead of 500 by @agent-kortix in https://github.com/kortix-ai/suna/pull/7570
release: retry transient warm git-mirror fetch (KX-HOURLY session-create 500) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7572
feat(models): Claude Opus 5.5, GPT-6 Sol and GPT-6 Luna by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7561
fix(security): the last super-linear parsers on the mobile user-message path by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7574
feat(audit): background jobs run as named workers and audit the changes they make by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7575
chore(web): refresh stale docs content timestamps by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7576
fix(tests,git-proxy): no bare 400 after a push; a push never shares its upstream connection by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7577
test(api): parse, not regex, in the codemod pins and the route-table guard by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7578
fix(tests): the settings exit journey pins the macOS platform by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7579
feat(audit): every route has a readable label by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7580
feat(agents): Apps are a per-agent resource in the editor and CLI by @markokraemer in https://github.com/kortix-ai/suna/pull/7559
fix(models): OpenAI and Anthropic models are never Kortix-managed by @markokraemer in https://github.com/kortix-ai/suna/pull/7583
fix(web): scope maintenance Edge Config key per environment, keep it off the request path by @markokraemer in https://github.com/kortix-ai/suna/pull/7565
feat(iam): agents act as their own principal by default by @markokraemer in https://github.com/kortix-ai/suna/pull/7563
fix: restore "essential" — the sandbox image has not built since 05:42Z by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7582
fix(connectors): send file attachments through OpenAPI/HTTP connectors by @markokraemer in https://github.com/kortix-ai/suna/pull/7585
perf(web): make kortix.com fast — static marketing, 60% less JS, faster session open by @markokraemer in https://github.com/kortix-ai/suna/pull/7566
chore: back-merge staging into main to unblock the promote by @markokraemer in https://github.com/kortix-ai/suna/pull/7587
Promote main to staging for v0.13.31 by @markokraemer in https://github.com/kortix-ai/suna/pull/7588
Managed models: Morph first, ZDR OpenRouter pool failover, Kortix-only identity by @markokraemer in https://github.com/kortix-ai/suna/pull/7589
fix(desktop): restore collapsed titlebar drag points by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7568
fix(git-proxy): never forward a git request without its credential by @markokraemer in https://github.com/kortix-ai/suna/pull/7592
fix(web): shader wallpaper uniforms no longer use reserved GLSL names by @markokraemer in https://github.com/kortix-ai/suna/pull/7595
fix(kortixd): the memory guard names RAM-backed files when they fill the box by @markokraemer in https://github.com/kortix-ai/suna/pull/7598
fix(tests): press Mod+, only after the project shell has mounted by @markokraemer in https://github.com/kortix-ai/suna/pull/7596
Mobile: attachments through the SDK upload, optimistic session start, Members page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7600
fix: session turns render out of order after CLI prompts (wire-id clock) by @markokraemer in https://github.com/kortix-ai/suna/pull/7597
fix(desktop): the full-band drag strip no longer takes Back's click by @markokraemer in https://github.com/kortix-ai/suna/pull/7601
Promote main to staging for v0.13.31 by @markokraemer in https://github.com/kortix-ai/suna/pull/7599
fix(db): revoke privileged grants from Supabase client roles by @markokraemer in https://github.com/kortix-ai/suna/pull/7603
chore(web): drop real id prefixes from error-noise comments by @markokraemer in https://github.com/kortix-ai/suna/pull/7605
chore(db): drop unused legacy public functions by @markokraemer in https://github.com/kortix-ai/suna/pull/7607
fix(billing): grant credit only for settled payments; bound account-lock holders by @markokraemer in https://github.com/kortix-ai/suna/pull/7608
fix(api): private Platinum ingress, image-sized metering, token hashing, proxy-aware IP limits, lifecycle convergence by @markokraemer in https://github.com/kortix-ai/suna/pull/7611
fix(channels): scope chat webhooks to their verified project and workspace by @markokraemer in https://github.com/kortix-ai/suna/pull/7614
fix(api): one session guard for session routes, shares, and proxy edges by @markokraemer in https://github.com/kortix-ai/suna/pull/7613
fix(tests): wait for PostgREST to load the migrated schema before flows run by @markokraemer in https://github.com/kortix-ai/suna/pull/7616
fix(change-requests): governance guard reads fresh refs, never a false refusal by @markokraemer in https://github.com/kortix-ai/suna/pull/7609
fix(apps): App agents list reads the grant it was just given by @markokraemer in https://github.com/kortix-ai/suna/pull/7612
Promote main 971b2f630d to staging (v0.13.31 re-cut) by @markokraemer in https://github.com/kortix-ai/suna/pull/7619
Release v0.13.31 — A readable audit log, agents as their own principal, and a much lighter web app by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7604
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.30...v0.13.31
Read the full release on GitHub →
v0.13.30 September 23, 2026 New
Agents act as their own principal. An agent session now acts as the agent, on behalf of the person who started it, and every audit event records both. The kortix_cli permission scope is now kortix_permissions.
Microsoft Teams is complete. Agent questions, images, and the remaining Teams flows now work like Slack.
Saved history works while the sandbox is off. Session transcripts and their attachments load on web, SDK, and CLI without waking the sandbox.
Mermaid previews. .mmd and .mermaid files render as diagrams in the file viewer.
Mobile app revamp. New primitives, a project stack, and session chat parity with web. Session logic is now shared through @kortix/sdk.
Improved
Download is a visible primary action in the file viewers.
Session layout: a centered session column, sub-agent tree lines, neutral queued-message bubbles, tighter connector intake spacing, and a working send from project home.
Sandbox memory guard: a turn stops only on real memory pressure, and every stop says why.
Fixed
Slack: in a workspace with more than one Kortix Slack app, an app no longer answers replies in another project's thread, so the right bot replies again.
BYOK billing: sessions on your own provider key are never charged Kortix credits, and usage is attributed correctly.
CLI: kortix sessions rm retries a stalled delete instead of hanging.
Git: shallow pushes are accepted.
Usage descriptions are fully localized.
Internal: the Pi raw event envelope carries its own id; commit hooks block customer data and work in older worktrees; release-gate test fixes.
What's Changed
chore: never commit customer data; guard it on commit and push by @markokraemer in https://github.com/kortix-ai/suna/pull/7512
fix(hooks): blocked-terms guard works in worktrees cut before it by @markokraemer in https://github.com/kortix-ai/suna/pull/7515
pi: the raw event envelope must carry its own id by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7514
Mobile revamp: primitives, project stack, session chat parity; shared session logic in @kortix/sdk by @sutharjay1 in https://github.com/kortix-ai/suna/pull/4372
chore(release): VERSION → 0.13.30 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7520
chore(release): staging VERSION → 0.13.30 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7521
fix(web): sub-agent tree lines, centered session column, project-home send by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7522
fix(web): sub-agent tree lines, centered session column, project-home send by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7523
fix(web): neutral queued bubbles, connector intake spacing by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7524
fix(web): neutral queued bubbles, connector intake spacing by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7525
Fix BYOK billing attribution by @markokraemer in https://github.com/kortix-ai/suna/pull/7519
fix: complete Usage description localization by @markokraemer in https://github.com/kortix-ai/suna/pull/7532
fix: never charge Kortix credits for BYOK by @markokraemer in https://github.com/kortix-ai/suna/pull/7531
fix(slack): a BYO app ignores thread replies it does not own by @kubet in https://github.com/kortix-ai/suna/pull/7530
feat(web): preview .mmd and .mermaid files as rendered diagrams by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7528
fix(sandbox): turns stop only on real memory pressure, and every stop says why by @markokraemer in https://github.com/kortix-ai/suna/pull/7529
fix: match the session inventory GET response by @markokraemer in https://github.com/kortix-ai/suna/pull/7538
fix: match the session inventory GET response by @markokraemer in https://github.com/kortix-ai/suna/pull/7539
feat(iam): agents act as their own principal; kortix_cli → kortix_permissions by @markokraemer in https://github.com/kortix-ai/suna/pull/7507
fix(web): make Download a visible primary action in file viewers by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7536
Promote main to staging for v0.13.30 (conflicts resolved) by @kubet in https://github.com/kortix-ai/suna/pull/7552
Release v0.13.30 — Agents as principals, Teams complete, and saved history without a sandbox by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7553
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.29...v0.13.30
Release on GitHub →
v0.13.29 September 22, 2026 Owners can let admins open every session in their account, sending a message
from the project home no longer freezes the box, and a woken session fills in
its saved history.
New
Let owners and admins open every session. An owner can turn on an account
policy that gives owners and admins access to every session in the account.
It is off by default, only an owner can change it, and every session opened
this way is recorded in the audit log.
See who owns each session. The Sessions page shows each session's owner and
filters by owner and by access.
Improved
Sending from the project home sends the message instead of freezing the input,
and the composer stays in one place through the send.
A session that wakes fills in its saved history.
The waiting indicator stops while a turn is waiting on you.
When a session cannot start, the reason is shown instead of a generic error.
Fixed
Creating a project during a GitHub rate limit now tells you to retry and when,
instead of failing.
Rebuilding a sandbox image that is still in use explains why it cannot proceed.
Restarting or starting a session no longer erases what another in-flight
request recorded about it.
Session-access audit entries are translated.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.28...v0.13.29
Release on GitHub →
v0.13.28 September 22, 2026 Projects open on a Slack-style selector, you can stop a running agent straight
from Slack or Teams, long sessions load and stop faster, and a git access gap
for account members is closed.
Security
An account member could push to a project's main branch they had no rights
to. The git proxy checked a personal token against the member's account
role instead of their project role. It now checks the project role.
New
Pick a project from a Slack-style selector. /projects lists your
projects and opens them in place.
Stop a run from Slack or Teams. The live card has a Stop button, and
Teams also gets /stop. /status in Teams shows the current run and links
to it.
Bring your own Teams bot with a three-step setup wizard.
Review decisions carry a reason. Request changes in Slack or Teams and say
what should change.
Answer questions in Teams directly. The question card answers what was
actually asked, and a tapped answer keeps the question it answered.
Improved
Long sessions finish a turn and stop faster: ending a turn and pressing Stop no
longer re-read or re-write the whole conversation.
Saved history keeps loading older messages while the sandbox is down.
Members see only what they can change: session settings, the model picker and
the sandbox notice no longer show account-level controls they cannot use.
Members can open the Sessions page.
The notice about a project's previous repository is a dismissible card with
one clear update action, in plain language.
Fixed
A turn that ends by asking you something is no longer reported as "Task
complete" in Slack or Teams, and neither is a review still waiting on you.
A run you stopped on purpose no longer shows as "Run failed" in Teams.
A failed start is reported as a failure rather than going quiet.
A Teams review decision requires access to the project.
The Teams agent picker offers only agents you may run.
Teams cards no longer show Slack-style formatting.
A Teams conversation always shows its name, never a raw id.
kortix sessions reads a stopped session's saved transcript.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.27...v0.13.28
Release on GitHub →
v0.13.27 September 21, 2026 Sharing a provider key with a whole project is now something you choose
deliberately, and account roles can be changed from a group's member list.
New
Edit a person's account role from a group's member list. You no longer
have to leave the group to change what someone is.
Improved
A new API key or ChatGPT account is private by default. The Add dialog
opens with "Specific members" selected and you already on the list, so
sharing a key with everyone in the project is an explicit choice rather than
the default.
One place to pick provider keys for a session, and the choice saves.
Fixed
Sessions stay usable after the project's repository changes.
Every role assignment is checked against the owner ceiling, so an assignment
cannot grant more than the person making it holds.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.26...v0.13.27
Release on GitHub →
v0.13.26 September 21, 2026 Sessions now say exactly how a turn ended, signing in lands on a workspace
chooser instead of an auto-created project, and every member can mint their own
access token.
New
A turn tells you how it ended. Every turn carries one typed outcome, so a
failed turn reports the recorded cause instead of a blank row — and a turn you
stopped yourself is recorded as stopped, not as a failure. GET /turn lists
failed turns with the reason each one ended.
A workspace chooser on the way in. Signing in shows your workspaces and any
pending invites rather than silently creating a project for you. With no
workspaces yet, the chooser is the create form.
Every account member can mint and revoke their own personal access token.
It no longer takes an owner.
Teams asks with a card. The question tool renders a real card with inputs,
dropdowns and toggles behind one Submit, and replies in a group chat continue
the session without a mention.
Improved
The model picker collapses every provider group, and the zero-retention and
US-inference facts sit on one line instead of a banner.
An image sent to a channel never runs on a model the agent is not allowed to
use; the pin is checked per message rather than trusted from the catalog.
Deleting a project from Settings redirects instead of leaving you on a dead
page.
Resuming a session keeps the repository workspaces it had before.
Fixed
A failed turn with no named cause now says it stopped, rather than showing
nothing.
The stale-turn sweep aborts the runtime turn, not just its card.
An unresolvable agent grant now fails closed for codex models instead of
quietly picking a model the agent may not use.
An unowned conversation returns "not found" rather than "forbidden", so it
cannot be used to probe what exists.
A form field id containing a comma is rejected.
An audit entry for the new account-invites route renders with a readable
label.
Release publishing no longer depends on the npm registry: a registry failure
can no longer cost a release its tag, its downloads or its changelog entry,
and the release refuses to publish with missing downloads.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.25...v0.13.26
Release on GitHub →
v0.13.25 September 21, 2026 Kortix now runs in Microsoft Teams and in your terminal, a kortix.yaml can be
split across files, every managed model accepts images, and sandbox compute is
metered correctly on free and trial accounts.
New
Kortix in the terminal (experimental). kortix tui opens a full terminal
client: sidebar with accounts, projects and grouped sessions; session
transcript with tool cards and interactive prompts; a composer with a command
palette and model, effort and agent pickers; Files, Review, Apps and Customize
screens; an embedded terminal; and opencode attach mode. It installs its own
binary on first run, so the CLI stays small.
Microsoft Teams. Run an agent from a channel, a group chat, or a direct
message. Thread replies continue the same session without a new mention.
Files work both ways: inline images reach the agent, and results upload to the
team drive with a link back. Join policies (open, owner-approval, owner-only)
match Slack, with an Approve/Deny card and /policy. When a tenant has several
projects and nothing is bound yet, Teams asks which project to use and replays
the message you already sent. The agent's markdown renders as card elements —
headings, tables, bold, monospace code — with step source citations.
Split a kortix.yaml across files. An imports: list pulls agents,
connectors and triggers in from other files, and every connector and agent
records which file declared it. The CLI, the manifest reference and the
scheduling docs all understand it.
Replace a project's repository. Point an existing project at a different
repository, authorized per repository rather than per account.
Every managed Kortix model now accepts images. The lineup moved to the
Morph catalog with Kimi K3 and GLM Flash, plus text-only DeepSeek V4 Pro.
Text-only models are hidden rather than offered and then refused.
Model pricing and data handling are visible before you pick. The model
manager shows each managed model's modalities, its zero-retention status, and
which connected account pays. Regional options cover US-only and EU inference,
with the retention terms stated.
Improved
Session transcripts stay complete. A session accepts messages while its
transcript history starts the runtime, so you are not waiting on a sandbox to
type.
Attachments are stored before the sandbox starts, so a file sent with the
first message is still there when the agent reads it. Older sessions recover
attachments that previous versions could not read back.
Teams replies post faster: the live card goes up before identity resolution,
and the webhook acknowledges before dispatch.
Provider keys keep your draft while saving, and the provider list collapses to
a count so the managed set stays in view.
Group and member pages stay current after a directory update, and attaching a
group to a project now grants its agents.
Deployments report why a rollout failed instead of only that it timed out, and
a container starts faster.
Fixed
Sandbox compute is metered on free and trial accounts. It was not, so
usage on those accounts went unbilled.
Starting a session, sending a prompt and waking an App no longer debit a
cent each. Those actions placed a charge they should never have placed.
Adding a tool authorizes the project's account, not the clicker's. The
connection was being created as a private one owned by whoever clicked, so
nobody else — and no scheduled run — could use it, while the UI reported it
connected.
A prompt sent before the model catalog finished loading was dropped. It is now
held and sent.
The model picker spun forever for every project member, and for a project with
no id.
A sent message came back as the project-home draft.
The session sidebar reordered itself while you were reading it.
An idle session's Files panel showed a permanent spinner instead of its files.
The Teams source filter crashed the project page.
Removing an attachment whose upload was still starting left it behind for a
day and counted against the attachment limit.
Sessions resumed after a pause no longer fail on stale provider credentials.
Repository controls stay visible and readable at the minimum window size, and
the replacement flow is fully translated.
Teams session titles, sidebar entries and channel cards no longer show raw
<at> mention markup.
A Teams turn that died mid-flight no longer wedges the conversation.
Bot tokens are sent only to Bot Framework attachment hosts, and a team-drive
upload is authorized against the conversation it belongs to.
An out-of-range attachment part now reports "not found" instead of "not
active", so a caller can tell a permanent error from a temporary one.
An emptied imported collection stays an empty list rather than becoming an
empty object.
projects upgrade in the CLI now prompts with the same wording as the
dashboard.
Release on GitHub →
v0.13.24 September 18, 2026 New
A second agent harness, behind a flag. pi (pi-agent-core) now runs in-process in the sandbox alongside OpenCode, selected per project by the pi_harness feature flag. It implements abort-after-tool so Quick Queue can stop a turn at a tool boundary, and it enforces the same per-pattern permission rules OpenCode applies. Off unless a project opts in, so nothing changes for existing projects.
Improved
The pi_harness setting reads correctly in all nine languages.
Internal: the sandbox daemon's timing budgets now tolerate a slow machine during a process respawn, so a correct restart is no longer reported as a failure.
Fixed
Restored the load-balancer response-time alarms required by the Drata DCF-86 control.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.23...v0.13.24
Release on GitHub →
v0.13.23 September 17, 2026 New
Choose which account a connector runs as, per call. A connection now carries the accounts you may run it as, and the account is chosen when the connector is called rather than pinned to the whole session. The connector catalog, the SDK and the CLI all report the available accounts and the pinned default, and connectors/describe shows accounts instead of only tool counts.
An ambiguous connector call is refused, not guessed. When several accounts are reachable and none is named or pinned as default, the call is denied with account_required instead of silently picking one — no more mail sent from the wrong mailbox.
Choosing a connector account is discoverable in the CLI rather than a dead end.
Improved
A connector you have your own accounts for reads as connected , not "needs setup", and the admin connector list now agrees with what each caller can actually reach.
Connector accounts are per connection instead of a connector-level strategy, and connections the old strategy flag made unreachable are revoked.
The sandbox daemon's internals were reorganised behind explicit service boundaries, with its HTTP controllers separated from its adapters.
Fixed
A failed identity check no longer signs you out. A failed getUser round trip used to end the browser session; it no longer does, and the new-connection screen offers Upgrade when you are at the project cap.
Connector authorization: finalizing a connection that the whole project can use now requires the connections-manage capability, matching the gate the connect step already applied. Previously a role with connector-write but not connections-manage could complete a project-wide shared connection.
Auto-created connections no longer claim to be the default, and the CLI's account column no longer truncates away the pinned-default marker.
Stale connector banner copy and a dead connector detail shell removed; the account list renders for every direct provider.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.22...v0.13.23
Release on GitHub →
v0.13.22 September 17, 2026 New
Private provider key pools. Bring several keys for one provider, keep them private or share them with named members, and let each session hold its own key. Sessions fail over to the next key and report the earliest retry time when a pool is exhausted. Gemini and ChatGPT keys pool too, and pooled keys are managed in Models. Pool access is bound to the session owner, and a pool is checked against the model you actually picked.
Print a whole conversation. Cmd+P prints the full session as a clean document — every message, not one clipped screen of the app.
Queued prompts you can see and edit. Queued messages show in a list above the composer. Press Up to edit the last one, and Resume picks the queue back up.
Microsoft Teams install reports what happened. One-click install publishes in the background, lands on Channels with a real status, and offers a retry with the actual reason when publishing fails.
Astra is available as a ChatGPT subscription model.
Improved
Faster project boot. New sessions fetch the project from storage instead of cloning it, and start sooner.
Faster session lists. A project's session list is now a page, not the whole inventory.
Menus open instantly — menus, popovers, tooltips and the command palette no longer wait to appear.
Smaller sandbox images , which start faster.
Git connections are organized per account, with one instance backend and an identity that cannot drift. Verifying with GitHub no longer signs you out, and the new-connection screen always has a way out.
Fixed
Microsoft Entra directory sync. Patches apply atomically, large directories paginate, groups survive while a user is inactive or a sign-in session is stale, deactivation and single-member removal behave correctly, and users resolve across the whole directory.
The gateway retries a slow internal call instead of answering "Gateway unavailable".
Composer drafts survive session startup , and opening session settings no longer closes itself while the composer takes focus.
One session lifecycle drain at a time per API task, so queued work is not claimed twice.
Session attachments are more reliable, and model prices show correctly in the ChatGPT picker.
Security hardening across session cursors, webhook signing keys, and the remaining high-severity scanner findings.
Database migrations apply cleanly on staging and production.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.21...v0.13.22
Release on GitHub →
v0.13.21 September 17, 2026 New
Print a whole conversation. Cmd+P prints the full session as a clean document — every message, not one clipped screen of the app.
Queued prompts you can see and edit. Queued messages show in a list above the composer. Press Up to edit the last one, and Resume picks the queue back up reliably.
Private provider connection pools. Bring several keys for one provider, keep them private or share them with named members, and let a session hold its own key. Sessions fail over to the next key and report the earliest retry time when a pool is exhausted. Gemini and ChatGPT keys pool too, and pooled keys are managed in Models.
Astra is available as a ChatGPT subscription model.
Improved
Faster project boot. New sessions fetch the project from storage instead of cloning it, and start sooner.
Faster session lists. A project's session list is now a page, not the whole inventory.
Menus open instantly. Menus, popovers, tooltips and the command palette no longer wait to appear.
Smaller sandbox images , which start faster.
Git connections are now organized per account, with one instance backend and an identity that cannot drift.
Fixed
Microsoft Entra directory sync. Patches apply atomically, large directories paginate, groups survive while a user is inactive or a sign-in session is stale, deactivation and single-member removal behave correctly, and users resolve across the whole directory.
The gateway retries a slow internal call instead of answering "Gateway unavailable".
Composer drafts survive session startup , and opening session settings no longer closes itself while the composer takes focus.
Session attachments are more reliable.
Model prices show correctly in the ChatGPT picker.
Security hardening across session cursors, webhook signing keys, and the remaining high-severity scanner findings.
Database migrations now apply cleanly on staging and production.
What's Changed
feat(sandbox): bake rg, fd, bat, jq, fzf and a shell tool floor into every image by @markokraemer in https://github.com/kortix-ai/suna/pull/7264
refactor(sandbox): remove the fast cold boot image, its flag, and the experiments it gated by @markokraemer in https://github.com/kortix-ai/suna/pull/7268
test(release): dismiss the welcome card before Save in the repository-access journey by @markokraemer in https://github.com/kortix-ai/suna/pull/7276
fix(cli): connectors apps searches the Composio toolkit catalog by @markokraemer in https://github.com/kortix-ai/suna/pull/7277
feat(project-snapshot): S3 boot acquires the project 3.5× faster than Git (307 vs 1,078 ms) and boots 0.8 s sooner — presign at create, no HEAD on the boot path, kortixd gated on OpenCode's "server listening" by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7242
fix: restore terminal recovery and keep message retries in their session by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7267
fix(usage): show zero cost for ChatGPT subscriptions by @markokraemer in https://github.com/kortix-ai/suna/pull/7278
chore(release): VERSION → 0.13.19 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7285
fix: refresh terminal provider credentials after sandbox resume by @markokraemer in https://github.com/kortix-ai/suna/pull/7286
fix(session): isolate optional connector failures and preserve prompt queue controls by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7265
chore(release): VERSION → 0.13.20 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7290
chore(release): staging VERSION → 0.13.20 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7291
fix(session): a queued prompt survives an unreachable runtime instead of being dead-lettered in 5 minutes by @markokraemer in https://github.com/kortix-ai/suna/pull/7289
chore(release): back-merge staging into main (resolved) by @markokraemer in https://github.com/kortix-ai/suna/pull/7294
chore(release): back-merge v0.13.18 release-gate fixes into main by @markokraemer in https://github.com/kortix-ai/suna/pull/7282
fix(sandbox): an image over the provider's snapshot ceiling is a permanent, user-fixable state — not "try again" by @markokraemer in https://github.com/kortix-ai/suna/pull/7293
feat(providers): reuse personal connections and subscription pools across projects by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7295
feat(providers): connect personal subscriptions and API keys across projects by @markokraemer in https://github.com/kortix-ai/suna/pull/7234
Fix Azure SCIM ingress, deactivation, and group synchronization by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7297
fix(web): pin every @tiptap package to 3.27.1 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7300
infra(dev): enable S3 Transfer Acceleration for project snapshots by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7299
Fix Azure SSO and SCIM lifecycle, membership, and profile synchronization by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7298
fix: harden session attachments by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7148
Fix SCIM sync for populated Entra default profile mappings by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7302
perf(web): open menus, popovers, tooltips and the command palette instantly by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7301
fix(security): clear the high-severity CodeQL and Trivy findings blocking the staging promote by @markokraemer in https://github.com/kortix-ai/suna/pull/7306
perf(sandbox): set modes at COPY time — a chmod/chown RUN was duplicating 290 MB into every image by @markokraemer in https://github.com/kortix-ai/suna/pull/7309
fix(security): the three remaining high CodeQL findings, and the prompt-delivery incident learnings by @markokraemer in https://github.com/kortix-ai/suna/pull/7310
perf(sessions): the project session list is a keyset page, not the whole inventory by @markokraemer in https://github.com/kortix-ai/suna/pull/7308
fix(security): a webhook signing key must never come from Math.random by @markokraemer in https://github.com/kortix-ai/suna/pull/7312
perf(sessions): the project session list is a keyset page, not the whole inventory by @markokraemer in https://github.com/kortix-ai/suna/pull/7314
fix(dev): load the baked Supabase images, and stop starting the two nothing uses by @markokraemer in https://github.com/kortix-ai/suna/pull/7313
Revert provider connection pooling and restore inline provider setup by @markokraemer in https://github.com/kortix-ai/suna/pull/7311
Merge staging into main: reconcile #7308/#7314 and repair the learnings register by @markokraemer in https://github.com/kortix-ai/suna/pull/7317
chore(release): VERSION → 0.13.21 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7322
chore(release): staging VERSION → 0.13.21 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7323
fix(models): restore ChatGPT picker reference prices by @markokraemer in https://github.com/kortix-ai/suna/pull/7320
release: main → staging (prompt-delivery fix + 22 commits) by @markokraemer in https://github.com/kortix-ai/suna/pull/7292
test(ci): fail the build on a committed git conflict marker by @markokraemer in https://github.com/kortix-ai/suna/pull/7318
fix(app): separate send and composer queue placement by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7304
fix(security): pin the GCM tag and nonce lengths when opening a session cursor by @markokraemer in https://github.com/kortix-ai/suna/pull/7315
refactor(git): one instance backend, account connections, env-immutable identity by @markokraemer in https://github.com/kortix-ai/suna/pull/7321
fix(gateway): retry a slow control-plane call instead of serving "Gateway unavailable" by @markokraemer in https://github.com/kortix-ai/suna/pull/7325
feat(session): Cmd+P prints the whole conversation as a document by @markokraemer in https://github.com/kortix-ai/suna/pull/7329
Allow explicitly granted agent sessions to self merge CRs by @markokraemer in https://github.com/kortix-ai/suna/pull/7324
Promote main to staging by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7333
fix(db): release the early-applied keyset index so staging and prod can migrate by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7334
Promote main to staging (migration order fix) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7335
Add feature-flagged provider secret resources and session pools by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7331
Pooled provider connections with per-user ChatGPT accounts by @markokraemer in https://github.com/kortix-ai/suna/pull/7319
fix(api): copy the early-applied migration repair into the API image by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7338
fix(api): copy the early-applied migration repair into the API image (staging) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7339
Release candidate: main → staging (0.13.21) by @markokraemer in https://github.com/kortix-ai/suna/pull/7340
Release v0.13.21 — Print whole conversations, Entra SCIM fixes, and faster project boot by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7336
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.20...v0.13.21
Read the full release on GitHub →
v0.13.20 September 16, 2026 Fixed
Projects with thousands of sessions no longer slow the app down. The session list now loads one page at a time — 50 sessions, with a Load more control — instead of returning every session on every refresh. On a project with 12,617 sessions that is a 46 KB response instead of about 11 MB, and the sidebar was refreshing it every five seconds.
Opening, sharing, stopping, restarting or renaming a session now works however old the session is. These controls used to look the session up in the full list, so once a project grew past the first page the controls could quietly disappear.
Improved
Date grouping (Today, This week, Older), filters and search work as before, applied to the sessions you have loaded.
A new database index serves the paged list, so a request no longer sorts every session in the project.
Security
The pagination cursor is encrypted and tied to both the project and the person viewing it. It cannot reveal a session they are not allowed to open, and it cannot be reused by anyone else.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.19...v0.13.20
Release on GitHub →
v0.13.19 September 16, 2026
Fix terminal connections that fail after a sandbox resumes because its provider credentials have changed.
Refresh rejected provider credentials once for reads and discard stale credentials after a failed WebSocket handshake.
Preserve application redirects and sandbox authentication errors. Do not replay writes when provider authentication fails.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.18...v0.13.19
Release on GitHub →
v0.13.18 September 16, 2026 Fixed
Terminal opens on a stopped workspace. Opening Terminal requests a wake even before the first shell exists. Connection retries have a deadline and preserve shell output.
Session switches keep message retries in the right workspace. Missing conversations stop repeated 404 or 410 requests without clearing cached history.
Sessions keep their own agent. A session could be switched to an agent from a different project after a prompt that named no agent, which removed its access to connectors and the Kortix CLI. Every session now always runs as its own agent, and a session that was affected recovers on its next message.
The first message on the home screen no longer gets stuck in the composer after a slow start.
Project pages load cleanly. The project home shows the Kortix mark while it loads instead of a flashing placeholder.
Session history is saved before a session stops , and responses from the in-sandbox model proxy are no longer returned in a corrupted encoding.
Admin project list shows each project's own session counts.
Customize settings show what you saved. After saving an agent or connector setting, a reload could show the previous value for up to a minute.
Improved
Connector activity uses consistent names. Connector calls appear as connector calls.
Repository access is explicit. Agents now declare whether a session gets the project's files, replacing the older workspace modes. Older API clients keep reading restricted manifests correctly.
Previews route correctly and set up shared sandboxes in isolation.
Release checks are more reliable : preview environments use their own database, confirm the running runtime, and wait for completed agent artifacts before asserting on them. They also verify cold terminal wake and session-switch routing, allocate sufficient preview frontend memory, and check Docker readiness.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.17...v0.13.18
Release on GitHub →
v0.13.17 September 15, 2026 Fixed
Previews open again when you are signed in. A sandbox preview opened from a session (prod-p<port>-sbx-….p.kortix.com) showed "Sign in to open this preview" even though you were signed in. Sign-in tokens are still issued with the older HS256 signature while the published key set already holds the newer ES256 key. The API already verified those tokens with the auth server, but the preview gate refused them. It now makes the same check, so the preview panel, pasted preview links, and preview WebSockets open for the account that owns the sandbox. A forged or expired token is still refused, and a test now fails if any verifier caller handles these results in its own way.
Internal
The release gate quarantines TUN-6 on deployed targets only: Bun's WebSocket client sends no User-Agent, so the edge firewall refuses the tunnel handshake on staging and prod. The flow still runs locally.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.16...v0.13.17
Release on GitHub →
v0.13.16 September 15, 2026 New
Project-level provider and model access controls. Owners and admins choose which model providers and which models a project may use, from one model management view that also holds provider links. Kortix managed models sit beside your own providers in the same list, a ChatGPT subscription shows its access beside its credentials, and the picker distinguishes "not shown" from "blocked" so a member sees why a model is unavailable.
GPT-6 Astra is in the managed catalog. Select kortix/gpt-6-astra with image input, tools, and the supported reasoning efforts. Routing, prices, capability limits, and sandbox fallbacks are all in step.
The desktop app always has a way out. The shell has no browser toolbar, so a page without an in-app exit was a dead end. Every such page now has Close, the Go menu has Back (Cmd/Ctrl+[) and Home (Cmd/Ctrl+Shift+H), a renderer crash offers Reload or Go Home instead of an empty window, and the Electron route allowlist now matches the web middleware's exactly.
Improved
One noun: project. The interface said "workspace" while the SDK, CLI, API, routes, manifest, and docs all said "project". Screen copy now says project in every one of the nine languages, each with its own word rather than a find-and-replace. The sandbox /workspace directory, the manifest's per-agent workspace: boundary, and Slack workspaces keep their names.
Create a project in a specific account. The Switch project menu, already grouped by account, gains a "Create a project in {account}" row for each account where you are an owner or admin, including accounts that have no projects yet. The old global link never said which account it would land in.
The SSO and SCIM setup wizards work again. Picking a provider did nothing, and Back or the step rail snapped you to the first step with a render loop in the console. Both are fixed, and a browser journey now walks every step of both wizards on every deploy.
Tunnel file transfers are verified end to end. Binary files sent through the Computer Tunnel are checked by digest at the destination, an approval for one exact file no longer grants its parent directory, permission decisions are serialized so an approve and a deny cannot both win, and orphaned upload tasks are stopped.
Fixed
The sandbox model proxy asked upstream for compressed responses and could not decode them. It now requests identity encoding, so a session on a model that answered with zstd no longer fails its first turn.
Internal
Project snapshot config provider v2 (S3). Sessions can boot from a prebuilt, blob-less snapshot of the project's committed tree with the history hydrated off the boot path, falling back to Git when no snapshot is ready. Every environment gets a private snapshot bucket and the task-role grant; only staging names its bucket, so production sessions keep the Git path until the in-region measurement lands.
The project-snapshot task role gets s3:ListBucket, so a missing object is a 404 and not a denied build, and the grant is gated on a plan-time boolean so terraform plan succeeds on a root that creates the bucket in the same apply.
The deployed release gate's contracts were corrected for previews: marketing stays enabled while the browser gate exercises /pricing, App domains are not expected on a sandbox origin, cold Daytona boots get a budget above their measured image builds, encoded-path probes accept the exact auth redirect, and the project submenu is required before a row is selected.
The connector connection-flow routing change (#7074) was merged and reverted within the same window; it ships no behavior.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.15...v0.13.16
Release on GitHub →
v0.13.15 September 15, 2026 New
Review Center is on for every project. It is no longer behind a feature flag — the routes, registry, contract, web surfaces, CLI, and docs all ship it by default.
A public App can recognise you. public used to mean both "anyone with the link may open this" and "nobody is ever recognised". Now an App you share outside your company still greets your own team, shows them the controls a visitor should not see, and records who acted.
Improved
Creating an account is reachable again, and it lands you in the account you created. The control had no live entry point, and the one path that reached it dropped you back where you started. There is now a "Create an account…" row in the workspace switcher, and creating an account opens its first workspace with that account selected.
Connector categories show their true size. The catalogue counted one page of results and headed every category with "· 1". Categories are now grouped over the complete catalogue on the server, and "View all" filters to the set its heading counted.
Secret intake forms read better. Field hints written by an agent become real links, every non-form step shares one status notice, and the header no longer runs under the close button.
Modals opened over modals stack correctly. A modal opened while another was open could render underneath it; it now takes the layer above, and the switch control meets contrast in both themes.
Session hover cards line up. Sessions carrying a Slack, schedule, or shared marker opened their card inset from the sidebar edge; every row now anchors at the same place.
Fixed
Sending a message no longer makes the transcript jump twice. An idle send moved the view down and then glided it back. The send is now recognised as the working turn, so the view moves once.
Internal
4xx denials are logged as warnings, not errors. Roughly 43% of production error-level lines were expected denials — expired tokens, a project-scoped token refused a cross-project read, an agent missing a grant — which buried real faults. Severity now follows the status class; the lines stay queryable and Sentry behaviour is unchanged.
A dropped audit batch now says why. The log recorded the whole failing statement plus its bound parameters — IP addresses, user agents, account and project ids — while hiding the SQLSTATE that distinguishes a transient timeout from a permanent constraint violation. It now reports the code and cause, with no statement text and no parameters.
A forced test exit raises a workflow annotation instead of a line buried in a 40,000-line CI log.
The staging deploy asserts the host-only access cookie from main, matching what staging already checked.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.14...v0.13.15
Release on GitHub →
v0.13.14 September 11, 2026 Fixed
Sandboxes cannot outlive their work. A session turn now has an absolute ceiling as well as a renewable one. Renewal asks whether a turn is still running, and a wedged turn answers "yes" forever, so a turn record past the ceiling is now settled instead of being renewed indefinitely and its sandbox is reclaimed. This one cause sat behind several classes of server error.
Fewer server errors when the database is busy. Connection-class and contention failures are now recognised as the temporary conditions they are and retried, instead of being reported as server faults.
Errors say what actually went wrong. A failure now carries its real cause rather than the message of whatever wrapped it, and how serious it is follows that cause. Ordinary customer state no longer looks like a platform failure, so real failures stop being buried.
A large unused database index is gone , removing its write cost from every audit record. It was 8.6 GB and had served no read in two and a half months.
One subscription dialog, in the right place. The upgrade dialog now renders above the deepest panel that opened it, so its controls stay reachable and screen readers can see it. Escape closes it and leaves account settings open.
Ordered lists size their gutter to the widest marker, so long lists no longer clip their numbers.
Desktop: the Back control sits correctly on sign-in screens.
New
Desktop asks which Kortix instance to use on first launch.
Internal
The test harness no longer loses a whole browser shard when a dev-server cache restore fails, and a finished test run now exits instead of hanging when something leaves a connection open. Both had turned passing runs into failed ones.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.13...v0.13.14
Release on GitHub →
v0.13.13 September 10, 2026 Fixed
Billing opens one subscription dialog from the account hub. Its controls remain accessible, and Escape closes the subscription dialog while keeping account settings open.
Session Git pushes honor explicit ref grants within the effective IAM role. Manager-authorized sessions can update shared branches; agent grants cannot elevate a member to manager ref authority.
Connectors keep working after a bad manifest read. A session no longer loses every connector when one read of kortix.yaml answers wrong. Each grant now records the manifest revision it came from; a grant read from the same revision or an older commit never replaces it, and an unreadable manifest keeps the last known grant. The channel that started a session (Slack, Teams, email) stays callable under any grant, so the agent can always report in its own thread.
Connector denials say why. connector_not_assigned now names the agent, its granted list, the manifest revision, and what to change. A declared connector with no credential answers connector_not_connected and lists as needs_auth. Composio connectors no longer show needs_auth while they are connected.
Slack progress is never silently dropped. slack step and slack send fail with a reason when a checkpoint or an answer does not reach the thread, instead of reporting success. A replayed idle event no longer closes a turn that just started. Button clicks carry the full turn instructions and never vanish without a trace.
Sessions: the waiting row and the Stop button stay accurate while a prompt is in flight.
Triggers: the manager override for reuse-mode prompt delivery works again.
Web: auth tokens are preserved during hydration and fenced before cross-user adoption, and project access waits for auth, so cold loads no longer show "This project didn't load".
Web: 18 toasts no longer render their own translation key; the template OG image route runs on Node and stops bundling every translation.
Desktop: navigation layout restored, with parity checks in the package gate.
Improved
Self-host operators can set KORTIX_FRONTEND_MEMORY_LIMIT to give the frontend more memory. The setting persists through CLI updates and affects only the frontend.
Account hub as a modal. Organization settings, members, groups, roles, identity, billing, and audit open over the page you are on instead of a separate route tree. The /accounts routes are gone; links resolve to ?accountId= on the current page, and Back, reload, and pasted links keep working.
Signing in paints one brand mark across the whole path to the project instead of four different loading frames.
Command palette: file search is offered only where it can run; the Open URL row and the Jump to message page are removed; the empty state no longer names a row that is not there.
Internal
Release fixtures follow the current connector tab and use a normal cancellation request. Test artifacts mask diagnostic credentials and upload only after the secret guard passes.
End-to-end flow GH-17 verifies member branch isolation and owner ref authority through real Git HTTP.
New end-to-end flow (CONN-27) covers session grant provenance, the channel guarantee, and honest denials, with preview harness support. Browser specs follow the account hub to its new URLs; spec 23 ignores CORS preflights.
Connector authorization tests mint credentials through the token API and close database connections after each run.
What's Changed
fix(session): keep the waiting row and Stop honest while a prompt is in flight by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7158
fix(web): template OG image route on Node runtime, no bundled translations (unblocks 0.13.12 staging/prod frontend deploy) by @markokraemer in https://github.com/kortix-ai/suna/pull/7165
test(e2e): spec 23 ignores the CORS preflight on every waitForResponse predicate by @markokraemer in https://github.com/kortix-ai/suna/pull/7170
chore(release): VERSION → 0.13.13 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7172
chore(release): staging VERSION → 0.13.13 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7173
fix(web): preserve valid auth during project loads by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7164
fix(triggers): restore manager override for reuse-mode prompt delivery by @agent-kortix in https://github.com/kortix-ai/suna/pull/7174
release: restore manager override for reuse-mode prompt delivery (heartbeat outage hotfix) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7176
fix(web): remove broken/dead command palette actions by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7175
feat(web): delete the /accounts routes, make the account hub a modal by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7177
fix(desktop): restore navigation layout and require parity checks by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7178
Paint one brand mark across the whole sign-in to project path by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7179
fix(connectors,slack): grant provenance, channel guarantee, honest denials and relays by @markokraemer in https://github.com/kortix-ai/suna/pull/7181
release: main → staging (connector gateway grant provenance, Slack relay honesty, account hub modal, desktop parity) by @markokraemer in https://github.com/kortix-ai/suna/pull/7182
fix(git-proxy): surface session agent grant so ref-scope widen works by @agent-kortix in https://github.com/kortix-ai/suna/pull/7185
Promote main to staging with the session Git authorization fix by @markokraemer in https://github.com/kortix-ai/suna/pull/7190
test(git-proxy): run session role checks without a CI signing secret by @markokraemer in https://github.com/kortix-ai/suna/pull/7195
fix(billing): keep the account subscription dialog accessible by @markokraemer in https://github.com/kortix-ai/suna/pull/7198
fix: verify release flows and persist self-host frontend memory by @markokraemer in https://github.com/kortix-ai/suna/pull/7202
fix: close connector test database connections and mint portable credentials by @markokraemer in https://github.com/kortix-ai/suna/pull/7204
Release v0.13.13 — Reliable connector access, account settings, and session Git permissions by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7183
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.12...v0.13.13
Read the full release on GitHub →
v0.13.12 September 8, 2026 New
Every supported language now has complete translations across settings, onboarding, project home and sidebar, sessions, password recovery, sign-in, and workspace administration. Serbian is a new locale. 241 entries that rendered as placeholders now show real text.
Headless auth: multi-factor enrolment, enterprise SSO, and profile updates are available through the API and the SDK (PATCH /v1/auth/user, KortixSession.subscribe as the replacement for onAuthStateChange).
Kortix Apps: one identity guard for every App (createKortixAppGuard, groups always populated), and an embedded App can complete its own sign-in (cookieSameSite).
Session brief: hover a session to see its summary.
Improved
Connector catalogue: one-letter searches work, cache entries are compared by identity, and panel padding and search were corrected.
Markdown code blocks inside lists are inset correctly.
Slack and Teams: a live run keeps its thread after 15 quiet minutes.
Triggers: a billing-rejected fire is terminal and keeps its reason code; a reuse, keyed, or pinned delivery handoff is recorded as fired.
Fixed
Project creation: a failure while creating the managed repository is now logged with its cause. The edge router in front of the API is deployed with every release, so an origin error is never shown as a maintenance page. The managed-git token is verified by creating and deleting a probe repository before it is stored, and the status endpoint reports which credential is in use.
Connector endpoints must be https on a public host. An invalid endpoint answers 400 instead of failing as a server error.
Session attachments are reliable again.
Kortix Apps: the App guard's trailing-slash handling could take seconds on one config string; the viewer secret is resolved per request; the access picker no longer promises options the code does not offer.
MFA unenrol route typechecks (gotrue() accepts DELETE).
Internal
Template preview images (/api/og/template) render on the Node runtime with their strings inlined; as an Edge Function the route had grown past Vercel's size limit.
Preview environments: Node repaired in persistent sandboxes, failed Platinum templates recover, an explicit Daytona fallback, all runtime secrets forwarded, Node engine floor raised, translations kept out of the edge middleware bundle.
Release gate: follows the deployed test contracts, installs with engine-strict relaxed, verifies the host-only access cookie.
Route manifest and audit route registry regenerated; the headless auth routes are registered and allowlisted with reasons.
pi-js-router: open_access is the operator's override and the workflow honours it.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.11...v0.13.12
Release on GitHub →
v0.13.11 September 6, 2026 Billing
No account runs on an empty wallet. Paid per-seat and credit-plan accounts used to keep spending past $0 with no floor; one six-seat account settled $588.81 against a $150 monthly grant with the wallet at $0.00. Every account now stops at the same floor before new work starts.
Work that already ran is always recorded. A settlement that the wallet could not cover used to be refused, which deleted the record of the spend and left "Spent this period" frozen while compute kept running. The ledger now records the overdraft, and the account stays blocked until it is topped up.
Wallet alerts agree with the server. Every wallet alert and billing string in the app now reads the account's billing state, so the sidebar and the project page no longer disagree about whether you are out of credits.
Credits have their own tab in account settings, with the available balance and where it comes from. Plan keeps its own card.
Git and access
Push authority is scoped to who is pushing. A session credential can push only to its own branch. Pushing other refs and deleting refs are two new permissions, project.gitops.ref.any and project.gitops.ref.delete, held by the project manager role and grantable to agents from the agent editor, the CLI scope validator and the docs. Before this, any credential that could push at all could rewrite or delete any branch.
Deleting a branch checks the person's role , so a plain push right no longer deletes a colleague's branch.
GitHub reconnect is named, not failed. When a stored GitHub App installation stops minting tokens, the app tells you to reconnect instead of throwing an opaque error.
A project always has a manifest. Provisioning through the API seeds kortix.yaml by default, and kortix ship refuses to push a project that has none.
Signed-in identity is your own. The app no longer shows an account owner's email as the signed-in identity, and account lookups stay inside the account you are in.
Customize, agents and settings
Customize is built around the agent. Agents lead the Customize bar, and each agent is a full-page editor with a topic rail: People, Access pages for Skills, Connectors, Secrets and Project actions that reuse the catalog cards and modals, grant editing in place, and a Share button showing who has the agent.
Capability tabs live under /customize/<tab>. Old URLs redirect. Review is its own tab on the bar. The per-project config page is retired; its sections live in the settings overlay.
Settings is a full-screen shell with Workspace, Personal and Account groups. Security, Appearance, Notifications and Plan are separate tabs. Personal settings are called Preferences, the account Tokens tab is called API keys, and Mod+, opens the panel.
Review center is a full-width inbox with an inline review page, no modals.
A change request is a card in the turn that produced it, with a status that updates and a URL to share.
Admin console rebuilt on the app shell and the design system.
Project home and account hub extracted and tidied: hero column centred, composer band on the base surface, the workspace name throws confetti for every project and the icon only when you choose one.
Smaller fixes: sidebar active row paints again, info and warning banners are legible, managed repositories no longer read as unmanaged, triggers open in place, the Git repository section is its own settings section, and connector proposals get an <app>-<random> slug.
Docs and support
Docs moved to Blume. /docs is rebuilt on a new docs engine with a working favicon, a canonical origin, and no stray files in the published site. The credits guide lives at /docs/credits.
One support hub. /help merged into /support: contact channels, guides, FAQ, account deletion and legal in one place.
Sessions and runtime
Stop stays visible while a response streams , and the session reports busy for the whole turn.
Queued prompts keep their order and sync after a turn completes. Prompts sent during a live turn are forwarded instead of waiting.
Turn failures show the real message instead of a raw JSON body.
File tool rows use the right tense (wrote, edited, listed) instead of the tool's registry name.
The terminal no longer reconnects every 60 seconds. The PTY connection between the API and the sandbox was cut after a minute of silence; both legs are now kept alive.
Connecting a provider refreshes the model picker without a page reload.
Older sandboxes catch up. Boxes provisioned before the self-updating runtime receive the current daemon, OpenCode and CLI from the control plane, and the daemon re-detects the OpenCode binary after a restart. This revives sessions that went silent after the 2026-08-14 OpenCode message-id rollover.
Trigger status is truthful. Reuse, keyed and pinned trigger fires record fired on delivery instead of sitting at queued forever, dead-letters are visible, and a re-prompted session runs on the trigger's model.
CLI and desktop
kortix login works against dev and staging again. The web firewall was rejecting the localhost callback.
Desktop shows a sign-in dialog for the dev and staging HTTP Basic gate, with an option to remember the credential on the device.
pnpm worktree nuke stops on a failed removal instead of reporting success and orphaning the worktree.
Reliability
Audit reconciliation writes use the isolated audit pool , so an audit lock convoy cannot starve the gateway's auth queries.
Preview environments heal themselves. Disk is pruned, a failed deploy keeps the last good stack, and the environment is named in words rather than by hostname. The JS pi agent has a stable name on Platinum dev.
Under the hood
@kortix/sdk root entry is canonical. The root, ./react and ./server are the real entries; the 20 legacy subpaths remain as shims until the next major.
One resolved next version across the workspace (16.3.3), with a test that fails the build if the lockfile ever resolves two. Three consecutive dev deploys had died at boot on Cannot find module 'next'.
Web tests run isolated , so a partial module mock cannot leak across files.
Production has its own managed-git token , separate from staging, and the secrets exception list was cleaned.
Two database migrations: the two git ref permissions (4 catalog rows) and a settlement function that records overdrafts. Neither touches user data at volume.
What's Changed
chore(release): VERSION → 0.13.10 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7057
fix(session): report file tool rows in the tense they are actually in by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7059
fix(projects): a project always has a manifest — seeding is the default, not an opt-in by @markokraemer in https://github.com/kortix-ai/suna/pull/7047
fix: a provider connect refreshes the model picker without a hard refresh (+ isolate apps/web tests) by @markokraemer in https://github.com/kortix-ai/suna/pull/7049
fix(worktree): a failed git worktree remove aborts the nuke instead of orphaning the worktree by @markokraemer in https://github.com/kortix-ai/suna/pull/7052
fix(api): route audit reconciliation writes through the isolated audit pool by @agent-kortix in https://github.com/kortix-ai/suna/pull/7060
fix(terminal): keep the PTY WebSocket alive — it was cut every 60s by @markokraemer in https://github.com/kortix-ai/suna/pull/7062
fix(web,api): close the cross-account identity boundary by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7065
Sidebar and menu polish, Next 16.3.3 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7067
sdk: make the root entry canonical in fact, not just in prose by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7068
feat(web): a change request now has a card, a status, and a URL by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7069
fix(gateway): drop gpt-5.6-sol from the ChatGPT codex lineup by @agent-kortix in https://github.com/kortix-ai/suna/pull/7071
chore(secrets): production gets its own managed-git PAT; drop the Aster orphan by @markokraemer in https://github.com/kortix-ai/suna/pull/7063
fix(deps): one resolved next version — dev frontend image died at boot by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7070
revert(gateway): restore gpt-5.6-sol to the codex lineup by @agent-kortix in https://github.com/kortix-ai/suna/pull/7075
feat(git): tell people when GitHub needs reconnecting, instead of failing by @markokraemer in https://github.com/kortix-ai/suna/pull/7072
fix(ci): resolve API image CVE-2026-56854 scan failure by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7076
chore(secrets): report file-only exceptions that excuse nothing, and drop four by @markokraemer in https://github.com/kortix-ai/suna/pull/7078
Account hub and project home extraction, loader simplification, composer fixes by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7077
Scope git push authority to the pushing principal by @markokraemer in https://github.com/kortix-ai/suna/pull/7073
Throw confetti only for a chosen icon, never for the initial by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7079
billing: hard-block at zero — remove the wallet-floor bypass, stop losing spend by @markokraemer in https://github.com/kortix-ai/suna/pull/7080
web: flatten the composer and project-home band onto the base surface by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7087
enh(web): full-screen shell, re-segmented rail, config page retired by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7086
Converge legacy sandbox runtimes from the control plane (OpenCode id-wrap victims) by @markokraemer in https://github.com/kortix-ai/suna/pull/7088
settings: bind Mod+, to the panel it opens, and print it where it acts by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7093
triggers: settle reuse-mode fire runtime status on delivery/dead-letter by @agent-kortix in https://github.com/kortix-ai/suna/pull/7094
fix(maintenance): stop a failed Edge Config read from locking production by @kubet in https://github.com/kortix-ai/suna/pull/7095
session errors: unwrap serialized bodies in the SDK, rebuild the banner on Item by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7096
chore(release): VERSION → 0.13.11 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7099
chore(release): staging VERSION → 0.13.11 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7100
review center: full-width inbox, inline review page, no modals by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7104
settings: split Credits out of Plan, give Plan its own card by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7105
Ask a person's role before letting them delete a branch by @markokraemer in https://github.com/kortix-ai/suna/pull/7107
feat(web): one support hub at /support, credits guide moved to /docs/credits by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7061
fix(cli): kortix login could not complete against dev or staging by @markokraemer in https://github.com/kortix-ai/suna/pull/7082
enh(web): admin console redesign by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7108
Customize: agent-centric editor, /customize/ routes, access + roles, preferences by @markokraemer in https://github.com/kortix-ai/suna/pull/7083
project home: workspace name throws confetti for every project again by @markokraemer in https://github.com/kortix-ai/suna/pull/7110
fix(session): synchronize queued prompts after turn completion by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7103
feat(desktop): sign-in dialog for the dev/staging HTTP Basic gate by @markokraemer in https://github.com/kortix-ai/suna/pull/7111
project home: hero column dead centre again by @markokraemer in https://github.com/kortix-ai/suna/pull/7112
fix(preview): a branch environment heals itself, and a failed deploy keeps the last good stack by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7114
docs(learnings): the Caddyfile and overlay come from the branch checkout, not main by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7115
Fix session busy status during response streaming by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7118
docs: move /docs from fumadocs to Blume by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7121
fix(triggers): record a reuse/keyed/pinned delivery handoff as fired, not queued by @agent-kortix in https://github.com/kortix-ai/suna/pull/7124
fix(docker): keep the built docs site in the image context by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7122
fix(docs): stop the docs header printing Kortix twice in dark mode by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7126
fix(docs): restore the docs favicon and set the canonical origin by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7128
fix(triggers): record a reuse/keyed/pinned delivery handoff as fired, not queued (staging hotfix) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7129
infra: pi-js.kortix.com — a stable name for the JS pi agent on Platinum dev by @kubet in https://github.com/kortix-ai/suna/pull/7125
ci(pi-js-router): read its tokens from the pi-js environment by @kubet in https://github.com/kortix-ai/suna/pull/7130
Promote main 37c161b637 to staging (0.13.11 release candidate) by @markokraemer in https://github.com/kortix-ai/suna/pull/7131
staging: verify the host-only access cookie (cherry-pick of #7137) by @markokraemer in https://github.com/kortix-ai/suna/pull/7138
staging: relax engine-strict on the release gate install (cherry-pick of dbd11d2151, #7137) by @markokraemer in https://github.com/kortix-ai/suna/pull/7140
staging: release-gate tests follow the deployed contracts main changed (cherry-pick of 8e518e3f52, #7137) by @markokraemer in https://github.com/kortix-ai/suna/pull/7141
Release v0.13.11 — Billing wallet floor, scoped git push, and an agent-centric Customize by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7139
New Contributors
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.10...v0.13.11
Read the full release on GitHub →
v0.13.10 September 2, 2026 Fixed
"Kortix is temporarily unavailable" when nothing was wrong. A single failed read of the maintenance flag was treated as a decision to lock the platform down. The API then rejected every write and showed that message to everyone using Kortix, with no one having touched the maintenance setting. An unreadable flag now means normal operation. Maintenance mode is only ever an explicit action, and a real one still holds while the flag store is briefly unreachable.
Being sent to the maintenance page after one failed status check. A momentary network problem in the browser was enough to navigate you out of a working session. It no longer is.
Security
Updated the SSH library bundled in our app runtime past CVE-2026-56854, an authentication bypass caused by source-address restrictions not being enforced (golang.org/x/crypto 0.53.0 to 0.55.0).
Internal
Two browser errors that were never Kortix defects — one thrown by a browser extension, one by the graphics library behind our background visuals — no longer report as product errors in our monitoring.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.9...v0.13.10
Release on GitHub →
v0.13.9 August 30, 2026 Fix the @kortix/sdk React entry point in fresh npm consumers. Declare the llm-catalog publish tool directly so isolated npm publishing succeeds. Refresh a stale trigger manifest once on a cache miss, with a per-project cooldown, so trigger fire converges across API replicas.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.7...v0.13.9
Release on GitHub →
v0.13.7 August 29, 2026 Highlights
Add Sign in with Kortix OAuth 2.1 flows, headless authentication, and app viewer tokens.
Add enterprise organization branding for logos, icons, favicons, and product names.
Improve session startup, auto-resume, streaming, queue state, transcript mirrors, terminal cards, and stopped-session recovery.
Restore GitHub repository sources on workspace creation and correct People with access visibility.
Add GLM 5.3 Flash and remove retired AsterLab and GLM 5.2 routes.
Improve secrets, connectors, Slack routing, sandbox lifecycle, preview durability, and provider failover.
Allow registered OAuth loopback redirects through the WAF while preserving API redirect validation.
Release validation
Staging SHA: 309e0afe1ce19a5674d137e749d8a6511576f2f5
Build Staging Artifacts: 33258635866
Deploy Staging: 33258801944
Full release QA: 33259390663
What's Changed
fix(compliance): retire ALB TargetResponseTime alarms; reconciler deletes stale + legacy duplicates by @markokraemer in https://github.com/kortix-ai/suna/pull/6919
fix(api,sdk): readiness clocks die with their attempt; a stopped queue re-delivers exactly once by @markokraemer in https://github.com/kortix-ai/suna/pull/6920
fix(compliance): grant DescribeTargetGroups to the ALB alarm reconciler; alarm on reconciler errors by @markokraemer in https://github.com/kortix-ai/suna/pull/6921
fix(web): the command palette can switch workspaces by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6922
feat: compile OpenCode boot artifacts by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6871
ci(release-gate): pin pnpm/action-setup@v4 in the browser shard (v6 on Blacksmith runs pnpm on bundled Node 18.5.0) by @markokraemer in https://github.com/kortix-ai/suna/pull/6925
test(ke2e): re-quarantine SESS-23 — stop→wake still 503s on the first post-wake read (gate run 32992496089) by @markokraemer in https://github.com/kortix-ai/suna/pull/6927
test(ke2e): quarantine CONN-26 — real-agent Composio flow never passed a deployed gate (run 32992496089) by @markokraemer in https://github.com/kortix-ai/suna/pull/6929
docs(learnings): a release-gate flow is added or un-quarantined only with its green deployed run by @markokraemer in https://github.com/kortix-ai/suna/pull/6931
fix(sandbox,triggers): make provider failover reachable + jitter fleet crons by @kubet in https://github.com/kortix-ai/suna/pull/6932
fix(tests): keep the Vercel bypass storage state (_vercel_jwt) out of uploaded CI artifacts by @markokraemer in https://github.com/kortix-ai/suna/pull/6933
docs(learnings): a never-fired guard is untested; an artifact upload path is a publish path by @markokraemer in https://github.com/kortix-ai/suna/pull/6935
test(e2e): quarantine the Composio Gmail Connect-Link browser journey (unauthorized runtime skip fails the gate) by @markokraemer in https://github.com/kortix-ai/suna/pull/6936
fix(web): Apps gallery is a 4:5 container-query grid, no size control by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6939
fix(release): pin npm@^11.5.1 in publish-npm-package.sh (npm@12 breaks prod npm publishes on node 22.22.0) by @markokraemer in https://github.com/kortix-ai/suna/pull/6940
chore(release): VERSION → 0.13.7 [skip ci] by @markokraemer in https://github.com/kortix-ai/suna/pull/6941
chore(release): staging VERSION → 0.13.7 [skip ci] by @markokraemer in https://github.com/kortix-ai/suna/pull/6942
docs(learnings): npm-publish failure silently strips the release record from a shipped prod deploy by @markokraemer in https://github.com/kortix-ai/suna/pull/6943
feat(auth): Sign in with Kortix + headless /v1/auth — the SDK owns third-party auth end to end by @markokraemer in https://github.com/kortix-ai/suna/pull/6945
spike(worker): harness/environment split — plan + working Alpine worker by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6924
feat(api,worker): compile a pi worker runtime artifact per push, behind a pi_worker flag by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6944
chore(secrets): local .env gets its own KORTIX_GITHUB_APP_STATE_SECRET by @markokraemer in https://github.com/kortix-ai/suna/pull/6948
perf(session-open): kill the prefetch storm, serial queries, audit flood, and boot chorus by @markokraemer in https://github.com/kortix-ai/suna/pull/6946
fix(web): OAuth consent page — one shared load/approve per request id (spinner forever on dev) by @markokraemer in https://github.com/kortix-ai/suna/pull/6949
feat(accounts): organization branding — own logo, icon, favicon (light + dark) and product name as the Enterprise branding entitlement by @markokraemer in https://github.com/kortix-ai/suna/pull/6947
fix(api): compress middleware fails open without CompressionStream — dev returned 500 for every response ≥ 1 KiB (Bun 1.2 image) by @markokraemer in https://github.com/kortix-ai/suna/pull/6951
feat(web): docs surface rework, tool-row disclosure, mono badge system by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6952
fix(api): compress middleware 500s on Bun 1.2 image — CompressionStream undefined, fall back to node:zlib by @markokraemer in https://github.com/kortix-ai/suna/pull/6950
feat: Kortix Runtime API — one sequenced session stream + runtime projection, opencode-shaped polls DELETED by @markokraemer in https://github.com/kortix-ai/suna/pull/6953
fix(web): drop "In progress" from SOC 2 Type I trust badge by @agent-kortix in https://github.com/kortix-ai/suna/pull/6954
fix(web): mark SOC 2 Type I as certified on /security by @agent-kortix in https://github.com/kortix-ai/suna/pull/6955
fix(sdk,api): session stream dies cross-origin — drop non-safelisted Cache-Control request header by @markokraemer in https://github.com/kortix-ai/suna/pull/6959
feat(llm-catalog): add GLM 5.3 Flash (z-ai/glm-5.3-flash via OpenRouter) to Kortix managed by @markokraemer in https://github.com/kortix-ai/suna/pull/6958
fix(sdk): healBedrockModelKey is inert on the gateway — picker was pinning every pick to Claude Opus 5 by @markokraemer in https://github.com/kortix-ai/suna/pull/6960
feat(desktop): install prod, staging and dev side by side by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6956
fix(worker): compiled artifact double-started and died with EADDRINUSE by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6962
fix(web): webhook wizard signing secrets rejected by trigger validation by @ArtemShatokhin in https://github.com/kortix-ai/suna/pull/6961
Fix working status order after a fresh prompt by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6965
feat(apps): a Kortix-hosted App is already signed in — gate-minted viewer identity + token by @markokraemer in https://github.com/kortix-ai/suna/pull/6963
Revert "feat(desktop): install prod, staging and dev side by side (#6956)" by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6967
perf(boot): zero proxied git requests at session boot + OpenCode spawns before checkout by @markokraemer in https://github.com/kortix-ai/suna/pull/6964
test(daemon): per-test ephemeral ports in egress-shim suites by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6969
docs(learnings): a new import edge into a widely-mocked graph breaks hand-written mocks suite-wide by @markokraemer in https://github.com/kortix-ai/suna/pull/6968
Fix working status order and elapsed timer by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6970
feat(api,worker): sessions boot the pi worker (P1.5 + P1.6) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6966
fix(web): the markdown source toggle, and the oversized SVG thumbnail by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6971
fix(api): fresh-session git fast path gets its own switch (KORTIX_FAST_GIT_BOOT_ENABLED) by @markokraemer in https://github.com/kortix-ai/suna/pull/6973
fix(worker): gateway-mode model resolution killed the first dev pi session by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6975
Fix idle messages appearing queued by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6974
Keep snapshot builder test doubles complete by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6977
feat(kortixd): daemon single-binary management CLI + safe self-update/rollback by @markokraemer in https://github.com/kortix-ai/suna/pull/6972
perf(api): warm the fresh-session git hint on push and at provision by @markokraemer in https://github.com/kortix-ai/suna/pull/6976
perf(api): slim the pi worker boot control plane by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6980
docs(learnings): an experiment flag deploy-dev pins to false cannot be a kill switch by @markokraemer in https://github.com/kortix-ai/suna/pull/6979
feat(api): pi worker pool — parked boxes claimed at session create (P1.8) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6981
fix(web): a menu click never reloads the page — 83 nav controls become anchors by @markokraemer in https://github.com/kortix-ai/suna/pull/6978
fix(api): pi worker env — only an explicit session model overrides the bake by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6983
perf(web): stop blurring text the user is trying to read by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6984
fix(api): pi pool — never trust the Daytona list's labels for reap or claim by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6985
feat(api): session environments — lazy compute for pi worker sessions (P1.7 E1) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6986
feat: pi worker tools act on the lazy environment (P1.7 E2) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6989
fix(api): session environments idle-stop at 60min, not the 12h backstop by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6990
feat(kortixd): context-aware update/rollback — stage via supervisor in-sandbox (Option A) by @markokraemer in https://github.com/kortix-ai/suna/pull/6988
feat(sdk,api,daemon): own the session read+realtime surface — /kortix reads, one /events SSE, zero polls, /snapshot by @markokraemer in https://github.com/kortix-ai/suna/pull/6987
fix(web): remove leftover diff3 base block in session-chat — frontend build was red by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6991
feat(worker): pi sessions render in the product — the Kortix Runtime API on the worker by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6993
fix(worker): skip pi's user-role message frames — the worker publishes the user turn itself by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6994
fix(worker): answer the raw /session pin probe; only assistant roles translate by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6995
fix(api): defer the ensurePiWorkerImage import so builder mocks cannot SyntaxError by @markokraemer in https://github.com/kortix-ai/suna/pull/6982
cleanup(sdk,web): fix stale open-bundle/stream refs after own-the-surface rename by @markokraemer in https://github.com/kortix-ai/suna/pull/6992
perf(daemon): decompose opencode-ready into named marks; prefetch the initial-turn claim by @markokraemer in https://github.com/kortix-ai/suna/pull/6996
fix(web): every URL the tab system writes to history is now a real route by @markokraemer in https://github.com/kortix-ai/suna/pull/6997
docs(learnings): deployed configuration has one truth, and it is not the file in git by @markokraemer in https://github.com/kortix-ai/suna/pull/7001
fix(daemon): never build an OpenCode Instance before the workspace is complete by @markokraemer in https://github.com/kortix-ai/suna/pull/7002
fix(sdk): stopped-box 'not-running' 404 is wakeable, not 'Couldn't load this conversation' by @markokraemer in https://github.com/kortix-ai/suna/pull/6999
docs(learnings): down box has two proxy responses — classify both wakeable by @markokraemer in https://github.com/kortix-ai/suna/pull/7003
chore(secrets): 1:1 parity between apps/api/.env. and AWS Secrets Manager by @markokraemer in https://github.com/kortix-ai/suna/pull/7000
fix(daemon): open the Instance gate where the workspace is complete, not right after spawn by @markokraemer in https://github.com/kortix-ai/suna/pull/7004
fix(api): /events attaches to a reachable box, not only an 'active' row by @markokraemer in https://github.com/kortix-ai/suna/pull/7007
fix(preview): every Server Action 500s — pin the public host for Next's CSRF guard by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7006
fix(web): stop shipping every frontend log to the raw sandbox /log route by @markokraemer in https://github.com/kortix-ai/suna/pull/7008
chore(docs): delete agent work artifacts; SDK rules become the sdk skill by @markokraemer in https://github.com/kortix-ai/suna/pull/7010
fix(sdk): retire the transcript-poll fallback — /events is the single feed by @markokraemer in https://github.com/kortix-ai/suna/pull/7011
fix(preview): route the API's non-/v1 paths through the preview edge by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7012
docs(learnings): a shared-origin environment must enumerate the API's non-/v1 paths by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7013
docs(learnings): compose does not restart a container for new bytes in a mounted file by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7015
feat(preview): the preview label keeps an environment online until it is removed by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7017
refactor(snapshots): delete the per-project warm image system (−5,959 lines) by @markokraemer in https://github.com/kortix-ai/suna/pull/7014
fix(preview): keep the --target-full gate on the label deploy by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7018
fix: seven prod faults behind one report — secrets, Slack routing, zombie boxes, terminal 1006, connector honesty by @kubet in https://github.com/kortix-ai/suna/pull/7016
feat(preview): re-point a stable hostname's worker on every deploy by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7019
fix(preview): ship the pi-router worker to main so the deploy can re-point it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7021
revert: restore the OpenCode client, remove the Kortix Runtime client by @markokraemer in https://github.com/kortix-ai/suna/pull/7022
fix(secrets): the server stops guessing secret delivery from the name by @kubet in https://github.com/kortix-ai/suna/pull/7020
chore(secrets): delete the Kortix-managed Anthropic proxy and the unused SES keys by @markokraemer in https://github.com/kortix-ai/suna/pull/7009
fix: nested- markdown hydration error + daemon staleness false-positive by @markokraemer in https://github.com/kortix-ai/suna/pull/7025
fix(sandbox-agent): re-wire turn auto-resume — transient provider errors were surfacing raw by @markokraemer in https://github.com/kortix-ai/suna/pull/7026
Remove AsterLab and managed GLM 5.2 by @markokraemer in https://github.com/kortix-ai/suna/pull/7029
Fix staging release gates by @markokraemer in https://github.com/kortix-ai/suna/pull/7028
fix(web,sdk): slider Reset, @-menu Enter, Interrupted placement, tab indicator by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7030
Promote main to staging — 2026-08-28 by @markokraemer in https://github.com/kortix-ai/suna/pull/7027
Slack channel takeover + secret delivery: targeted release candidate by @kubet in https://github.com/kortix-ai/suna/pull/7032
feat(preview): a preview environment lives until its BRANCH is deleted by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7023
Promote main to staging — 2026-08-28 follow-up by @markokraemer in https://github.com/kortix-ai/suna/pull/7033
fix(session): thirteen session-runtime defects — stop button, keepalive evidence, history pages, terminal cards, boot flag, agent roster, queue clock, dead open-bundle, redirect loop, atomic paint by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6957
fix(waf): allow OAuth loopback redirects by @markokraemer in https://github.com/kortix-ai/suna/pull/7034
release: promote main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/7035
fix(preview): do not point a stable hostname at a stack that is down by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7036
fix(web): restore GitHub repo sources on /new, fix People-with-access gate by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7037
fix(tests): follow stopped-session transcript mirror contract by @markokraemer in https://github.com/kortix-ai/suna/pull/7038
release: refresh v0.13.7 candidate from main by @markokraemer in https://github.com/kortix-ai/suna/pull/7039
Release v0.13.7 — Faster sessions, Sign in with Kortix, and organization branding by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7041
New Contributors
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.6...v0.13.7
Read the full release on GitHub →
v0.13.6 August 26, 2026 Sessions start, resume, and stay honest
The session loading screen no longer shows a false "Couldn't start session" card. A wake that stalls now escalates on its own — retry, then restart — with a cooldown ladder instead of a terminal state you had to clear by hand.
The transcript loads instead of rendering empty while the sandbox boots, and it stays readable for stopped sessions. Transcripts are now mirrored server-side, so a session that is not running can still be read.
The frontend no longer falls behind the agent or shows "stopped" while a turn is running. A running session no longer flips to stopped mid-turn.
The prompt queue reflects delivery truth: a message is queued until the runtime accepts it, and a message the runtime cannot run is surfaced instead of silently dropped.
Long turns no longer stop at random. Fixes cover provider deadline read-back, the request body cap, the OpenCode auto-updater (now off), a progress-aware boot budget, a bounded turn probe, and Bun's 300 s fetch idle timeout.
Long sessions no longer run the sandbox out of memory: attachments are offloaded out of the transcript, a memory guard runs before the kernel does, and the reaper backs off its probes. Each sandbox exposes a daemon log and a /kortix/diag endpoint.
Audit writes use a single upsert and a dedicated pool, so a lock convoy on the audit table can no longer surface as a "Bad Gateway" during a session.
/summarize (compaction) no longer times out through the proxy; the compaction marker is minimal and the summary opens in the panel.
A deleted session refuses /start and /restart with 404. Quota and provider races on project creation are gone. Rotated E2B ingress tokens refresh instead of failing.
An untouched send skips a no-op scope round-trip, and the approval audit read drops to 100 rows — faster first send.
OpenCode is bumped to 1.18.23 everywhere (fixes Bedrock redacted-content streams).
Connect apps from the session (Composio)
A new Connect Link flow replaces the connector overlay. Composio is the managed default provider; the agent selects it on its own.
You can connect an app from inside the session without typing "done". A connect the human walked away from is finished later, and a stopped session is told when its connector landed.
Gmail managed OAuth ships with the minimum scopes. The CLI and the intake link mint a Kortix connect link, never the provider's raw URL.
The connector catalogue is sectioned and filterable at the source. A newly created connector keeps its detail view open.
Models and the LLM gateway
The LLM gateway is a per-project setting with a first-class native path when it is off: keys go to the sandbox environment and the native provider/model is used. It stays on by default.
Native projects get a model picker before the sandbox runtime exists. The picker defaults to the latest flagship set; search reveals all. Deprecated models are hidden; models.dev status passes through.
One capability source and one thinking knob for every model. The sandbox learns the project's servable model set at boot, so the picker never offers a model the runtime cannot run. The seed refreshes weekly.
Bedrock: inference-profile ids are preferred, a refused bare id is retried with global./us., bare pins are healed, and no bare Bedrock id is used as a default. OpenAI-on-Bedrock reasoning effort now reaches the model. Summarized Bedrock reasoning streams. A rejected reasoning parameter gets one retry with per-model memory.
Inline images are windowed inside the sandbox: every gateway session routes through the daemon LLM proxy.
Approvals and permissions
Approval and permission notices fill the composer strip. An approval you cannot decide is never rendered as decidable, an unreviewable card says what is true, an unauthorised reviewer is told so, and Approve is not offered on a row the server will reject.
A truncated arguments preview no longer blocks approval.
Web
Inline "edit from here" editor with an honest Restore control.
bash, write, and edit tool rows: zone layout, live counts, and a diff stat.
Code blocks always show a copy button. The carousel tab no longer shifts the page sideways. One sidebar opener on every headerless session surface.
Session previews stay loaded and both preview frames preload. An HTML file is served, never injected.
Triggers keep access across stale reads. The setup-links modal finalizes when it closes.
Change surfaces
One vocabulary and one file list for every change surface.
Under the hood
CI moved to Blacksmith runners with tiered sizes, a kill switch, sticky-disk Docker cache, and a portable image-digest recipe. PR test lanes run natively.
Secrets hygiene: prod dotenvx keys are owner-only, non-prod profiles carry no prod-reaching credential, and a separation tripwire enforces it.
The release pipeline refuses a version tag collision.
Release on GitHub →
v0.13.5 August 24, 2026 Sessions
Sessions start faster with OpenCode 1.18.19, leaner runtime assets, reusable Git bundles, and guarded image preparation.
Existing sessions recover after sleep, runtime loss, dropped streams, and interrupted connections.
Transcripts catch up after missed events, render long threads sooner, and load attachment bytes only when needed.
Unsent drafts persist per project and session. The composer can reference recent session files from the / menu.
Fixed duplicate prompts, stale status snapshots, malformed runtime responses, and inaccessible backend-origin sessions.
Product experience
Every sandbox preview port can use its own origin across cloud and self-hosted deployments.
ZIP archives can be browsed and extracted in the file viewer.
The CLI now covers models, sessions, agents, connectors, triggers, access, billing, reviews, and project settings.
Added ranked command-palette results, a resizable sidebar, clearer change indicators, a rebuilt Apps gallery, and a simpler Customize chooser.
Retired the experimental voice runtime and its unused product surfaces.
Security and reliability
Preview origins enforce trusted CORS, cross-site write protection, read-only shares, immediate revocation, and host-scoped cookies.
Sandbox credentials stay confined to their session. Connector-bound secrets receive tighter delivery boundaries.
Experimental network-enforced secrets support streaming bodies, Server-Sent Events, large payloads, and credential substitution in authorization and cookie headers.
Paid legacy subscriptions pass the wallet floor correctly and receive renewal credits based on actual payments.
The LLM gateway handles large image requests without repeated base64 copies and survives overload without process crashes.
Gateway and edge failures return structured retryable errors instead of intermediary HTML or invalid compressed bodies.
Audit writes no longer block API traffic. Audit reads use bounded barriers under continuous traffic.
Added database connection limits, secret-write coalescing, per-project session controls, safer live-turn reaping, and initial-prompt replay protection.
What's Changed
Release v0.9.15 — SOC 2 compliance baseline + gated release flow by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3303
Release v0.9.16 — Live-prove auto version-sync by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3304
Release v0.9.17 — Single-leader background workers, contact/demo flow, and build + env fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3305
Release v0.9.18 — Restore the site — fix the production render crash by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3307
Release v0.9.19 — Project memory, runtime feature controls, and a typed API by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3310
Release v0.9.20 — inject kortix llm router into sandbox by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3312
Release v0.9.21 — fix tier fetch by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3314
Release v0.9.22 — show claim button only for legacy users by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3318
Release v0.9.23 — stripe webhook reconciliation by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3323
Release v0.9.24 — Auth, billing & connector fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3324
Release v0.9.25 — windowed migration — latest 25 by default + offset by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3327
Release v0.9.26 — suna migration fix + connector fix by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3330
Release v0.9.27 — og suna migrations by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3332
Release v0.9.28 — pat authentication by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3334
Release v0.9.29 — rehydrate chat on migration by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3337
Release v0.9.30 — Platinum sandbox provider, connectors redesign, and admin provider controls by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3339
Release v0.9.31 — Billing tier fix, smoother account migration, and UI polish by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3342
Release v0.9.32 — Editable connectors, hibernating sandboxes, and sandbox-preview auth fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3348
Release v0.9.33 — Static-token auth for webhook triggers by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3351
Release v0.9.34 — Desktop app, unified channel delivery & reliability fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3362
Release v0.9.35 — Fix fleet-wide 30s API timeouts (DB connection-pool starvation) by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3368
Release v0.9.36 — bake secrets into sandbox by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3376
Release v0.9.37 — Mobile app v2 (account management, files, terminal) + team billing fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3379
Release v0.9.38 — Connector actions fixed across apps by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3380
Release v0.9.39 — Fix phantom shadow account members; GitOps/EKS deploy foundation by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3393
Release v0.9.40 — E2E Kubernetes setup with ArgoCD by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3397
Release v0.9.41 — Release pipeline & infra — internal, no user-facing changes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3400
Release v0.9.42 — Slack and scheduled sessions are now visible to the whole team by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3402
Release v0.9.43 — CI/CD — traffic-aware canary analysis (internal, no user-facing changes) by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3407
fix(eks): prod → plain rolling Deployment (drop fragile canary) by @lillyboga in https://github.com/kortix-ai/suna/pull/3410
Release v0.9.44 — EKS prod: rolling Deployment delivery (canary retired) by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3413
Release v0.9.45 — Add memory_mb to /health by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3427
Release v0.9.46 — Design system refresh and app router cleanup by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3437
Release v0.9.47 — Bring docs back by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3439
Release v0.9.48 — ArgoCD bug in HPAs by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3450
Release v0.9.49 — ChatGPT subscription login, steadier Slack, and a Skills file tree by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3457
Release v0.9.50 — API routing: Cloudflare Worker switch + ECS Fargate hot-standby by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3458
Release v0.9.51 — Reliability: bulletproof ECS hot-standby + managed-git fix by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3459
Release v0.9.52 — Faster, more reliable sessions + PDF/PPTX viewers + security hardening by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3465
Release v0.9.53 — Smoother session loading — chat input no longer jumps by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3466
Release v0.9.54 — Smoother, more reliable session loading by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3467
Release v0.9.55 — Faster, more reliable session start by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3472
Release v0.9.56 — Session reliability, Slack polish, and shareable previews by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3477
Release v0.9.57 — Slack webhook reliability and unified invocation engine by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3481
Release v0.9.58 — Marketing homepage refresh, compare pages, and Cloud pricing update by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3482
Release v0.9.59 — Redeploy by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3496
Release v0.9.60 — More memory headroom so the API stops restarting under load by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3499
Release v0.9.61 — Warm pool fast starts, live first-turn streaming, and project workspace polish by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3510
Release v0.9.62 — Sandbox boot time improvements, UI improvements by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3511
Release v0.9.63 — Instant session shell, per-agent access, and a faster colocated backend by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3514
Release v0.9.64 — Fix warm-pool trigger runtime auth by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3516
Release v0.9.65 — Fix private repo provisioning failures by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3518
Release v0.9.66 — Sandboxes auto-stop reliably + deterministic compute billing by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3550
Release v0.9.67 — Fix sandbox template snapshot builds by @markokraemer in https://github.com/kortix-ai/suna/pull/3561
Release v0.9.68 — Session reliability: drain stuck-active cap leak + /sessions 500 resilience + Daytona billing reaper by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3616
ops(prod): complete EKS cutover — restore fleet-wide crons by @markokraemer in https://github.com/kortix-ai/suna/pull/3622
Release v0.9.69 — Reliable scheduled triggers by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3632
Release v0.9.70 — Full cron coverage + correct stall detection by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3637
Release v0.9.71 — LLM Gateway: BYOK, managed Kortix models, and live cost observability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3641
Release v0.9.72 — Gateway EKS deploy in prod pipeline + correct ingress cert by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3644
Release v0.9.73 — Slack channel connector and stability release by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3686
Release v0.9.74 — LLM Gateway: Bedrock-native managed models, BYOK fallback, and streaming reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3712
Release v0.9.75 — Gateway improvements by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3716
Release v0.9.76 — Gateway improvements by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3720
Release v0.9.77 — Faster model responses and a fallback for blocked previews by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3727
revert(prod): roll back FE & BE to v0.9.68 [INCIDENT] by @markokraemer in https://github.com/kortix-ai/suna/pull/3729
fix(prod): keep gateway on 0.9.77 (un-wedge Argo; gateway not in 0.9.68 stack) by @markokraemer in https://github.com/kortix-ai/suna/pull/3737
Release v0.9.78 — Marketplace runtime, managed gateway defaults, and staging release hardening by @markokraemer in https://github.com/kortix-ai/suna/pull/3859
Release v0.9.79 — Production release v0.9.79 by @markokraemer in https://github.com/kortix-ai/suna/pull/3868
Release v0.9.80 — Connect Slack and email in place, fix inbound email, and steadier live previews by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3873
Release v0.9.81 — AgentMail email connect error handling by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3884
Release v0.9.82 — GLM 5.2 in the model picker, a cleaner Slack connect flow, and reliability fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3900
Release v0.9.83 — Slack identity and project session reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3934
Release v0.9.84 — Production hotfix: account membership repair by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3939
Release v0.9.85 — Release v0.9.85 — Slack identity and account bootstrap hardening by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3943
Release v0.9.86 — Fix false 'agent switch requires a new session' on new sessions by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3950
Release v0.9.87 — Allow in-session agent switching + wake-race retry + deploy self-heal by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3957
Release v0.9.88 — Guided onboarding, a unified Slack panel, and tool-card fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3967
Release v0.9.89 — Refreshed marketing site, new blog, and default-agent connector fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3976
Release v0.9.90 — Fix the dropped first prompt in new sessions by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3993
Release v0.9.91 — Hotfix gateway Unicode trace logging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4018
Release v0.9.92 — Sandbox reliability fixes, per-project provider override, and gateway logging fix by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4023
Release v0.9.93 — Reliable LLM completions, plus sandbox and gateway fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4109
Release v0.9.94 — Fix GLM stream failures: pin Z.AI host + trace in-stream upstream errors by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4149
Release v0.9.95 — Turn auto-resume for transient provider errors by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4154
Release v0.9.96 — Fix session-page reconnect storm against stopped sandboxes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4161
Release v0.9.97 — Per-account session-limit override + session delete/provision race fix by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4203
Release v0.9.98 — Marketplace by default, People Search, SCIM provisioning, and session reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4263
Release v0.9.99 — Project-wide provider keys, marketplace fixes, and sharper project permissions by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4278
Release v0.9.100 — Marketplace 1-click imports, groups and custom roles for every plan, and a sandbox that recovers when a build fails by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4343
Release v0.9.101 — Agents now always answer your first message, plus SSO and gateway fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4364
Release v0.9.102 — slack bind-thread + pending main by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4392
Release v0.9.103 — Staging release: auth, chat input, Slack defaults, and runtime reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4476
Release v0.9.104 — Reliable session uploads and production migration recovery by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4485
Release v0.9.105 — Steadier session switching, email-code sign-in, and a batch of fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4490
Release v0.9.106 — Smoother session open and switch, plus marketing and maintenance-banner polish by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4498
Release v0.9.107 — Idle-stopped sessions come back on their own by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4511
Release v0.9.108 — Idle sessions wake on their own, invitation fix, and quieter UI by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4519
Release v0.10.0 — Self-hosting: one generic Docker deployment, VPS-first by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4730
Release v0.10.1 — Self-host: verified laptop and VPS deployments, guided setup by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4740
Release v0.10.2 — Self-host SSO out of the box, unified sign-in, and safer defaults by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4749
Release v0.10.3 — Self-host hardening, experimental local-docker sandboxes, and an auth refresh fix by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4774
Release v0.10.4 — Restore Kortix managed model availability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4790
Release v0.10.5 — Restore production EKS gateway origin TLS by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4796
Release v0.10.6 — Restore EKS gateway release parity by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4802
Release v0.10.7 — v0.10.7 by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4847
Release v0.10.8 — Fixes for OpenAI model routing, provider keys, terminals, and toasts by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4865
Release v0.10.9 — Easy panel polish: reliable terminal, browser landing, truthful tool cards by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4880
Release v0.10.9 — Self-host SSO sign-in fix and a Cloudflare Access setup guide by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4885
Release v0.10.10 — Session panel layout fix and inline file previews in chat by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4889
Release v0.10.11 — The LLM Gateway, rebuilt on the Vercel AI SDK and live models.dev — per-model controls, OpenAI/Anthropic APIs, and a full UX overhaul by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5022
revert(prod): roll back api+gateway to v0.10.10 [ROLLBACK] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5048
Release v0.10.12 — Reliable session starts + re-shipped LLM gateway by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5073
Release v0.10.13 — Codex models fixed, gateway hardening, and a Git-first project flow by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5134
Release v0.10.14 — Session provisioning, sandbox runtime, and release reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5342
Release v0.10.15 — Scheduler reliability and webhook freshness by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5465
Release v0.10.16 — Independent maintenance failover by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5509
chore(release): promote Retry-After gate fix to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5663
chore(release): promote latest main and bounded ke2e gate by @markokraemer in https://github.com/kortix-ai/suna/pull/5670
chore(release): include latest Pi runtime fix in staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5673
chore(release): final main cutoff for v0.11.0 staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5679
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5695
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5703
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5709
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5713
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5719
chore(release): promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5720
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5725
chore(release): freeze v0.11.0 source at 3729edc1 by @markokraemer in https://github.com/kortix-ai/suna/pull/5730
chore(release): promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5729
Release v0.11.0 — Realtime voice, session rewind, warm sessions, and Marketing Department by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5732
fix(prod): preserve API deployment selector by @markokraemer in https://github.com/kortix-ai/suna/pull/5737
fix(release): carry production Supabase guard to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5750
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5929
chore(release): promote main to staging — db-reset harness fix by @markokraemer in https://github.com/kortix-ai/suna/pull/5934
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5942
Merge main into staging — user menu reorder (#5941) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5945
chore(release): promote main to staging — v0.12.0 gate unblock by @markokraemer in https://github.com/kortix-ai/suna/pull/5950
chore(release): promote main to staging — final gate fixes (AUD-5, COVD-1) by @markokraemer in https://github.com/kortix-ai/suna/pull/5954
Release v0.12.0 — Audit log, session costs, session scope controls, and a rebuilt kortix.com by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5955
chore(release): promote main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5959
release(staging): session list rebuild + error boundary copy details by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5990
Promote main → staging: v0.12.1 candidate (45 commits since v0.12.0) by @markokraemer in https://github.com/kortix-ai/suna/pull/5991
Promote main → staging: shadow-region release-gate fix by @markokraemer in https://github.com/kortix-ai/suna/pull/5994
Release v0.12.1 — Connector-aware sessions, project icons, and sandbox reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5997
Targeted staging fix: valid deploy-prod syntax (re-release v0.12.1) by @markokraemer in https://github.com/kortix-ai/suna/pull/6001
Release v0.12.1 — Connector-aware sessions, project icons, and sandbox reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6004
chore(release): staging VERSION → 0.12.2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6012
hotfix(session): prevent passive reads from waking stopped sandboxes by @markokraemer in https://github.com/kortix-ai/suna/pull/6041
release(web): /download close button, and mobile marked coming soon by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6061
chore(release): promote main 86d7a634 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6064
chore(release): refresh staging to main f2f4f840 by @markokraemer in https://github.com/kortix-ai/suna/pull/6066
Release v0.12.2 — Runtime reliability, session controls, and infrastructure updates by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6068
chore(release): staging VERSION → 0.12.3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6071
fix(web,sdk): keep in-flight sends, tell the truth about tool failures, one code palette (#6058) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6105
fix: slow project page navigation, and upgrade to Next.js 16.2.0 (#6102) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6107
fix(web): give the landing code panels a keyboard tab stop by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6108
chore(release): promote main 7fd16e28 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6116
fix(qa): deflake the staging a11y gate (networkidle → element waits) by @markokraemer in https://github.com/kortix-ai/suna/pull/6117
Release v0.12.3 — Sandbox hardening, faster navigation, and honest sessions by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6118
chore(release): staging VERSION → 0.12.4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6121
release(staging): /legal/terms → specific Drive file (#6123) by @markokraemer in https://github.com/kortix-ai/suna/pull/6124
fix(ke2e): COST-2 must compute the gap-fill count from its own window (staging) by @markokraemer in https://github.com/kortix-ai/suna/pull/6130
release(staging): email provider-chain transport (cherry-pick #6139) by @markokraemer in https://github.com/kortix-ai/suna/pull/6140
Release v0.12.4 — Email delivery that survives a provider outage by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6141
chore(release): staging VERSION → 0.12.5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6149
chore(release): promote main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6187
chore(release): promote main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6191
release: promote main c7023f12 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6193
release: promote main to staging after v0.12.5 gate fix by @markokraemer in https://github.com/kortix-ai/suna/pull/6196
Release candidate: refresh staging from main by @markokraemer in https://github.com/kortix-ai/suna/pull/6200
Release candidate: promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6203
release: refresh staging with current main by @markokraemer in https://github.com/kortix-ai/suna/pull/6211
release: refresh staging with current main by @markokraemer in https://github.com/kortix-ai/suna/pull/6217
Release candidate: main → staging (v0.12.5) by @markokraemer in https://github.com/kortix-ai/suna/pull/6229
Release v0.12.5 — Secret delivery controls, unified connectors, and flat credit plans by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6188
chore(release): staging VERSION → 0.12.6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6238
release candidate: main → staging for v0.12.6 by @markokraemer in https://github.com/kortix-ai/suna/pull/6256
Promote main (dab76851b9) to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6258
Release v0.12.6 — Legacy chat restore, billing correctness, and admin consoles by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6261
chore(release): staging VERSION → 0.12.7 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6269
fix(sandbox): promote agent-bound lifecycle correctness by @markokraemer in https://github.com/kortix-ai/suna/pull/6285
Release candidate: main @ d1ed3589 → staging for v0.12.7 by @markokraemer in https://github.com/kortix-ai/suna/pull/6331
Release v0.12.7 — Agent-bound sandboxes, terminal attach, and feature flags by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6345
chore(release): staging VERSION → 0.12.8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6351
Release candidate: main → staging (v0.12.8) by @markokraemer in https://github.com/kortix-ai/suna/pull/6387
Release candidate v0.12.8 r2: connector deny-list hardening by @markokraemer in https://github.com/kortix-ai/suna/pull/6391
Release v0.12.8 — Entitlement overrides, act-as support sessions, and one-call agent secret grants by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6389
chore(release): staging VERSION → 0.12.9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6400
Release candidate: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6402
Release candidate r2: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6405
Release candidate r3: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6412
Release candidate r4: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6416
Release candidate r5: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6419
Release candidate r6: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6424
Release candidate: main → staging (2026-08-18, v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6435
Release candidate: main → staging (v0.13.0, second attempt) by @markokraemer in https://github.com/kortix-ai/suna/pull/6548
Release candidate: main → staging (v0.13.0) + Terraform apply fix (#6549) by @markokraemer in https://github.com/kortix-ai/suna/pull/6550
Release candidate: main → staging (v0.13.0) + sharded-gate runtime fixes (#6552) by @markokraemer in https://github.com/kortix-ai/suna/pull/6553
Release candidate: main → staging (v0.13.0) + sweep-can't-skip-shards fix (#6556) by @markokraemer in https://github.com/kortix-ai/suna/pull/6557
Release candidate: main → staging (v0.13.0) + group-grants Strix fix (#6560) + shard fleet tuning (#6561) by @markokraemer in https://github.com/kortix-ai/suna/pull/6563
Release v0.13.0 — Apps goes stable, Monitors lands experimental, and a big session-reliability pass by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6564
chore(release): staging VERSION → 0.13.1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6568
chore(release): VERSION → 0.13.1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6569
docs(learnings): CIC under a 5s lock_timeout cannot land on live prod (v0.13.0 deploy incident) by @markokraemer in https://github.com/kortix-ai/suna/pull/6570
perf(sandbox): warm OpenCode instance in fast image by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6571
perf(sandbox): precompile fast OpenCode tools by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6572
infra(selfhost): bake a daily docker-prune timer into the box by @markokraemer in https://github.com/kortix-ai/suna/pull/6573
infra(selfhost): drop a deployment name from the prune comment by @markokraemer in https://github.com/kortix-ai/suna/pull/6574
perf(sandbox): align fast runtime base with Ubuntu by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6575
fix(slack): let another bot @-mention Kortix — the gate blocked every bot, not just us by @kubet in https://github.com/kortix-ai/suna/pull/6577
fix: every managed model works in every sandbox + session.error renders in place + keyboard scroll intent by @markokraemer in https://github.com/kortix-ai/suna/pull/6576
fix(sandbox): disable slower fast boot experiment by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6578
ci(release-gate): 6 api shards + serial-tail shard, 60-min cap, dry-run dispatch against staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6580
test(ke2e): fix tests typecheck break from #6554 (iam.flow.ts:1739) by @markokraemer in https://github.com/kortix-ai/suna/pull/6581
test(ke2e): preflight tolerates traffic-degraded gateway, 180s deployed flow budget, no cross-shard shared-state collisions by @markokraemer in https://github.com/kortix-ai/suna/pull/6582
test(e2e): harden the recurring deployed-target browser specs; quarantine the non-deterministic ones into a nightly lane by @markokraemer in https://github.com/kortix-ai/suna/pull/6584
ci(release-gate): E2E_EXCLUDE_TAGS='@quarantine' on the browser shards (companion to #6584) by @markokraemer in https://github.com/kortix-ai/suna/pull/6587
Bound the per-session audit event rate so one runaway turn cannot take the API down by @markokraemer in https://github.com/kortix-ai/suna/pull/6583
fix(starter): reflector + reviewer agents run without approval prompts by @markokraemer in https://github.com/kortix-ai/suna/pull/6589
fix(api,ke2e): account deletion stops+removes every sandbox, revoked tokens stop authenticating, gc reclaims sessions+tokens by @markokraemer in https://github.com/kortix-ai/suna/pull/6586
Give CONCURRENTLY migrations a lock_timeout that can actually land on live prod by @markokraemer in https://github.com/kortix-ai/suna/pull/6588
Release candidate: main → staging (v0.13.1): gate-green work by @markokraemer in https://github.com/kortix-ai/suna/pull/6591
fix(slack): a bot @-mention still did nothing — the identity gate refuses it, silently by @kubet in https://github.com/kortix-ai/suna/pull/6590
feat(connectors): one-click OAuth 2.1 for MCP servers (RFC 9728 + 8414 + 7591 + 8707) by @markokraemer in https://github.com/kortix-ai/suna/pull/6579
Canonical RBAC cutover: role_assignments is the only store — legacy tables → views, old engine + parity harnesses deleted by @markokraemer in https://github.com/kortix-ai/suna/pull/6594
fix(daemon): managed-model overlay never blocks the spawn; reconcile once before readiness by @markokraemer in https://github.com/kortix-ai/suna/pull/6592
fix(sessions): session sharing is the owner's call, not a manager's by @markokraemer in https://github.com/kortix-ai/suna/pull/6593
perf(sandbox): arm Platinum secrets during create by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6596
feat(email): one EMAIL_URL configures every email Kortix sends by @markokraemer in https://github.com/kortix-ai/suna/pull/6585
perf(sessions): stop paying two provider round trips to resume a stopped box by @markokraemer in https://github.com/kortix-ai/suna/pull/6595
fix(gateway): disable Bun idleTimeout stream-kill + Bedrock request/response fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/6599
fix(email): nodemailer 7.0.13 -> 9.0.5 (open advisories, incl. one high) by @markokraemer in https://github.com/kortix-ai/suna/pull/6597
test(ke2e): GW-1 tolerates a traffic-degraded gateway (aligns with #6582 preflight) by @markokraemer in https://github.com/kortix-ai/suna/pull/6603
Release candidate: main → staging (v0.13.1): RBAC-cutover code + gate round-2 fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/6604
docs(runbook): switching dev/staging/prod auth email onto the send-email hook by @markokraemer in https://github.com/kortix-ai/suna/pull/6601
fix(db): unblock dev deploys — reconcile retired role_permissions actions before the cutover's catalog-FK VALIDATE (runtime override) by @markokraemer in https://github.com/kortix-ai/suna/pull/6602
fix(slack): link-bot documented the one input form Slack cannot send by @kubet in https://github.com/kortix-ai/suna/pull/6606
docs(learnings): reconcile a retired constraint value by remapping, never deleting by @markokraemer in https://github.com/kortix-ai/suna/pull/6605
docs(runbook): hook-enable PATCH clears custom SMTP; promote-safety proof by @markokraemer in https://github.com/kortix-ai/suna/pull/6608
Never render sandbox readiness 503s as errors — waking state + retry across all surfaces by @markokraemer in https://github.com/kortix-ai/suna/pull/6610
refactor(gateway): AI-SDK-native /language-model path for lossless opencode passthrough (flag-gated, dormant) by @markokraemer in https://github.com/kortix-ai/suna/pull/6609
fix(slack): link-bot should not require owner/admin — it delegates only your own authority by @kubet in https://github.com/kortix-ai/suna/pull/6612
infra(staging): API 3×2vCPU/4GiB — the release gate saturates 2×1vCPU tasks by @markokraemer in https://github.com/kortix-ai/suna/pull/6613
Release candidate: main → staging (v0.13.1): staging API 3×2vCPU (#6613) by @markokraemer in https://github.com/kortix-ai/suna/pull/6614
feat(secrets): exposure/usage model — one enforcement mechanism on all providers by @markokraemer in https://github.com/kortix-ai/suna/pull/6611
refactor(gateway): wire API in-process gateway + session env to enable the native path (flag off) by @markokraemer in https://github.com/kortix-ai/suna/pull/6615
fix(slack): users.info was sent as JSON, so Slack never saw the user param by @kubet in https://github.com/kortix-ai/suna/pull/6616
fix(queue): forwarded prompts cannot strand, Stop cannot leak, bubbles keep one identity by @markokraemer in https://github.com/kortix-ai/suna/pull/6598
perf(api): take audit writes and the owner-email fan-out off the request path by @markokraemer in https://github.com/kortix-ai/suna/pull/6618
Release candidate: main → staging (v0.13.1): request-path latency fix (#6618) by @markokraemer in https://github.com/kortix-ai/suna/pull/6620
perf(ci): dev single-arch + layer cache + fix the frontend-skip by @markokraemer in https://github.com/kortix-ai/suna/pull/6619
perf(ci): build staging images natively per arch, with a layer cache by @markokraemer in https://github.com/kortix-ai/suna/pull/6622
fix(gateway): re-apply gateway-side provider shaping (codex store:false + 3 more) on the native path by @markokraemer in https://github.com/kortix-ai/suna/pull/6623
ci(dev): explicit Deploy Dev action instead of per-push storm by @markokraemer in https://github.com/kortix-ai/suna/pull/6621
fix(web): boot-time composer shows the session's real agent; panels survive boot→ready by @markokraemer in https://github.com/kortix-ai/suna/pull/6625
deploy-staging: Cloudflare auth failure must not freeze the staging frontend by @markokraemer in https://github.com/kortix-ai/suna/pull/6626
ci(dev): auto-deploy latest + cancel-stale (builds are fast now) by @markokraemer in https://github.com/kortix-ai/suna/pull/6627
ke2e: never replay a create through an edge-laundered 5xx (fixes all 22 release-gate failures) by @markokraemer in https://github.com/kortix-ai/suna/pull/6628
fix(web): boot composer reads the stashed agent pick before /start answers by @markokraemer in https://github.com/kortix-ai/suna/pull/6629
fix(gateway): upgrade @ai-sdk/amazon-bedrock 5.0.24→5.0.59 (parse redacted reasoning; fixes GPT-on-Bedrock 502) by @markokraemer in https://github.com/kortix-ai/suna/pull/6630
refactor(gateway): make the AI-SDK-native path the default everywhere (verified across all providers) by @markokraemer in https://github.com/kortix-ai/suna/pull/6631
Unblock the release browser gate, and stop leaking the Vercel bypass secret by @markokraemer in https://github.com/kortix-ai/suna/pull/6632
Promote main to staging: gate flow + browser fixes, fast builds by @markokraemer in https://github.com/kortix-ai/suna/pull/6633
gate: 1 api worker per shard — 19 concurrent collapsed the staging write path by @markokraemer in https://github.com/kortix-ai/suna/pull/6634
Promote main to staging: gate worker concurrency by @markokraemer in https://github.com/kortix-ai/suna/pull/6635
gate: survive a transient 503 at world bootstrap; staging API floor 6 tasks by @markokraemer in https://github.com/kortix-ai/suna/pull/6636
Promote main to staging: bootstrap resilience + 6-task floor by @markokraemer in https://github.com/kortix-ai/suna/pull/6637
gate: fix the four session residuals, and stop reruns colliding with themselves by @markokraemer in https://github.com/kortix-ai/suna/pull/6638
edge: laundered 503 parses as an AI-SDK error; Worker deploy survives a dead credential by @markokraemer in https://github.com/kortix-ai/suna/pull/6639
Promote main to staging: edge error shape + session residual fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/6640
staging: raise the request deadline to 55s (cross-region DB) by @markokraemer in https://github.com/kortix-ai/suna/pull/6641
Promote main to staging: 55s request deadline by @markokraemer in https://github.com/kortix-ai/suna/pull/6642
gate: boundary-asserting skips and named quarantines are legitimate --require-all outcomes by @markokraemer in https://github.com/kortix-ai/suna/pull/6643
Promote main to staging: skip semantics + SESS-23 quarantine by @markokraemer in https://github.com/kortix-ai/suna/pull/6644
gate: a one-step assert-then-skip flow counts as asserted by @markokraemer in https://github.com/kortix-ai/suna/pull/6645
Promote main to staging: assert-then-skip step semantics by @markokraemer in https://github.com/kortix-ai/suna/pull/6646
IAM-12: poll effective-permission probes through the cross-task IAM cache window by @markokraemer in https://github.com/kortix-ai/suna/pull/6648
Promote main to staging: IAM-12 settle poll by @markokraemer in https://github.com/kortix-ai/suna/pull/6649
perf(boot): remove fresh-session Git network round trips by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6647
perf(boot): deliver exact Git delta during sandbox creation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6650
docs(boot): record deployed Git timing by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6651
perf(boot): make Git bundle reuse durable by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6652
docs(boot): record durable Git cache benchmark by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6653
Release v0.13.1 — Release gate goes green: sharded, self-cleaning, right-sized staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6654
chore(runtime): bump OpenCode 1.17.11 -> 1.18.19 everywhere by @markokraemer in https://github.com/kortix-ai/suna/pull/6655
chore(release): staging VERSION → 0.13.2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6659
chore(release): VERSION → 0.13.2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6660
fix(turns): box-initiated turns get authority; busy roots are never read as terminal by @markokraemer in https://github.com/kortix-ai/suna/pull/6657
learnings: three rules from the v0.13.1 release-gate campaign by @markokraemer in https://github.com/kortix-ai/suna/pull/6661
fix(session): polish the session UX end to end by @markokraemer in https://github.com/kortix-ai/suna/pull/6663
refactor: stop inferring chronology from OpenCode message ids by @markokraemer in https://github.com/kortix-ai/suna/pull/6665
fix(turns): turn-begin relay must authenticate as the sandbox, not a PAT by @markokraemer in https://github.com/kortix-ai/suna/pull/6664
fix(billing): resolve entitlement from the subscription, not the stored tier by @markokraemer in https://github.com/kortix-ai/suna/pull/6662
perf(boot): shrink OpenCode config runtime by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6656
chore(billing): backfill the renewal credits zero-grant legacy tiers never gave by @markokraemer in https://github.com/kortix-ai/suna/pull/6666
perf(boot): bake the generic scaffold checkout by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6668
fix(billing): teach the entitlement invariant what a renewal now grants by @markokraemer in https://github.com/kortix-ai/suna/pull/6671
perf(boot): make starter Git bundles provider-portable by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6672
chore(billing): reconcile stripe_subscription_status drift before #6662 promotes by @markokraemer in https://github.com/kortix-ai/suna/pull/6669
feat(runtime): converge every sandbox onto the API it talks to by @markokraemer in https://github.com/kortix-ai/suna/pull/6673
fix(boot): invalidate stale scaffold images by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6674
fix(runtime-assets): hash the sandbox binaries at startup, not on the request by @markokraemer in https://github.com/kortix-ai/suna/pull/6676
docs(boot): record scaffold benchmark by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6678
feat(secrets): gate egress-enforced delivery behind experimental secrets_egress flag; default to environment by @markokraemer in https://github.com/kortix-ai/suna/pull/6677
fix(sdk): sub-agent panels stop throwing 'Invalid session id' + quieter landing hero by @markokraemer in https://github.com/kortix-ai/suna/pull/6680
gateway: remove the AI-SDK-native transport — OpenAI-compat only (reliability) by @markokraemer in https://github.com/kortix-ai/suna/pull/6679
fix(secrets): relay substitutes handles in Authorization/Cookie (egress works for Bearer auth) by @markokraemer in https://github.com/kortix-ai/suna/pull/6683
Serve every sandbox preview on its own origin by @markokraemer in https://github.com/kortix-ai/suna/pull/6681
fix(web): sub-agent row hierarchy — one rail per level, agent rows that open by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6682
enh(web): landing page hero scenes and marketing rebuild by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6658
feat(secrets): stream the relay — no body caps, SSE, truncation sentinel by @markokraemer in https://github.com/kortix-ai/suna/pull/6685
fix(boot): the managed-skill overlay no longer counts as the user's changes by @markokraemer in https://github.com/kortix-ai/suna/pull/6684
refactor(session): one source of truth for what a session changed + the tracked package.json by @markokraemer in https://github.com/kortix-ai/suna/pull/6687
fix(session): a finished turn stays finished by @markokraemer in https://github.com/kortix-ai/suna/pull/6688
perf(web): verify the session JWT in-process instead of calling GoTrue on every navigation by @markokraemer in https://github.com/kortix-ai/suna/pull/6690
fix(session): a retry is not the end of a turn by @markokraemer in https://github.com/kortix-ai/suna/pull/6691
fix(queue): the inbox owns the queue by @markokraemer in https://github.com/kortix-ai/suna/pull/6692
perf(sandbox): reduce cold OpenCode startup latency by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6694
perf(snapshots): materialize Platinum templates before activation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6695
Prepare active Platinum images before cold boots by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6696
fix(slack): an app_mention was answered by whichever project got the callback, not the bot that was mentioned by @kubet in https://github.com/kortix-ai/suna/pull/6689
fix(sessions): list and lifecycle answer manager standing from one predicate by @kubet in https://github.com/kortix-ai/suna/pull/6697
fix(api): an algorithm the local verifier cannot check is not a bad token by @markokraemer in https://github.com/kortix-ai/suna/pull/6698
perf(sandbox): add guarded project-image cold boot by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6700
fix(api): fail closed on unsafe FAST activation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6703
fix(api,selfhost): isolate audit writes + Caddy retry so a slow audit write can't 502 the gateway by @markokraemer in https://github.com/kortix-ai/suna/pull/6702
revert(queue): put the queue back the way it was by @markokraemer in https://github.com/kortix-ai/suna/pull/6699
fix(web): stop the session boot shell vanishing at handover by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6701
fix(edge): accept webhooks without User-Agent by @markokraemer in https://github.com/kortix-ai/suna/pull/6709
fix(gateway): bound per-request memory so the LLM path can actually autoscale by @markokraemer in https://github.com/kortix-ai/suna/pull/6708
fix(web): restore voice input and subordinate menu styling — main was red by @markokraemer in https://github.com/kortix-ai/suna/pull/6711
docs(learnings): a 'tried and reverted' comment is a decision record by @markokraemer in https://github.com/kortix-ai/suna/pull/6704
docs(gateway): state the in-flight budget's unit, and pin it with a test by @markokraemer in https://github.com/kortix-ai/suna/pull/6710
fix(dev): stop OOM-killing the dev API — 1024 MiB was a quarter of every other environment by @markokraemer in https://github.com/kortix-ai/suna/pull/6705
fix(gateway): size the in-flight budget from the container, not from a constant by @markokraemer in https://github.com/kortix-ai/suna/pull/6712
docs(learnings): a limit larger than the thing it protects is not a limit by @markokraemer in https://github.com/kortix-ai/suna/pull/6713
fix(triggers): stop initial prompt replay loops by @markokraemer in https://github.com/kortix-ai/suna/pull/6716
hotfix(webhooks): accept unsigned-agent requests and stop prompt replay by @markokraemer in https://github.com/kortix-ai/suna/pull/6717
Release v0.13.2 — Fix production webhook delivery and initial prompt completion by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6718
chore(release): VERSION → 0.13.3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6720
chore(release): staging VERSION → 0.13.3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6721
fix(reaper): stop killing live turns on a box that is merely transitioning by @markokraemer in https://github.com/kortix-ai/suna/pull/6719
fix(platform): storm controls — coalesced env fan-out, secret-write budget, per-project session cap by @kubet in https://github.com/kortix-ai/suna/pull/6715
fix(api): bound database connections during rollouts by @markokraemer in https://github.com/kortix-ai/suna/pull/6722
fix(prod): bound database connections during rolling deployment by @markokraemer in https://github.com/kortix-ai/suna/pull/6724
test(browser): await account render before retry by @markokraemer in https://github.com/kortix-ai/suna/pull/6727
fix(release): isolate audit writes from API database pool by @markokraemer in https://github.com/kortix-ai/suna/pull/6728
Release v0.13.3 — Bound database connections and isolated audit writes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6733
fix(preview): make preview origins a MUST on a public domain, never a silent downgrade by @markokraemer in https://github.com/kortix-ai/suna/pull/6732
fix(release): bind Vercel runtime version per deployment by @markokraemer in https://github.com/kortix-ai/suna/pull/6735
fix(release): bind Vercel runtime version per deployment by @markokraemer in https://github.com/kortix-ai/suna/pull/6736
refactor(gateway): bound memory and simplify passthrough by @markokraemer in https://github.com/kortix-ai/suna/pull/6737
fix(gateway): wire API proxy to standalone service by @markokraemer in https://github.com/kortix-ai/suna/pull/6738
fix(deploy): persist gateway target in ECS revisions by @markokraemer in https://github.com/kortix-ai/suna/pull/6740
test(release): prove warm adoption on the target row by @markokraemer in https://github.com/kortix-ai/suna/pull/6739
Fix warm-session adoption release assertion by @markokraemer in https://github.com/kortix-ai/suna/pull/6741
feat(cli): UI→CLI parity — every operable dashboard action has a kortix command by @markokraemer in https://github.com/kortix-ai/suna/pull/6731
feat(composer): persist unsent drafts per project and per session by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6743
test(release): require Apps list after enabling flag by @markokraemer in https://github.com/kortix-ai/suna/pull/6747
test(release): require Apps list after enabling flag by @markokraemer in https://github.com/kortix-ai/suna/pull/6749
fix(session): make runtime recovery single-flight and non-destructive by @markokraemer in https://github.com/kortix-ai/suna/pull/6748
fix(worktree): warn at start when another stack is live on the shared DB (worker cross-talk) by @markokraemer in https://github.com/kortix-ai/suna/pull/6752
docs(sdk): close runtime recovery progress by @markokraemer in https://github.com/kortix-ai/suna/pull/6754
security: enforce the sandbox credential boundary by @markokraemer in https://github.com/kortix-ai/suna/pull/6751
fix(cli): replay manifest CAS 409 once; projects ls honors --host/--account by @markokraemer in https://github.com/kortix-ai/suna/pull/6753
fix(worktree): tunnel watchdog — rotate a dead quick tunnel and respawn the API with the new KORTIX_URL by @markokraemer in https://github.com/kortix-ai/suna/pull/6755
test(release): allow later session activity writes by @markokraemer in https://github.com/kortix-ai/suna/pull/6756
docs(learnings): never resolve a merge inside a worktree whose API runs --hot by @markokraemer in https://github.com/kortix-ai/suna/pull/6758
test(release): allow later session activity writes by @markokraemer in https://github.com/kortix-ai/suna/pull/6757
fix(worktree): run the quick tunnel over HTTP/2, not QUIC by @markokraemer in https://github.com/kortix-ai/suna/pull/6759
fix(api): inbox delivery converges the box before every prompt, not only with an opencodeEnv override by @markokraemer in https://github.com/kortix-ai/suna/pull/6761
security: enforce the sandbox credential boundary by @markokraemer in https://github.com/kortix-ai/suna/pull/6760
Release v0.13.4 — Bound database capacity and reliable production web deploys by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6746
chore(release): VERSION → 0.13.5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6762
chore(release): staging VERSION → 0.13.5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6763
fix(web): the Apps gallery goes back to 16:9, two across, with a size control by @markokraemer in https://github.com/kortix-ai/suna/pull/6764
fix(api,dev): instance-scoped background work on a shared local DB (KORTIX_INSTANCE_ID) by @markokraemer in https://github.com/kortix-ai/suna/pull/6765
fix(triggers): validate webhook secret delivery by @markokraemer in https://github.com/kortix-ai/suna/pull/6768
fix(web): an App card names the App, not its hostname by @markokraemer in https://github.com/kortix-ai/suna/pull/6767
kortixd: standalone compute-node daemon and sandbox runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6686
docs(learnings): a cancelled deploy-dev can advertise a SHA it never promoted by @markokraemer in https://github.com/kortix-ai/suna/pull/6769
fix(self-host): expose the public LLM gateway route by @markokraemer in https://github.com/kortix-ai/suna/pull/6770
fix(kortixd): connect through deployed WebSocket edge by @markokraemer in https://github.com/kortix-ai/suna/pull/6773
fix(web): the model dialog IS the Models page, not a second copy of it by @markokraemer in https://github.com/kortix-ai/suna/pull/6771
fix(web): trim the project settings rail, and a floating way back from the account hub by @markokraemer in https://github.com/kortix-ai/suna/pull/6772
feat(web): rebuild the Customize index as a chooser by @markokraemer in https://github.com/kortix-ai/suna/pull/6774
fix(kortixd): complete reliable sandbox relay rollout by @markokraemer in https://github.com/kortix-ai/suna/pull/6776
fix(relay): cross Cloudflare for PTY sockets by @markokraemer in https://github.com/kortix-ai/suna/pull/6777
fix(kortixd): disable node-channel compression by @markokraemer in https://github.com/kortix-ai/suna/pull/6778
fix(api): wait through Platinum archive restore by @markokraemer in https://github.com/kortix-ai/suna/pull/6779
fix(api): converge kortixd after Daytona wake by @markokraemer in https://github.com/kortix-ai/suna/pull/6780
fix(api): bootstrap kortixd on legacy sandboxes by @markokraemer in https://github.com/kortix-ai/suna/pull/6781
fix(api): restore runtime environment for legacy kortixd by @markokraemer in https://github.com/kortix-ai/suna/pull/6782
fix(api): serialize legacy kortixd repair by @markokraemer in https://github.com/kortix-ai/suna/pull/6783
fix(api): preserve legacy sandbox entrypoint by @markokraemer in https://github.com/kortix-ai/suna/pull/6784
fix(api): protect sandbox PID 1 by @markokraemer in https://github.com/kortix-ai/suna/pull/6785
fix(kortixd): adopt legacy sandbox runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6786
revert: restore stable sandbox relay while kortixd stays in worktree by @markokraemer in https://github.com/kortix-ai/suna/pull/6787
fix(deploy): complete reviewed kortixd rollback by @markokraemer in https://github.com/kortix-ai/suna/pull/6788
fix(sdk,web): a runtime list endpoint never hands back a non-list ('t is not iterable') by @markokraemer in https://github.com/kortix-ai/suna/pull/6790
docs(learnings): normalize remote list responses at the SDK seam by @markokraemer in https://github.com/kortix-ai/suna/pull/6791
release(staging): backport 5 web changes — sub-agent rows, landing rebuild, sidebar alerts, zip viewer, share view by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6789
fix(api,web,sdk): terminal attach wakes a parked sandbox instead of looping on 1006 by @markokraemer in https://github.com/kortix-ai/suna/pull/6792
fix(env): default managed git to github for local and dev runs by @markokraemer in https://github.com/kortix-ai/suna/pull/6793
docs(learnings): a websocket upgrade must obey the HTTP wake policy by @markokraemer in https://github.com/kortix-ai/suna/pull/6794
fix(api): retire code.storage as a provisioning target everywhere by @markokraemer in https://github.com/kortix-ai/suna/pull/6796
fix(web): stop path detection from turning a code fence into [object Object] by @markokraemer in https://github.com/kortix-ai/suna/pull/6795
fix(deploy): pin MANAGED_GIT_PROVIDER=github in the staging env bundle by @markokraemer in https://github.com/kortix-ai/suna/pull/6799
fix(router): accept the session PAT that every built-in tool actually presents by @markokraemer in https://github.com/kortix-ai/suna/pull/6800
fix(ci): run dev channel promotions after skipped surfaces by @markokraemer in https://github.com/kortix-ai/suna/pull/6798
Fix OpenCode resolution in generated sandbox templates by @markokraemer in https://github.com/kortix-ai/suna/pull/6801
fix(session): stop claiming a live session is "waking" before we have looked by @markokraemer in https://github.com/kortix-ai/suna/pull/6802
docs(agents): remove the dangling tdd skill and fix stale AGENTS.md facts by @markokraemer in https://github.com/kortix-ai/suna/pull/6803
fix(models): a connected ChatGPT subscription can be removed again by @markokraemer in https://github.com/kortix-ai/suna/pull/6804
Resolve native OpenCode from the installed pnpm shim by @markokraemer in https://github.com/kortix-ai/suna/pull/6805
fix(session,db): a finished turn stays finished; drop the reverted kortixd schema by @markokraemer in https://github.com/kortix-ai/suna/pull/6807
fix(session,db): finish the turn-end fix + three defects an audit found by @markokraemer in https://github.com/kortix-ai/suna/pull/6808
fix(sdk): a status snapshot may fill a gap, never overwrite the live stream by @markokraemer in https://github.com/kortix-ai/suna/pull/6809
perf(session): bound what a long thread retains by @markokraemer in https://github.com/kortix-ai/suna/pull/6810
fix(session): a queued prompt asks the inbox whether it survived, not the runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6811
Fix duplicate prompts from CLI new-session chat by @markokraemer in https://github.com/kortix-ai/suna/pull/6812
Files: one header row per surface, faster change-request open, calmer review panels by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6813
fix(session): the runtime's output is evidence, not an opinion about the runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6814
fix(starter): disable harness reflector by default by @kubet in https://github.com/kortix-ai/suna/pull/6806
fix(sdk,session): the transcript comes from the runtime, never from disk by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6819
A wait is not a fault: one connection answer for the session view by @markokraemer in https://github.com/kortix-ai/suna/pull/6817
fix(api): namespace OpenCode gateway model refs by @markokraemer in https://github.com/kortix-ai/suna/pull/6820
Drop a foreign key the schema declared and no database ever had by @markokraemer in https://github.com/kortix-ai/suna/pull/6818
The transcript must catch up — five things stopped it by @markokraemer in https://github.com/kortix-ai/suna/pull/6821
fix(sandbox): recover missing OpenCode runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6822
fix(ci): preserve frontend channel promotion by @markokraemer in https://github.com/kortix-ai/suna/pull/6823
The read is the liveness check — stop the session page waiting on a probe by @markokraemer in https://github.com/kortix-ai/suna/pull/6824
The first page is 20 messages, not 50 by @markokraemer in https://github.com/kortix-ai/suna/pull/6825
Take over OpenCode's own v1 page handling by @markokraemer in https://github.com/kortix-ai/suna/pull/6826
Wait for a sandbox to wake, not for three tries by @markokraemer in https://github.com/kortix-ai/suna/pull/6827
A human is not a sandbox: backend-origin sessions open again by @markokraemer in https://github.com/kortix-ai/suna/pull/6828
The transcript stops shipping attachment bytes by @markokraemer in https://github.com/kortix-ai/suna/pull/6829
Learnings: the 2026-08-24 session-open incident by @markokraemer in https://github.com/kortix-ai/suna/pull/6830
One read where there were three, one entry where there were two by @markokraemer in https://github.com/kortix-ai/suna/pull/6832
fix(gateway): zero-copy image passthrough, measured memory envelope, image window, framing headers by @markokraemer in https://github.com/kortix-ai/suna/pull/6831
Promote main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6834
perf(session): remove residual page-load contention by @markokraemer in https://github.com/kortix-ai/suna/pull/6836
fix(gateway): survive overload instead of dying — no OOM, no lease leak, no 502 by @markokraemer in https://github.com/kortix-ai/suna/pull/6835
Bound failed existing-session resume loops by @markokraemer in https://github.com/kortix-ai/suna/pull/6837
Fix release gate audit stalls and stale fixtures by @markokraemer in https://github.com/kortix-ai/suna/pull/6838
Promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6839
Release v0.13.5 — Faster sessions, resilient multimodal runs, and safer previews by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6842
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.0...v0.13.5
Read the full release on GitHub →
v0.13.4 August 22, 2026 Fixed
Bound API database pools against the maximum rolling deployment fleet. This prevents PostgreSQL 53300 connection exhaustion.
Isolated audit writes on a dedicated pool. Slow audit inserts cannot starve request handlers.
Coalesced project environment updates, bounded secret writes, and capped concurrent project sessions to contain request storms.
Bound public web version metadata to each Vercel deployment. Production web deploys now complete with the correct release version.
Strengthened release verification for warm-session adoption.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.2...v0.13.4
Release on GitHub →
v0.13.2 August 22, 2026 Accept webhook requests without a User-Agent at the Cloudflare edge. Mint OpenCode-compatible initial message IDs so webhook-triggered turns complete once instead of replaying.
What's Changed
chore(release): VERSION → 0.13.2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6660
fix(turns): box-initiated turns get authority; busy roots are never read as terminal by @markokraemer in https://github.com/kortix-ai/suna/pull/6657
learnings: three rules from the v0.13.1 release-gate campaign by @markokraemer in https://github.com/kortix-ai/suna/pull/6661
fix(session): polish the session UX end to end by @markokraemer in https://github.com/kortix-ai/suna/pull/6663
refactor: stop inferring chronology from OpenCode message ids by @markokraemer in https://github.com/kortix-ai/suna/pull/6665
fix(turns): turn-begin relay must authenticate as the sandbox, not a PAT by @markokraemer in https://github.com/kortix-ai/suna/pull/6664
fix(billing): resolve entitlement from the subscription, not the stored tier by @markokraemer in https://github.com/kortix-ai/suna/pull/6662
perf(boot): shrink OpenCode config runtime by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6656
chore(billing): backfill the renewal credits zero-grant legacy tiers never gave by @markokraemer in https://github.com/kortix-ai/suna/pull/6666
perf(boot): bake the generic scaffold checkout by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6668
fix(billing): teach the entitlement invariant what a renewal now grants by @markokraemer in https://github.com/kortix-ai/suna/pull/6671
perf(boot): make starter Git bundles provider-portable by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6672
chore(billing): reconcile stripe_subscription_status drift before #6662 promotes by @markokraemer in https://github.com/kortix-ai/suna/pull/6669
feat(runtime): converge every sandbox onto the API it talks to by @markokraemer in https://github.com/kortix-ai/suna/pull/6673
fix(boot): invalidate stale scaffold images by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6674
fix(runtime-assets): hash the sandbox binaries at startup, not on the request by @markokraemer in https://github.com/kortix-ai/suna/pull/6676
docs(boot): record scaffold benchmark by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6678
feat(secrets): gate egress-enforced delivery behind experimental secrets_egress flag; default to environment by @markokraemer in https://github.com/kortix-ai/suna/pull/6677
fix(sdk): sub-agent panels stop throwing 'Invalid session id' + quieter landing hero by @markokraemer in https://github.com/kortix-ai/suna/pull/6680
gateway: remove the AI-SDK-native transport — OpenAI-compat only (reliability) by @markokraemer in https://github.com/kortix-ai/suna/pull/6679
fix(secrets): relay substitutes handles in Authorization/Cookie (egress works for Bearer auth) by @markokraemer in https://github.com/kortix-ai/suna/pull/6683
Serve every sandbox preview on its own origin by @markokraemer in https://github.com/kortix-ai/suna/pull/6681
fix(web): sub-agent row hierarchy — one rail per level, agent rows that open by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6682
enh(web): landing page hero scenes and marketing rebuild by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6658
feat(secrets): stream the relay — no body caps, SSE, truncation sentinel by @markokraemer in https://github.com/kortix-ai/suna/pull/6685
fix(boot): the managed-skill overlay no longer counts as the user's changes by @markokraemer in https://github.com/kortix-ai/suna/pull/6684
refactor(session): one source of truth for what a session changed + the tracked package.json by @markokraemer in https://github.com/kortix-ai/suna/pull/6687
fix(session): a finished turn stays finished by @markokraemer in https://github.com/kortix-ai/suna/pull/6688
perf(web): verify the session JWT in-process instead of calling GoTrue on every navigation by @markokraemer in https://github.com/kortix-ai/suna/pull/6690
fix(session): a retry is not the end of a turn by @markokraemer in https://github.com/kortix-ai/suna/pull/6691
fix(queue): the inbox owns the queue by @markokraemer in https://github.com/kortix-ai/suna/pull/6692
perf(sandbox): reduce cold OpenCode startup latency by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6694
perf(snapshots): materialize Platinum templates before activation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6695
Prepare active Platinum images before cold boots by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6696
fix(slack): an app_mention was answered by whichever project got the callback, not the bot that was mentioned by @kubet in https://github.com/kortix-ai/suna/pull/6689
fix(sessions): list and lifecycle answer manager standing from one predicate by @kubet in https://github.com/kortix-ai/suna/pull/6697
fix(api): an algorithm the local verifier cannot check is not a bad token by @markokraemer in https://github.com/kortix-ai/suna/pull/6698
perf(sandbox): add guarded project-image cold boot by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6700
fix(api): fail closed on unsafe FAST activation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6703
fix(api,selfhost): isolate audit writes + Caddy retry so a slow audit write can't 502 the gateway by @markokraemer in https://github.com/kortix-ai/suna/pull/6702
revert(queue): put the queue back the way it was by @markokraemer in https://github.com/kortix-ai/suna/pull/6699
fix(web): stop the session boot shell vanishing at handover by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6701
fix(edge): accept webhooks without User-Agent by @markokraemer in https://github.com/kortix-ai/suna/pull/6709
fix(gateway): bound per-request memory so the LLM path can actually autoscale by @markokraemer in https://github.com/kortix-ai/suna/pull/6708
fix(web): restore voice input and subordinate menu styling — main was red by @markokraemer in https://github.com/kortix-ai/suna/pull/6711
docs(learnings): a 'tried and reverted' comment is a decision record by @markokraemer in https://github.com/kortix-ai/suna/pull/6704
docs(gateway): state the in-flight budget's unit, and pin it with a test by @markokraemer in https://github.com/kortix-ai/suna/pull/6710
fix(dev): stop OOM-killing the dev API — 1024 MiB was a quarter of every other environment by @markokraemer in https://github.com/kortix-ai/suna/pull/6705
fix(gateway): size the in-flight budget from the container, not from a constant by @markokraemer in https://github.com/kortix-ai/suna/pull/6712
docs(learnings): a limit larger than the thing it protects is not a limit by @markokraemer in https://github.com/kortix-ai/suna/pull/6713
fix(triggers): stop initial prompt replay loops by @markokraemer in https://github.com/kortix-ai/suna/pull/6716
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.1...v0.13.2
Read the full release on GitHub →
v0.13.1 August 20, 2026 New
One URL configures every email Kortix sends. Signup confirmations, magic links, invites and alerts all flow through the same EMAIL_URL transport with the same sender identity and templates — self-hosted installs configure email once. Supabase auth mail now goes through the same path instead of GoTrue's own SMTP.
One-click OAuth for MCP connectors. Connecting an MCP server that requires OAuth 2.1 now works end-to-end from the UI or via kortix connectors authorize — discovery, dynamic client registration and token exchange included.
Secrets get an exposure and usage model. Each secret declares how it may be exposed and which usages are assigned to it, enforced by one mechanism across every sandbox provider.
Session sharing is now the owner's call: managers keep lifecycle control (stop, restart), but only the session's owner can share it or mint public links.
Fixed
Revoked API tokens now actually stop working. A personal access token that had been revoked could still authenticate on every surface (REST, the LLM gateway, git proxy, preview proxy, connectors) because the validation query never checked the revocation timestamp. Revoked tokens are now rejected everywhere.
Deleting an account now stops and removes every one of its sandboxes — across every account the user owns and every non-terminal state — instead of only stopping the ones under the earliest-joined account.
A runaway agent turn can no longer take the API down. Each session's audit-event stream is bounded (900 events per minute); past that ceiling only the high-volume streaming-delta class is dropped while lifecycle, usage and billing events keep flowing.
API writes are much faster under load. Audit events are written asynchronously in batches off the request path (they were a synchronous insert into a 14-index table on every request), and the account list no longer makes one admin-API call per member to resolve owner emails. Audit reads flush the queue first, so the audit log stays read-your-writes.
A waking sandbox no longer looks like an error. Every surface (web, CLI, SDK) now treats the sandbox-starting state as "waking" with retry, instead of surfacing a 503. Resuming a stopped box also dropped two provider round trips.
Gateway reliability: long streaming turns are no longer killed at 255 seconds by a runtime idle timeout; Bedrock requests with trailing prefill or redacted reasoning no longer fail; the gateway's provider shaping now runs on the new AI-SDK-native transport path, which is the default everywhere.
Slack: another bot @-mentioning Kortix now works; linking the bot no longer demands owner/admin (it delegates only your own authority); user lookups were sent in a form Slack silently ignored — fixed.
Prompt queue and composer: forwarded prompts can no longer strand, Stop can no longer leak into the next turn, fresh sessions paint instantly in one ordered batch, and the boot-time composer shows the session's real agent.
Deleted sessions are no longer readable by id. Listing a project's group grants is manager-only, matching the write routes.
Sandboxes learn the managed model set from the API on every boot, so a model the picker offers is one the runtime knows.
Keyboard scrolling in a session is treated as scroll intent: Cmd+Up no longer snaps back to the end. A session.error is now attributed to the turn that failed.
Starter reflector and reviewer agents run without approval prompts. Self-hosted boxes get a daily Docker prune timer.
Session titles and conversation counts are recorded again. The per-session metadata mirror was silently never written (the internal call carried no user identity, so the sandbox rejected it) — session names and conversation counts now populate for new sessions.
Security
The sandbox egress pin trusts the edge-populated client IP rather than spoofable forwarding headers; the App public proxy honors a token's project/session scope; trigger-session manager visibility no longer extends to session-bound agent tokens.
The browser test suite was broadcasting a deployment-protection bypass secret to third-party hosts on every run; it now authenticates once via a scoped cookie and the secret reaches no third party.
nodemailer upgraded across two majors to clear open advisories, including one high.
Internal
Roles have one store. The RBAC cutover made role_assignments the only authorization store — legacy tables became views, mirror triggers were dropped, and 3,100 lines of parallel code were deleted.
The production release gate is now reliable and fast. It runs as 6 API shards + 3 browser shards, cleans up its own test debris, tolerates a traffic-degraded-but-serving gateway, can be rehearsed against staging without opening a release PR, and the test client never replays a non-idempotent request through an edge-laundered error. Staging was right-sized for it, and a workflow-gating bug that had silently frozen the staging frontend for a week is fixed.
Container image builds are ~7× faster. Staging and dev images build natively per architecture with a registry layer cache (API image: ~3 minutes, was ~20), and the arm64 frontend image is now genuinely arm64.
CREATE INDEX CONCURRENTLY migrations ship with a lock_timeout that can land on a live database, and CI blocks any new one that sets it too low.
What's Changed
chore(release): VERSION → 0.13.1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6569
docs(learnings): CIC under a 5s lock_timeout cannot land on live prod (v0.13.0 deploy incident) by @markokraemer in https://github.com/kortix-ai/suna/pull/6570
perf(sandbox): warm OpenCode instance in fast image by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6571
perf(sandbox): precompile fast OpenCode tools by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6572
infra(selfhost): bake a daily docker-prune timer into the box by @markokraemer in https://github.com/kortix-ai/suna/pull/6573
infra(selfhost): drop a deployment name from the prune comment by @markokraemer in https://github.com/kortix-ai/suna/pull/6574
perf(sandbox): align fast runtime base with Ubuntu by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6575
fix(slack): let another bot @-mention Kortix — the gate blocked every bot, not just us by @kubet in https://github.com/kortix-ai/suna/pull/6577
fix: every managed model works in every sandbox + session.error renders in place + keyboard scroll intent by @markokraemer in https://github.com/kortix-ai/suna/pull/6576
fix(sandbox): disable slower fast boot experiment by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6578
ci(release-gate): 6 api shards + serial-tail shard, 60-min cap, dry-run dispatch against staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6580
test(ke2e): fix tests typecheck break from #6554 (iam.flow.ts:1739) by @markokraemer in https://github.com/kortix-ai/suna/pull/6581
test(ke2e): preflight tolerates traffic-degraded gateway, 180s deployed flow budget, no cross-shard shared-state collisions by @markokraemer in https://github.com/kortix-ai/suna/pull/6582
test(e2e): harden the recurring deployed-target browser specs; quarantine the non-deterministic ones into a nightly lane by @markokraemer in https://github.com/kortix-ai/suna/pull/6584
ci(release-gate): E2E_EXCLUDE_TAGS='@quarantine' on the browser shards (companion to #6584) by @markokraemer in https://github.com/kortix-ai/suna/pull/6587
Bound the per-session audit event rate so one runaway turn cannot take the API down by @markokraemer in https://github.com/kortix-ai/suna/pull/6583
fix(starter): reflector + reviewer agents run without approval prompts by @markokraemer in https://github.com/kortix-ai/suna/pull/6589
fix(api,ke2e): account deletion stops+removes every sandbox, revoked tokens stop authenticating, gc reclaims sessions+tokens by @markokraemer in https://github.com/kortix-ai/suna/pull/6586
Give CONCURRENTLY migrations a lock_timeout that can actually land on live prod by @markokraemer in https://github.com/kortix-ai/suna/pull/6588
fix(slack): a bot @-mention still did nothing — the identity gate refuses it, silently by @kubet in https://github.com/kortix-ai/suna/pull/6590
feat(connectors): one-click OAuth 2.1 for MCP servers (RFC 9728 + 8414 + 7591 + 8707) by @markokraemer in https://github.com/kortix-ai/suna/pull/6579
Canonical RBAC cutover: role_assignments is the only store — legacy tables → views, old engine + parity harnesses deleted by @markokraemer in https://github.com/kortix-ai/suna/pull/6594
fix(daemon): managed-model overlay never blocks the spawn; reconcile once before readiness by @markokraemer in https://github.com/kortix-ai/suna/pull/6592
fix(sessions): session sharing is the owner's call, not a manager's by @markokraemer in https://github.com/kortix-ai/suna/pull/6593
perf(sandbox): arm Platinum secrets during create by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6596
feat(email): one EMAIL_URL configures every email Kortix sends by @markokraemer in https://github.com/kortix-ai/suna/pull/6585
perf(sessions): stop paying two provider round trips to resume a stopped box by @markokraemer in https://github.com/kortix-ai/suna/pull/6595
fix(gateway): disable Bun idleTimeout stream-kill + Bedrock request/response fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/6599
fix(email): nodemailer 7.0.13 -> 9.0.5 (open advisories, incl. one high) by @markokraemer in https://github.com/kortix-ai/suna/pull/6597
test(ke2e): GW-1 tolerates a traffic-degraded gateway (aligns with #6582 preflight) by @markokraemer in https://github.com/kortix-ai/suna/pull/6603
docs(runbook): switching dev/staging/prod auth email onto the send-email hook by @markokraemer in https://github.com/kortix-ai/suna/pull/6601
fix(db): unblock dev deploys — reconcile retired role_permissions actions before the cutover's catalog-FK VALIDATE (runtime override) by @markokraemer in https://github.com/kortix-ai/suna/pull/6602
fix(slack): link-bot documented the one input form Slack cannot send by @kubet in https://github.com/kortix-ai/suna/pull/6606
docs(learnings): reconcile a retired constraint value by remapping, never deleting by @markokraemer in https://github.com/kortix-ai/suna/pull/6605
docs(runbook): hook-enable PATCH clears custom SMTP; promote-safety proof by @markokraemer in https://github.com/kortix-ai/suna/pull/6608
Never render sandbox readiness 503s as errors — waking state + retry across all surfaces by @markokraemer in https://github.com/kortix-ai/suna/pull/6610
refactor(gateway): AI-SDK-native /language-model path for lossless opencode passthrough (flag-gated, dormant) by @markokraemer in https://github.com/kortix-ai/suna/pull/6609
fix(slack): link-bot should not require owner/admin — it delegates only your own authority by @kubet in https://github.com/kortix-ai/suna/pull/6612
infra(staging): API 3×2vCPU/4GiB — the release gate saturates 2×1vCPU tasks by @markokraemer in https://github.com/kortix-ai/suna/pull/6613
feat(secrets): exposure/usage model — one enforcement mechanism on all providers by @markokraemer in https://github.com/kortix-ai/suna/pull/6611
refactor(gateway): wire API in-process gateway + session env to enable the native path (flag off) by @markokraemer in https://github.com/kortix-ai/suna/pull/6615
fix(slack): users.info was sent as JSON, so Slack never saw the user param by @kubet in https://github.com/kortix-ai/suna/pull/6616
fix(queue): forwarded prompts cannot strand, Stop cannot leak, bubbles keep one identity by @markokraemer in https://github.com/kortix-ai/suna/pull/6598
perf(api): take audit writes and the owner-email fan-out off the request path by @markokraemer in https://github.com/kortix-ai/suna/pull/6618
perf(ci): dev single-arch + layer cache + fix the frontend-skip by @markokraemer in https://github.com/kortix-ai/suna/pull/6619
perf(ci): build staging images natively per arch, with a layer cache by @markokraemer in https://github.com/kortix-ai/suna/pull/6622
fix(gateway): re-apply gateway-side provider shaping (codex store:false + 3 more) on the native path by @markokraemer in https://github.com/kortix-ai/suna/pull/6623
ci(dev): explicit Deploy Dev action instead of per-push storm by @markokraemer in https://github.com/kortix-ai/suna/pull/6621
fix(web): boot-time composer shows the session's real agent; panels survive boot→ready by @markokraemer in https://github.com/kortix-ai/suna/pull/6625
deploy-staging: Cloudflare auth failure must not freeze the staging frontend by @markokraemer in https://github.com/kortix-ai/suna/pull/6626
ci(dev): auto-deploy latest + cancel-stale (builds are fast now) by @markokraemer in https://github.com/kortix-ai/suna/pull/6627
ke2e: never replay a create through an edge-laundered 5xx (fixes all 22 release-gate failures) by @markokraemer in https://github.com/kortix-ai/suna/pull/6628
fix(web): boot composer reads the stashed agent pick before /start answers by @markokraemer in https://github.com/kortix-ai/suna/pull/6629
fix(gateway): upgrade @ai-sdk/amazon-bedrock 5.0.24→5.0.59 (parse redacted reasoning; fixes GPT-on-Bedrock 502) by @markokraemer in https://github.com/kortix-ai/suna/pull/6630
refactor(gateway): make the AI-SDK-native path the default everywhere (verified across all providers) by @markokraemer in https://github.com/kortix-ai/suna/pull/6631
Unblock the release browser gate, and stop leaking the Vercel bypass secret by @markokraemer in https://github.com/kortix-ai/suna/pull/6632
gate: 1 api worker per shard — 19 concurrent collapsed the staging write path by @markokraemer in https://github.com/kortix-ai/suna/pull/6634
gate: survive a transient 503 at world bootstrap; staging API floor 6 tasks by @markokraemer in https://github.com/kortix-ai/suna/pull/6636
gate: fix the four session residuals, and stop reruns colliding with themselves by @markokraemer in https://github.com/kortix-ai/suna/pull/6638
edge: laundered 503 parses as an AI-SDK error; Worker deploy survives a dead credential by @markokraemer in https://github.com/kortix-ai/suna/pull/6639
staging: raise the request deadline to 55s (cross-region DB) by @markokraemer in https://github.com/kortix-ai/suna/pull/6641
gate: boundary-asserting skips and named quarantines are legitimate --require-all outcomes by @markokraemer in https://github.com/kortix-ai/suna/pull/6643
gate: a one-step assert-then-skip flow counts as asserted by @markokraemer in https://github.com/kortix-ai/suna/pull/6645
IAM-12: poll effective-permission probes through the cross-task IAM cache window by @markokraemer in https://github.com/kortix-ai/suna/pull/6648
perf(boot): remove fresh-session Git network round trips by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6647
perf(boot): deliver exact Git delta during sandbox creation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6650
docs(boot): record deployed Git timing by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6651
perf(boot): make Git bundle reuse durable by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6652
docs(boot): record durable Git cache benchmark by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6653
chore(runtime): bump OpenCode 1.17.11 -> 1.18.19 everywhere by @markokraemer in https://github.com/kortix-ai/suna/pull/6655
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.13.0...v0.13.1
Read the full release on GitHub →
v0.13.0 August 19, 2026 New
Apps is now a stable feature — it moved out of experimental status and sits in the sidebar under Customize. Apps open instantly (no more loading flash), show their desktop layout on the preview card instead of mobile, and get their own IAM permissions and per-team scoping. Non-public Apps are now usable and honest about who can access them; self-host installs can serve Apps even though they can't publish to kortix.com.
Invite-time project grants — inviting someone to a project now grants both the account role and project access in one step, instead of two separate actions.
Settings unified into one tabbed panel , and the Billing pane was rebuilt with fewer boxes and a single credits card.
Chat input rebuilt to stop duplicate and lost sends; triple-tapping Escape now stops the agent even while you're typing.
Easy panel overhaul (the non-technical-user view): memory updates are now visible and plainly labelled, skill and task calls expand with live sub-agent activity, and a connect-apps strip and context-card actions were added.
Session usage modal reworked for clarity and speed; the model switcher and session usage view now show the real upstream provider instead of "Kortix".
Monitors (experimental): a new trigger type that runs on its own provisioned box, with its own CLI command group and MCP surface.
Network-boundary secrets on Daytona : an in-guest egress shim scopes a secret to the sandbox it was issued to, replacing the old operator-wide env var.
Presentations framework at /presentations, including a diagram-led security deck.
Added managed models: DeepSeek V4 Pro 0813 and Grok 4.6.
The CLI now shows the identity behind a minted agent token instead of reporting "not logged in".
Fixed
A cluster of stuck-session bugs: sessions could get wedged on boot with no retry, get stuck in a runaway self-repeating turn, show phantom interrupts, or strand mid-workspace-switch. A failed direct send now lands in the failed lane instead of disappearing, and prompts no longer get lost around session hand-off.
Session truth now reads from a durable server-side turn ledger over HTTP, replacing several client-side guesses about whether a session is still working.
Self-host: Storage now hands out public URLs instead of an internal Docker host address, and updates auto-heal from unlogged-table fork corruption that used to block them.
The gateway reports what an LLM request actually cost, not what Kortix billed; it no longer kills slow reasoning turns at a hard 90-second timeout, drops the trailing-assistant prefill that made strict backends fail, and its body size ceiling is raised to 1 GiB (was rejecting large multimodal requests).
MCP catalog discovery is now authenticated, and private sessions are no longer discoverable by other connectors.
Creating a duplicate App slug now returns 409 instead of 500.
The Vercel production frontend build now pins its runtime version so it can't get stranded on a stale one.
Cleaned up frontend error noise from bot/automation scripts and third-party scripts on Safari.
The reasoning-effort icon for Auto is now visually distinct, and agent names are capitalized consistently.
Notes
This release also includes a large internal hardening pass: an in-guest network-boundary/egress-secrets system, a warm-session simplification (session pooling now reuses ordinary sessions instead of a separate warm-session concept), a large API route-file split for maintainability, and expanded test coverage across sessions, monitors, and the deployed staging gate.
Also in this release
Security hardening — the sandbox egress pin now trusts the edge-populated client IP rather than spoofable forwarding headers; the App public proxy honors a token's project/session scope when authorizing App access; trigger-session manager visibility no longer extends to session-bound agent tokens; a deleted session is no longer readable by id.
Release-pipeline reliability — the release gate is sharded into parallel jobs, cleans up its own test debris, and runs against a right-sized staging; several long-standing test-suite defects that kept the gate red were fixed.
What's Changed
chore(release): VERSION → 0.12.9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6399
test(deployed): make the staging release gate resilient to origin load + dead email key by @markokraemer in https://github.com/kortix-ai/suna/pull/6397
fix(deploy-prod): pin the Vercel RUNTIME version env so the prod FE isn't stranded by @markokraemer in https://github.com/kortix-ai/suna/pull/6401
fix(web): de-noise three Better Stack frontend prod error classes (OneTrust JSON parse, Firefox DOM mutation, WebSocket Failed to send message) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6398
test(deployed): serialize staging lanes + self-heal AgentMail quota (gate stabilization r2) by @markokraemer in https://github.com/kortix-ai/suna/pull/6404
feat: tell the agent what the network boundary is doing by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6406
fix: the connectors MCP server never started; add a broker tool to it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6407
feat: turn the connectors MCP face on for every session by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6408
test(deployed): retry transient gateway errors in ALL clients (fixture clients too) by @markokraemer in https://github.com/kortix-ai/suna/pull/6411
fix(web): suppress bot/automation webdriver redefine + transient signal timed out noise (BS ee14e84d…, 73e683c3…) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6410
feat: Monitors — 24/7 watchers as a third trigger type (experimental flag) by @markokraemer in https://github.com/kortix-ai/suna/pull/6413
test(deployed): send Vercel SSO bypass header in the browser lane (+ weak-ETag tolerance) by @markokraemer in https://github.com/kortix-ai/suna/pull/6415
feat(web): unify settings into one tabbed panel by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6396
test(deployed): 90m timeout + cap sandbox concurrency (final gate stabilization) by @markokraemer in https://github.com/kortix-ai/suna/pull/6418
fix(monitors): monitor-box git-proxy access + stale-agent recycle by @markokraemer in https://github.com/kortix-ai/suna/pull/6417
feat(web): show when each user message was sent by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6420
fix(monitors): stale-agent probe uses resolveEndpoint (authed edge) by @markokraemer in https://github.com/kortix-ai/suna/pull/6421
test(deployed): serialize the two staging lanes (Daytona provisioning throughput) by @markokraemer in https://github.com/kortix-ai/suna/pull/6422
enh(web): send all queued messages on the next turn by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6423
docs: broker end-to-end result, and the premise it disproved by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6409
fix: mint the session handle row for network-boundary secrets by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6425
feat(web): dot-matrix busy glyphs and conversation density by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6426
feat(models): add managed Grok 4.6 by @markokraemer in https://github.com/kortix-ai/suna/pull/6427
feat(secrets): boundary delivery is a project flag, not an operator env var by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6428
fix(secrets): close the audit findings against the boundary-shim flag by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6430
feat(models): add managed DeepSeek V4 Pro 0813 by @markokraemer in https://github.com/kortix-ai/suna/pull/6432
test(deployed): revert serialize — RUN-* timeouts were a transient staging outage by @markokraemer in https://github.com/kortix-ai/suna/pull/6434
fix(self-host): auto-heal unlogged-table fork corruption that blocks updates by @markokraemer in https://github.com/kortix-ai/suna/pull/6433
fix(agent-tunnel): re-authorize when a saved token is rejected by @markokraemer in https://github.com/kortix-ai/suna/pull/6431
fix(compliance): resolve Drata IaC critical/high findings by @markokraemer in https://github.com/kortix-ai/suna/pull/6392
feat: keep a warm session ready while a user is present on a project by @markokraemer in https://github.com/kortix-ai/suna/pull/6437
fix(runtime): detect, report and survive a provider losing a session's sandbox by @markokraemer in https://github.com/kortix-ai/suna/pull/6438
fix(web): de-noise Safari frameless third-party 'Can't find variable' ReferenceError by @agent-kortix in https://github.com/kortix-ai/suna/pull/6429
fix(api): never warm into the last concurrent-session slot by @markokraemer in https://github.com/kortix-ai/suna/pull/6439
feat(web): presentations framework at /presentations + diagram-led security deck by @markokraemer in https://github.com/kortix-ai/suna/pull/6440
fix(web): end a workspace switch instead of stranding it by @markokraemer in https://github.com/kortix-ai/suna/pull/6441
test(e2e): cover repeated workspace switching in the browser lane by @markokraemer in https://github.com/kortix-ai/suna/pull/6442
fix(iam): report the constraint that actually denied a project request by @markokraemer in https://github.com/kortix-ai/suna/pull/6443
fix(meta): stop the per-prompt re-mint from destroying the coordinator's grant by @markokraemer in https://github.com/kortix-ai/suna/pull/6444
refactor(sessions): a warm session is an ordinary session (-1,446 lines) by @markokraemer in https://github.com/kortix-ai/suna/pull/6445
refactor(api): split r7.ts (3,499 lines) into nine focused route modules by @markokraemer in https://github.com/kortix-ai/suna/pull/6446
feat(sandbox): the in-guest egress shim — network boundary without Platinum by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6447
fix(secrets): the boundary echo guidance was lying to shim-backed agents by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6448
fix(sandbox): the shim CA was unusable by python — missing key identifiers by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6449
docs: network-boundary secrets work on Daytona — measured, not argued by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6450
feat(secrets): bind a session credential to the sandbox it was issued to by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6451
docs: the session credential is bound to its sandbox — verified on dev by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6452
enh: rebuild the chat input, end duplicate and lost sends by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6314
fix(api): never render a boot failure as a provider-side loss by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6456
Remove the agent-switch 409, and fix file upload end to end by @markokraemer in https://github.com/kortix-ai/suna/pull/6457
feat(apps): real permissions, resource controls, E2B parity and self-host hosting by @markokraemer in https://github.com/kortix-ai/suna/pull/6453
fix(self-host): hand out public Storage URLs, not the internal Docker host by @markokraemer in https://github.com/kortix-ai/suna/pull/6461
Apps: show only what you can open, and open it in place by @markokraemer in https://github.com/kortix-ai/suna/pull/6462
fix(apps): return 409 (not 500) on duplicate App slug by @markokraemer in https://github.com/kortix-ai/suna/pull/6465
fix(api): don't gate turn-stream lifecycle reports on connector.write by @markokraemer in https://github.com/kortix-ai/suna/pull/6464
enh(web): rework session usage modal for clarity and speed by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6459
fix(web): align the Apps sidebar row with the group it moved into by @markokraemer in https://github.com/kortix-ai/suna/pull/6463
fix(web): never land existing users on "No workspace yet" by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6460
feat: personalize project-home starter prompts by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6467
fix(cli): show the minted agent token's identity, not "not logged in" by @markokraemer in https://github.com/kortix-ai/suna/pull/6470
fix(apps): frame self-host App previews from the operator frontend origin by @markokraemer in https://github.com/kortix-ai/suna/pull/6471
enh(web): overhaul the easy panel for non-technical users by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6472
fix(apps): don't 500 App teardown when a runtime's provider is disabled/retired by @markokraemer in https://github.com/kortix-ai/suna/pull/6474
fix(gateway): stop killing slow reasoning turns at 90,000ms by @markokraemer in https://github.com/kortix-ai/suna/pull/6473
docs(learnings): a resource-scaled timeout moves the cliff, never removes it by @markokraemer in https://github.com/kortix-ai/suna/pull/6476
fix: end phantom interrupts, stop replays, slow switches by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6468
feat(triggers): control created session access by @markokraemer in https://github.com/kortix-ai/suna/pull/6477
fix(triggers): enforce private session discovery by @markokraemer in https://github.com/kortix-ai/suna/pull/6479
fix(sandbox): renew lifecycle from active OpenCode turns by @markokraemer in https://github.com/kortix-ai/suna/pull/6480
fix(sandbox): harden provider lifecycle renewal by @markokraemer in https://github.com/kortix-ai/suna/pull/6481
fix(sandbox): revoke turn authority on stop by @markokraemer in https://github.com/kortix-ai/suna/pull/6482
fix(sandbox): renew active turns on fast cadence by @markokraemer in https://github.com/kortix-ai/suna/pull/6484
fix: close three prompt-loss holes around session hand-off by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6486
fix: stop home sends landing in used warm sessions by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6485
fix(web): resolve react-doctor bug, security, perf findings by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6487
Use a minimal icon for shared sessions by @markokraemer in https://github.com/kortix-ai/suna/pull/6488
fix(llm-gateway): drop trailing assistant prefill so strict backends stop failing by @markokraemer in https://github.com/kortix-ai/suna/pull/6489
enh(web): overhaul the easy panel for non-technical users by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6475
fix(llm-gateway): stop 413-ing large multimodal requests; raise body ceiling to 1 GiB by @markokraemer in https://github.com/kortix-ai/suna/pull/6490
Apps: open an App instantly, and stop hiding Apps inside the SDK docs by @markokraemer in https://github.com/kortix-ai/suna/pull/6492
fix(sdk): bound the prompt busy override and un-park status reconciliation by @markokraemer in https://github.com/kortix-ai/suna/pull/6494
fix(gateway): report what an LLM request actually cost you, not what Kortix billed by @markokraemer in https://github.com/kortix-ai/suna/pull/6491
fix(web): make triple-ESC stop the agent from inside the composer by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6493
fix(sdk): stop pinning content-length when forwarding a request by @markokraemer in https://github.com/kortix-ai/suna/pull/6495
fix(manifest): refuse reserved App env names in validate, not only at deploy by @markokraemer in https://github.com/kortix-ai/suna/pull/6496
Connectors: no Pipedream on this deployment, no Discovery tab by @markokraemer in https://github.com/kortix-ai/suna/pull/6498
fix(web): drop the Apps subtitle and stop Learn more pressing the edge by @markokraemer in https://github.com/kortix-ai/suna/pull/6499
Apps: show the App's desktop layout on a card, not its mobile one by @markokraemer in https://github.com/kortix-ai/suna/pull/6500
fix(web): bring the permission-approval card onto the design system by @markokraemer in https://github.com/kortix-ai/suna/pull/6501
fix: adversarial-audit hardening of the stuck-session fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/6497
fix(web): show real upstream provider, not "Kortix", in session usage + model switcher by @markokraemer in https://github.com/kortix-ai/suna/pull/6504
Revamp Customize IA, permissions, and shared page shells by @markokraemer in https://github.com/kortix-ai/suna/pull/6503
fix(members): repair Groups/Roles links + multi-select grant dialogs by @markokraemer in https://github.com/kortix-ai/suna/pull/6505
fix(web): distinct Auto reasoning-effort icon + capitalize agent names by @markokraemer in https://github.com/kortix-ai/suna/pull/6508
fix(connectors): authenticate MCP catalog discovery by @markokraemer in https://github.com/kortix-ai/suna/pull/6507
feat(iam): remove duplicate Access cards, fix Customize discoverability by @markokraemer in https://github.com/kortix-ai/suna/pull/6506
fix: bound two stuck-runtime states — a wedged boot with no retry, and a runaway self-repeating turn by @markokraemer in https://github.com/kortix-ai/suna/pull/6509
feat(iam): invite-time project grants — one invite, account role + project access by @markokraemer in https://github.com/kortix-ai/suna/pull/6510
feat(secrets): make network-boundary parity across sandbox providers contractual by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6511
Server-truth M1: turn lifecycle moves to the control plane; the client stops guessing by @markokraemer in https://github.com/kortix-ai/suna/pull/6512
fix(web): unify "No second factor enrolled" alert tone + icon by @markokraemer in https://github.com/kortix-ai/suna/pull/6513
docs: the egress pin survives a stop/resume — measured on both shim providers by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6514
fix(web): stop the animated logo splash on account/group navigation by @markokraemer in https://github.com/kortix-ai/suna/pull/6515
feat(web): assign a custom role from inside a group, clarify Agent copy by @markokraemer in https://github.com/kortix-ai/suna/pull/6516
fix(daemon): do not arm the in-guest shim where a provider edge owns the destination by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6517
docs(runbook): enabling a sandbox provider is one atomic secret edit by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6518
enh(web): rework the public share page chrome by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6519
fix(api): a spawned sub-session inherits its parent's sharing, not private by @markokraemer in https://github.com/kortix-ai/suna/pull/6521
iam: strip Agents/Connectors/Skills/Customize from the member floor role by @markokraemer in https://github.com/kortix-ai/suna/pull/6522
fix(gateway): log the full request/response body, never a capped preview by @markokraemer in https://github.com/kortix-ai/suna/pull/6523
feat(web): unify secret Delivery + "Used by" into one Access picker by @markokraemer in https://github.com/kortix-ai/suna/pull/6525
Session truth M1.5: queue forwards between turns, first prompt is a durable row, dead-code sweep, sub-session integrity by @markokraemer in https://github.com/kortix-ai/suna/pull/6527
refactor(github): prove account-linking identity via the App's own OAuth, not Supabase by @markokraemer in https://github.com/kortix-ai/suna/pull/6526
Access control: one hub, one dialog, one row, one picker — agents deny-by-default, Editor removed, tokens IA by @markokraemer in https://github.com/kortix-ai/suna/pull/6531
feat(worktree): nuke --all with time rules for bulk teardown by @markokraemer in https://github.com/kortix-ai/suna/pull/6529
enh(web): bake a 110% UI scale into the default by @markokraemer in https://github.com/kortix-ai/suna/pull/6524
fix(desktop): answer HTTP Basic challenges instead of rendering a dead 401 by @markokraemer in https://github.com/kortix-ai/suna/pull/6455
chore(deps): bump pnpm/action-setup from 4 to 6 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6343
chore(deps): bump bridgecrewio/checkov-action from 12.3114.0 to 12.3117.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6342
chore(deps): bump actions/attest-build-provenance from 4.1.1 to 4.2.2 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6341
chore(deps): bump github/codeql-action from 4.37.4 to 4.37.7 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6340
chore(deps): bump github/codeql-action/upload-sarif from 4.37.4 to 4.37.7 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6339
chore(deps): bump golang from 1.25-bookworm to 1.26-bookworm in /apps/api by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6338
docs(monitors): internal shipping/verification/ops/removal record by @markokraemer in https://github.com/kortix-ai/suna/pull/6436
fix(billing): one grant idempotency key per subscription activation by @markokraemer in https://github.com/kortix-ai/suna/pull/6534
test(ke2e): GW-13 exhausts /v1/usage group_by enum, row shapes, malformed timestamps, empty window by @agent-kortix in https://github.com/kortix-ai/suna/pull/5254
fix: image/video show tool now wraps in ViewerFrame with toolbar actions by @agent-kortix in https://github.com/kortix-ai/suna/pull/6033
feat(selfhost): serve deployed Apps through the bundled Caddy ingress by @markokraemer in https://github.com/kortix-ai/suna/pull/6469
chore(deps): bump pypdf from 6.14.2 to 6.15.0 in /packages/starter/templates/general-knowledge-worker/.kortix/opencode/skills/presentations/scripts by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6262
feat(platinum-provider): idempotent create dedup + decoupled build-size knob by @allenabraham999 in https://github.com/kortix-ai/suna/pull/5411
docs(learnings): correct the tests-release entry; add the half-deployed-staging rule by @markokraemer in https://github.com/kortix-ai/suna/pull/6537
fix(web): keep capability-tab-routes server-safe — unblocks Deploy Dev frontend build by @markokraemer in https://github.com/kortix-ai/suna/pull/6533
fix(worktree): create --branch checks out a remote-only branch instead of forking HEAD by @markokraemer in https://github.com/kortix-ai/suna/pull/6536
feat(gateway): per-project OTLP trace export + Observability tab by @markokraemer in https://github.com/kortix-ai/suna/pull/4987
Revert "feat(gateway): per-project OTLP trace export + Observability tab (#4987)" by @markokraemer in https://github.com/kortix-ai/suna/pull/6538
test(apps): APP-4 teammate is a project member (editor role removed) by @markokraemer in https://github.com/kortix-ai/suna/pull/6532
fix(iam): don't cache empty agent-grant maps — grants visible on all replicas immediately by @markokraemer in https://github.com/kortix-ai/suna/pull/6535
Queue: one prompt per turn, chained on turn end, <1s delivery, instant Enter by @markokraemer in https://github.com/kortix-ai/suna/pull/6530
Revert "enh(web): bake a 110% UI scale into the default (#6524)" by @markokraemer in https://github.com/kortix-ai/suna/pull/6539
test(release-gate): make the gate passable — drop 5 permanent todo stubs, fix 7 stale/over-strict deployed-target flows by @markokraemer in https://github.com/kortix-ai/suna/pull/6542
perf(ke2e): overlap the serial lane, stop retrying timeouts, fail fast on funding, backoff+breaker in the client by @markokraemer in https://github.com/kortix-ai/suna/pull/6543
ci(release-gate): shard into parallel api/browser jobs, sweep test debris pre/post-run, assert browser env up front by @markokraemer in https://github.com/kortix-ai/suna/pull/6545
infra(staging): right-size for the release gate (2 tasks, on-demand base, bigger box), record DB tier, let CI see real origin status at the edge by @markokraemer in https://github.com/kortix-ai/suna/pull/6544
fix(security): close 3 Strix findings — egress-pin spoofing, trigger-session manager override, App proxy token scope by @markokraemer in https://github.com/kortix-ai/suna/pull/6541
test(ke2e): declare daytona on 3 flows that boot a real sandbox (P1.6) by @markokraemer in https://github.com/kortix-ai/suna/pull/6546
test(ke2e): send the edge CI-passthrough header so the release gate sees real origin status by @markokraemer in https://github.com/kortix-ai/suna/pull/6547
infra(ecs-api): force_new_deployment when the capacity-provider strategy changes (fixes staging TF apply) by @markokraemer in https://github.com/kortix-ai/suna/pull/6549
test(ke2e): fix the two runtime defects that failed the first sharded release-gate run by @markokraemer in https://github.com/kortix-ai/suna/pull/6552
Canonical RBAC: one model (role_assignments), one engine (authorize), one write path (assignRole) — dual-read window by @markokraemer in https://github.com/kortix-ai/suna/pull/6554
ci(release-gate): the pre-run sweep can never skip the shards by @markokraemer in https://github.com/kortix-ai/suna/pull/6556
fix(iam): don't cache empty agent object-grant maps (canonical engine) — grants take effect on all replicas immediately by @markokraemer in https://github.com/kortix-ai/suna/pull/6558
fix(iam): GET /projects/:id/group-grants requires project.members.manage (Strix MEDIUM) by @markokraemer in https://github.com/kortix-ai/suna/pull/6560
ci(release-gate): halve the shard fleet (26→15 workers) and retry a timed-out flow once by @markokraemer in https://github.com/kortix-ai/suna/pull/6561
feat(sandbox): add flagged fast cold boot runtime by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6562
fix(sandbox): harden lazy tool dispatch by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6565
fix(dev): apply fast cold boot flag to ECS tasks by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6566
fix(api): ship fast runtime build artifacts by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6567
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.12.8...v0.13.0
Read the full release on GitHub →
v0.12.8 August 12, 2026 New
Act-as for support — platform admins can open a customer account for up to one hour, with a visible banner and full auditing. Anything that would outlive the hour — tokens, memberships, invites, SSO providers, public shares, tunnels, agent scope changes — is refused during the session.
Per-account entitlement overrides — operators grant or extend individual entitlements per account, each with an optional expiry, from a new admin override console. Expired overrides stop applying on their own.
One plan catalog — plans now resolve through a single catalog and resolver across API, SDK and web. The duplicate frontend tier catalogs and the "· legacy" plan label are gone.
Grant a secret to an agent in one call — a new API route grants an agent access to a secret, and the web app offers that grant directly from the warning that reports the missing access.
Session overrides in one place — the Scope panel is replaced by a single overrides popover: agent, model, sandbox and connector overrides together, labels grounded in the agent's real defaults, and a reset that is always reachable.
Managed model lineup refresh — Muse Spark 1.2, MiniMax M3 and GPT-5.6 Luna join GLM 5.2, and DeepSeek V4 Flash becomes the platform default.
Sandboxes stay current — every deploy serves its CLI and managed skills at /v1/runtime-assets, and sandboxes reconcile against it on start, restart and resume.
Improved
Project sessions are grouped by last activity instead of creation date.
Account settings are reachable from the user menu.
Model errors keep their upstream cause through gateway fallbacks, and context overflow is reported consistently — including after a fallback.
Managed-model capabilities reported by the gateway now come from real pricing data.
An outdated CLI now gets a clear "update your CLI" warning on the connector routes instead of a raw 404.
Fixed
Two ways the session message queue could stall.
Saving session scope without touching connectors no longer writes a connector override, and a saved agent secret selection is retained.
Secret delivery on Platinum sandboxes resolves replicas reliably and arms the secrecy boundary within the provider's real timing budget, without re-arming on every turn.
Security and compliance
The impersonation deny-list also covers agent-governance writes (agents/:name/scope, secrets/:id/grant), connector and channel management, and setup-link minting — all closed during review, before release.
MFA enforcement for IAM users, WAF attached to the web load balancers, load-balancer log bucket versioning, and a tightly scoped CI Terraform role.
Internal
Terraform for dev and prod now applies from CI behind per-environment OIDC roles, with drift detection re-registered.
Production deploys stamp the frontend with the release version and no longer allow mixed frontend/API states; migrations with blocking backfills are rejected at lint time.
Full-stack PR previews run in warm sandboxes, and the local test gates were stabilized.
What's Changed
chore(release): VERSION → 0.12.8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6350
feat(llm-catalog): add Muse Spark 1.2, MiniMax M3, GPT-5.6 Luna; DeepSeek V4 Flash default by @markokraemer in https://github.com/kortix-ai/suna/pull/6352
test: run full-stack PR previews in warm sandboxes by @markokraemer in https://github.com/kortix-ai/suna/pull/6347
fix(ci): install Bun for preview controller by @markokraemer in https://github.com/kortix-ai/suna/pull/6354
fix(llm-gateway): serve real managed-model capabilities via pricingRef by @markokraemer in https://github.com/kortix-ai/suna/pull/6355
fix(web): remove two ways the message queue can stall by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6349
fix(test): separate Platinum cold and restore budgets by @markokraemer in https://github.com/kortix-ai/suna/pull/6356
fix(tests): scope preview idempotency to workflow run by @markokraemer in https://github.com/kortix-ai/suna/pull/6360
fix(web,api): session scope defaults to Project default + unified overrides popover by @markokraemer in https://github.com/kortix-ai/suna/pull/6361
fix(sandbox): always-latest kortix CLI + managed skills on every session start/restart by @markokraemer in https://github.com/kortix-ai/suna/pull/6359
feat(infra): CI-applied Terraform — reusable guarded apply, per-env OIDC roles, drift coverage by @markokraemer in https://github.com/kortix-ai/suna/pull/6358
fix(tests): bake Docker Compose into preview workers by @markokraemer in https://github.com/kortix-ai/suna/pull/6363
fix(web): group sessions by last activity, not creation by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6357
fix(llm): preserve upstream failure chains by @markokraemer in https://github.com/kortix-ai/suna/pull/6362
fix(web): ground session-override labels in system truth + quiet trigger by @markokraemer in https://github.com/kortix-ai/suna/pull/6364
fix(ci): force gateway in full dev deploys by @markokraemer in https://github.com/kortix-ai/suna/pull/6365
test(infra): align the preview runtime contract test with the sandbox-preview architecture by @markokraemer in https://github.com/kortix-ai/suna/pull/6366
billing: fix admin primitives — enterprise flag, expiring trial grants, monthly re-grant, member-role control by @markokraemer in https://github.com/kortix-ai/suna/pull/6367
fix(gateway): normalize message-only context overflow by @markokraemer in https://github.com/kortix-ai/suna/pull/6368
Stabilize preview and full local test gates by @markokraemer in https://github.com/kortix-ai/suna/pull/6369
fix(cli): suppress browser launches in CI by @markokraemer in https://github.com/kortix-ai/suna/pull/6370
fix(deploy-prod): gate the dead us-east-2 shadow lane behind ENABLE_US_SHADOW_DEPLOY by @markokraemer in https://github.com/kortix-ai/suna/pull/6372
ci(terraform): auto-apply environments/dev and environments/prod by @markokraemer in https://github.com/kortix-ai/suna/pull/6373
fix(web): overrides trigger icon-only, save closes panel, agent-default labels, sandbox chooser in panel by @markokraemer in https://github.com/kortix-ai/suna/pull/6371
billing: plan catalog + pure resolver (PR2 — zero consumers switched) by @markokraemer in https://github.com/kortix-ai/suna/pull/6375
fix(web): suppress Paper Shaders library-guard 'this.gl is null' noise (BS f0c8c422) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6374
billing: one resolved plan view everywhere — kill the '· legacy' label (PR3) by @markokraemer in https://github.com/kortix-ai/suna/pull/6376
fix(ci): stop the dev deploy cancelling its own API build by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6377
feat: grant a secret to an agent from the warning that reports it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6378
Keep saved agent secret selection in sync by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6379
billing: provider-vs-admin write ownership for credit_accounts (PR4) by @markokraemer in https://github.com/kortix-ai/suna/pull/6380
fix: a network-boundary secret made every agent turn fail by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6381
fix(secrets): give the boundary arm a budget the provider can meet by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6384
billing: per-account overrides with expiry + compute pricing + admin override console (PR5) by @markokraemer in https://github.com/kortix-ai/suna/pull/6383
fix(compliance): enforce ALB log bucket versioning (DCF-78) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6382
billing: kill the duplicate frontend tier catalogs (PR7) by @markokraemer in https://github.com/kortix-ai/suna/pull/6385
billing: act-as impersonation for platform admins (PR6) by @markokraemer in https://github.com/kortix-ai/suna/pull/6386
fix(api): deny agent-scope and secret-grant writes during impersonation by @markokraemer in https://github.com/kortix-ai/suna/pull/6388
fix(api): deny connector, channel-connect and setup-link writes during impersonation by @markokraemer in https://github.com/kortix-ai/suna/pull/6390
fix(ci): raise tests-release timeout to 45m so the full suite can finish by @markokraemer in https://github.com/kortix-ai/suna/pull/6393
fix(ci): raise tests-release timeout to 60m (measured ~47m real runtime) by @markokraemer in https://github.com/kortix-ai/suna/pull/6394
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.12.7...v0.12.8
Read the full release on GitHub →
v0.12.7 August 10, 2026 New
Your terminal is now a first-class way to work with an agent: kortix connect opens a session picker and attaches a full terminal UI to any running session, and can create a session and connect in one step. Bare kortix shows the landing screen again.
Feature flags: one gating primitive across API, web, and CLI. Disabled features answer with a clear feature_disabled error everywhere, and each project gets a dedicated Feature flags section under Customize.
Network-boundary secrets: secrets can now be marked for delivery only inside the sandbox network boundary, enforced per provider, configurable from web and CLI. Protected Platinum credentials sync automatically, misconfigurations are caught at save time instead of at boot, and the UI only offers delivery modes the project can honour.
A workspace switcher and a /new create page: switch workspaces from anywhere, reach account settings from the switcher, and create projects from one place.
Connector approvals are reviewed inline in the session, and connector setup finishes through one atomic path — no more half-finished connections when a webhook and a redirect race each other.
The starter ships a continual-harness skill: agent scaffolding that reviews its own sessions and refines itself over time.
Live session reload: when a session restarts, the UI now streams the reload progress instead of going quiet.
Improved
Sandbox lifetime is now bound to the agent. Active turns keep compute alive; finished or inactive sessions contract to a short retrieval window; every stop records why it happened. Wake billing starts only after the provider confirms the machine is actually running — concurrent and failed wakes no longer bill.
Session turns read in plain language, and rendering them costs far less.
Connector search covers the whole Pipedream catalogue, with categories filtered server-side. New sessions pick up server-resolved connector defaults.
Computer profiles are bound per machine, personal machines are allowed in project profiles, and the Computer Tunnel is hardened with computer-use restored.
Session titles converge on the runtime title everywhere — no more three names for one session.
Workspace file and spreadsheet reads retry during sandbox startup instead of failing on the first try.
Audit trails reconstruct complete session integrity chains, and runtime state survives provider restarts.
Fixed
A turn that is still being written can no longer be aborted mid-write, and "Interrupted" is only shown when a turn was actually interrupted.
The session error card no longer blinks after giving up, no longer appears while the runtime is intentionally parked, and a temporary 503 during startup is no longer treated as a failure.
The thinking shimmer only animates the thought the model is still writing.
Starter agent templates fetch managed skills through the CLI instead of assuming they are on disk.
A building sandbox shows a Details action instead of a broken Retry.
Inline content previews render again.
The public unauthenticated /review prototype page is gone, a connector URL parsing denial-of-service is eliminated, SES mail now runs on a task role instead of an IAM user, and production deploys refuse a mismatched Supabase auth configuration.
What's Changed
chore(release): VERSION → 0.12.7 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6268
fix(audit): make OpenCode relay spool writable by @markokraemer in https://github.com/kortix-ai/suna/pull/6270
fix(web): hide Apps discovery until the project enables the apps experiment by @markokraemer in https://github.com/kortix-ai/suna/pull/6271
fix(audit): persist runtime state outside provider tmpfs by @markokraemer in https://github.com/kortix-ai/suna/pull/6272
fix(runtime): parse CRLF OpenCode event frames by @markokraemer in https://github.com/kortix-ai/suna/pull/6274
fix(web): remove public unauthenticated /review prototype page by @markokraemer in https://github.com/kortix-ai/suna/pull/6275
feat(api): feature-flag core — declared enforcement + standard feature_disabled gate by @markokraemer in https://github.com/kortix-ai/suna/pull/6277
fix(audit): return complete session integrity chains by @markokraemer in https://github.com/kortix-ai/suna/pull/6278
feat(web,sdk): feature-flag surface — one gating primitive, dedicated Customize section by @markokraemer in https://github.com/kortix-ai/suna/pull/6279
feat(cli,tests,docs): feature_disabled everywhere — CLI message, drift pin, flags UI spec by @markokraemer in https://github.com/kortix-ai/suna/pull/6280
fix(sandbox): bind lifecycle and billing to agent activity by @markokraemer in https://github.com/kortix-ai/suna/pull/6281
feat(starter): continual harness — self-refining agent scaffolding (arXiv 2605.09998) by @markokraemer in https://github.com/kortix-ai/suna/pull/6282
fix(sdk): eliminate connector URL regex denial of service by @markokraemer in https://github.com/kortix-ai/suna/pull/6284
fix(web): select connector defaults for new sessions by @markokraemer in https://github.com/kortix-ai/suna/pull/6286
Refactor computers into per-machine connector profiles by @markokraemer in https://github.com/kortix-ai/suna/pull/6287
fix(web): keep connector defaults server-resolved by @markokraemer in https://github.com/kortix-ai/suna/pull/6288
fix(compliance): add MFA enforcement denial policy for IAM users (DCF-67) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6289
fix(web): de-noise CAPTCHA interceptor widgetId race from extension by @agent-kortix in https://github.com/kortix-ai/suna/pull/6290
refactor(connectors): group assigned computers in profiles by @markokraemer in https://github.com/kortix-ai/suna/pull/6292
fix(connectors): isolate legacy computer aggregate by @markokraemer in https://github.com/kortix-ai/suna/pull/6293
feat(secrets): enforce network-boundary delivery by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6297
feat(web,api,sdk): workspace switcher and /new create page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6276
fix(computers): allow personal machines in project profiles by @markokraemer in https://github.com/kortix-ai/suna/pull/6299
Publish agent tunnel with platform releases by @markokraemer in https://github.com/kortix-ai/suna/pull/6301
fix(api,sdk,web): converge session titles on the runtime title everywhere by @markokraemer in https://github.com/kortix-ai/suna/pull/6302
Remove agent tunnel keep-awake mode by @markokraemer in https://github.com/kortix-ai/suna/pull/6304
fix(web): restore preview for inline content artifacts by @agent-kortix in https://github.com/kortix-ai/suna/pull/6300
fix(web): building sandbox alert shows Details action instead of Retry build by @markokraemer in https://github.com/kortix-ai/suna/pull/6306
fix(connectors): search the whole Pipedream catalogue, filter categories server-side by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6307
feat(web): review connector approvals inline in the session by @markokraemer in https://github.com/kortix-ai/suna/pull/6311
fix(api,sdk,web): unify connector finalize into one atomic path; webhook auxiliary by @markokraemer in https://github.com/kortix-ai/suna/pull/6312
fix(agent-tunnel): harden Computer Tunnel and restore CUA by @markokraemer in https://github.com/kortix-ai/suna/pull/6313
feat(web,sdk): plain-language turn UI and a large render-cost cut by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6309
fix(tunnel): record signed heartbeat pongs by @markokraemer in https://github.com/kortix-ai/suna/pull/6315
feat(cli): bare kortix attaches the OpenCode TUI to a session (managed binary + picker) by @markokraemer in https://github.com/kortix-ai/suna/pull/6317
fix(web): retry all workspace file reads during sandbox startup by @agent-kortix in https://github.com/kortix-ai/suna/pull/6310
feat(cli): connect picker under connect (bare kortix = landing again) + create-and-connect by @markokraemer in https://github.com/kortix-ai/suna/pull/6318
feat(web): deploy frontend and PR previews on ECS by @markokraemer in https://github.com/kortix-ai/suna/pull/6319
test(ke2e): add fast local flow runner by @markokraemer in https://github.com/kortix-ai/suna/pull/6260
fix(compliance): replace SES IAM user with ECS task role (DCF-71) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6295
feat(web): expose session restart actions in command palette by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6321
fix(daemon): never abort a turn that is still being written by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6322
feat: let agents reconcile branch conflicts before reload by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6323
ci: run each test suite once by @markokraemer in https://github.com/kortix-ai/suna/pull/6324
fix(web): "Interrupted" must mean interrupted, not "the word abort appeared" by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6325
Show live session config reload progress by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6326
infra: retire unused QA report portal by @markokraemer in https://github.com/kortix-ai/suna/pull/6328
ci: remove completed QA teardown workflow by @markokraemer in https://github.com/kortix-ai/suna/pull/6333
infra: cut dev and previews over to ECS web by @markokraemer in https://github.com/kortix-ai/suna/pull/6332
fix(starter): route managed-skill references through kortix-cli + live kortix skills get by @markokraemer in https://github.com/kortix-ai/suna/pull/6330
fix: network-boundary secrets fail loudly instead of silently by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6334
fix(web): the session header shows the session name, not opencode's title by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6327
fix(infra): preserve canonical dev DNS metadata by @markokraemer in https://github.com/kortix-ai/suna/pull/6336
fix(compliance): associate ECS web ALBs with WAF (DCF-88) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6344
test: sample full-stack test report artifacts by @markokraemer in https://github.com/kortix-ai/suna/pull/6337
fix(release): gate prod frontend on live API; forbid blocking backfills in migrations by @markokraemer in https://github.com/kortix-ai/suna/pull/6346
feat(llm-catalog): slim managed lineup to GLM 5.2 + DeepSeek V4 Flash by @markokraemer in https://github.com/kortix-ai/suna/pull/6348
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.12.6...v0.12.7
Read the full release on GitHub →
v0.12.6 August 8, 2026 New
Imported legacy Suna chats are now first-class: migrated sessions show up in the session list with a restore state (instead of a misleading "Done"), and opening one restores its full conversation history into the session. Files from every imported chat live in the project repo under legacy/. (#6235, #6241, #6251)
Admin: an activity-analytics dashboard, a projects console, clearer tier labels, and admin-issued trials with per-account entitlement overrides. (#6244, #6249, #6250)
Apps: serverless app deployments are provider-neutral — any Dockerfile runtime builds and serves (including non-root images), and the first request after idle reliably wakes the app. (#6253)
Reloading a busy session asks before stopping the running turn, and says clearly when a turn was stopped.
Improved
Setup links: secret links now last 7 days, an expired link says it expired instead of "invalid", and completing one notifies the waiting session immediately. (#6240)
Faster navigation between projects and sessions: one cache entry per entity, and route segments are no longer discarded on the way. (#6231)
Browser tabs are named after the session you have open. (#6236)
Fixed
Billing: subscriptions activate only after the first invoice is paid; compute metering opens and closes windows atomically with precise start times; sandbox resume reconciliation is fenced so a wake race can't double-bill; a ledger row can no longer be both usage and an admin debit. (#6247, #6248)
The terminal stays attached when the session runtime restarts during a reload.
Removed noisy request-timeout toasts.
Firefox no longer shows a crash message from the background shader when WebGL is unavailable. (#6254)
Removed
The local Docker sandbox provider. Sessions run on cloud sandboxes.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.12.5...v0.12.6
Release on GitHub →
v0.12.5 August 7, 2026 Secret delivery is now a managed control plane, connectors speak one language across the whole platform, and billing moves to flat credit plans.
New
Secret delivery controls. Decide exactly which secrets each agent session can use. Policies are managed from the web app and CLI, secrets reach sandboxes through an audited HTTPS broker with session-scoped handles, revoked secrets disappear from running agents, and LLM, connector, git, and subscription credentials are isolated from each other. A new kortix audit CLI command reads the account audit trail.
Unified connectors. One connector model across web, CLI, SDK, and API: consistent Connector and Connection terminology, a single data plane in @kortix/sdk, and connector credentials that bind to project secrets. The connector catalogue now pages through the full ~2,700-app list instead of stopping at 192.
Flat credit plans. Plans are priced as flat monthly credits instead of per-seat pricing. Billing also gained idempotent compute debits and accurate spend reporting.
Rebuilt project onboarding. A single-column, seven-step flow with a clearer Slack setup and plan selection.
Capability pages. Connectors, skills, and agents are browsable pages instead of a configuration overlay.
Use-case packs. Marketplace runbooks are grouped into installable packs, with real loading and error states and inline project creation.
Document conversion by default. Every new sandbox includes a convert-documents-to-markdown skill backed by a baked-in converter.
Serverless app deployments. Provider-neutral serverless deployments for apps, served behind a managed edge with wildcard TLS and signed public hosts.
Kimi K3 is available as a managed model.
Improved
Sessions survive interruptions. A pending agent question is parked when its sandbox dies and restored on the next boot, and a stored answer is delivered as a follow-up turn. Runtime updates boot and verify the new runtime before retiring the old one.
Chat UX. Instant session rename, a truthful header title, idempotent provisioning, preview verdicts, and grouped activity. In-flight sends survive navigation, and tool failures are reported honestly.
Session list. Rebuilt with status states, collapsible sections, and a nested filter menu.
Faster, calmer navigation. Project pages load faster (Next.js 16.3), and passively opening a project no longer wakes idle sandboxes.
Clearer errors. The LLM gateway surfaces real upstream provider errors instead of a generic Bad Gateway, and large repository branch listings are bounded.
Fixed
Billing: the same compute window can no longer be charged twice, "spend this period" reports the correct window, the paid seat is released when SCIM deprovisions a member, BYOK failover respects the managed-model entitlement, and the UI shows the concurrency limit the server actually enforces.
Agent workspaces are strictly enforced across repository, git, and clone APIs.
Approvals require a full review of each call, and the daemon no longer auto-answers questions outside a channel session.
The Terms of Service link opens the document directly.
Desktop: the title bar aligns with the OS window controls.
Production API recovery is hardened: migration-safe restarts and better behavior under memory pressure.
What's Changed
chore(release): VERSION → 0.12.5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6148
Billing correctness + park-and-restore for blocked turns by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6145
fix(db): generated migrations get the safety header, unblock the squawk gate by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6150
chore(web): upgrade Next.js to 16.3.0 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6151
Rework connectors, skills and commands into browsable capability pages by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6054
fix(daemon): stop auto-answering questions outside a channel session by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6153
feat(secrets): complete secure delivery controls by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6134
feat(web): session list — status states, collapsible sections, and a nested filter menu by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6142
fix(approvals): require full one-call review by @markokraemer in https://github.com/kortix-ai/suna/pull/6154
fix(web): keep standalone output off Vercel by @markokraemer in https://github.com/kortix-ai/suna/pull/6155
fix: attribute CLI actions in centralized audit logs by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6156
fix(billing): stop quoting the wrong seat grant and seat price by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6157
feat(secrets): bind project secrets to connectors by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6158
fix(web): align approval indicator with design system by @markokraemer in https://github.com/kortix-ai/suna/pull/6159
fix(web,api,sdk): chat UX — header title, instant rename, provision idempotency, preview verdicts, activity grouping by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6136
feat(billing): flat credit plans replace seats, no included managed LLM by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6160
feat(web): update secrets optimistically by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6164
fix(api): support pinned secret broker requests on Bun 1.2 by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6167
fix(web): guard tool-outcome parsing against null JSON output (session page crash) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6163
fix(web): de-noise old-browser DOM null-deref on marketing homepage (scrollLeft / appendChild) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6161
fix(web): de-noise model_not_servable unhandled rejection (BS 9784f440) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6162
fix(web): hide the regressed capability pages behind a flag by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6168
refactor: unify CLI connector and connection terminology by @markokraemer in https://github.com/kortix-ai/suna/pull/6165
feat(sandbox): bake @firecrawl/anydoc + default convert-documents-to-markdown skill by @markokraemer in https://github.com/kortix-ai/suna/pull/6170
fix(marketplace): stop listing use-case pack skills as Kortix Starter contents by @markokraemer in https://github.com/kortix-ai/suna/pull/6171
Remove standalone Commands capability page by @agent-kortix in https://github.com/kortix-ai/suna/pull/6169
test(marketplace): add convert-documents-to-markdown to the pinned starter floor by @markokraemer in https://github.com/kortix-ai/suna/pull/6172
refactor(db): cut over connector physical identifiers by @markokraemer in https://github.com/kortix-ai/suna/pull/6173
feat(marketplace): group use-case runbooks under a browsable Use-case pack project by @markokraemer in https://github.com/kortix-ai/suna/pull/6174
fix(web): use-case install dialog — real load/error states + inline project creation by @markokraemer in https://github.com/kortix-ai/suna/pull/6175
refactor(connectors): remove executor and profile compatibility by @markokraemer in https://github.com/kortix-ai/suna/pull/6176
fix(desktop): pin the title-bar band to the OS window controls by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6178
feat(web): adopt smooth shadow system by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6179
refactor(sdk): unify Connector data plane by @markokraemer in https://github.com/kortix-ai/suna/pull/6180
feat(web): add standalone Agents capability page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6177
feat(worktree): multi-name nuke with per-worktree confirmation by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6181
feat(web,api,sdk): a calmer, more personal onboarding experience by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6111
fix(prod): harden API recovery after OOM incident by @markokraemer in https://github.com/kortix-ai/suna/pull/6182
fix(prod): enforce migration-safe ECS recovery by @markokraemer in https://github.com/kortix-ai/suna/pull/6183
fix(secrets): verify sandbox env delivery end to end by @markokraemer in https://github.com/kortix-ai/suna/pull/6184
fix(web): filter Supabase gotrue OTP-expired Object-Not-Found rejection noise by @agent-kortix in https://github.com/kortix-ai/suna/pull/6189
fix(ke2e): align release flows with current contracts by @markokraemer in https://github.com/kortix-ai/suna/pull/6190
fix(release): retry transient flow and trigger conflicts by @markokraemer in https://github.com/kortix-ai/suna/pull/6192
fix(release): bound and expose full gate progress by @markokraemer in https://github.com/kortix-ai/suna/pull/6194
feat: teach agents how to use scoped secrets safely by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6195
fix: clear revoked secrets from new sandbox processes by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6198
feat(apps): add provider-neutral serverless deployments by @markokraemer in https://github.com/kortix-ai/suna/pull/6197
fix(ci): clear v0.12.5 security findings by @markokraemer in https://github.com/kortix-ai/suna/pull/6199
fix: keep agent config freshness safe and unobtrusive by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6202
ci(apps): provision wildcard edge DNS by @markokraemer in https://github.com/kortix-ai/suna/pull/6201
fix(ci): use supported Wrangler secret-list format by @markokraemer in https://github.com/kortix-ai/suna/pull/6204
fix(apps): honor managed storage upload limit by @markokraemer in https://github.com/kortix-ai/suna/pull/6205
fix(apps,connectors): repair edge routing and long sync calls by @markokraemer in https://github.com/kortix-ai/suna/pull/6206
fix(apps): update Caddy security release by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6208
fix(apps): build patched Caddy in API image by @markokraemer in https://github.com/kortix-ai/suna/pull/6209
fix(apps): build static Caddy runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6212
fix(apps): make Caddy cross-build reproducible by @markokraemer in https://github.com/kortix-ai/suna/pull/6214
feat(daemon): verified opencode reload — boot the new one, then retire the old by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6213
feat(api): materialize restricted agent environments by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6126
fix(ci): resolve staging scanner findings by @markokraemer in https://github.com/kortix-ai/suna/pull/6218
test(daemon): make the reload decline path provable on a real box by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6219
fix(apps): preserve runtime billing through idle lifecycle by @markokraemer in https://github.com/kortix-ai/suna/pull/6220
ci(apps): provision nested wildcard certificate by @markokraemer in https://github.com/kortix-ai/suna/pull/6207
fix(ci): make Rekor signing retries idempotent by @markokraemer in https://github.com/kortix-ai/suna/pull/6221
fix: promote verified agent config replacements by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6223
fix(ci): checkout signing helper in supply-chain job by @markokraemer in https://github.com/kortix-ai/suna/pull/6224
fix(ci): scope Apps edge certificate token by @markokraemer in https://github.com/kortix-ai/suna/pull/6222
fix(web): de-noise Canvas getImageData OOM on marketing homepage (BS b4b43847) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6225
fix(apps): gate projects and bootstrap Platinum runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6226
fix(web): connector catalogue stops at 192 of ~2,700 apps — restore paging, add infinite scroll by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6228
feat(reload): say the turn was stopped, and ask before stopping it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6230
fix(proxy): the opencode PTY must follow opencode across a reload swap by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6233
perf(web,sdk): one cache entry per entity, and stop discarding route segments by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6231
fix: suppress request deadline toasts by @markokraemer in https://github.com/kortix-ai/suna/pull/6234
fix(projects): re-land legacy-migration chat rehydrate on session open by @markokraemer in https://github.com/kortix-ai/suna/pull/6235
fix(apps): make cold wake and Dockerfile runtimes reliable by @markokraemer in https://github.com/kortix-ai/suna/pull/6227
fix(web): name the session browser tab, owned by route metadata by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6236
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.12.4...v0.12.5
Read the full release on GitHub →
v0.12.4 August 5, 2026 Fixed
Transactional email — team invites, project access requests, and demo-request notifications — now goes through a chain of email providers. If one provider fails or is unavailable, the next one takes over automatically. This removes the single point of failure that delayed some emails on August 5.
The Terms of Service link now opens the document directly instead of its containing folder.
Internal
End-to-end cost tests compute gap-fill counts from their own time window, fixing a flaky check.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.12.3...v0.12.4
Release on GitHub →
v0.12.3 August 5, 2026 New
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: --quiet is 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
Read the full release on GitHub →
v0.12.2 August 3, 2026 Promotes the full candidate verified on staging. Prevents passive session reads and project navigation from waking stopped sandboxes; corrects session activity timestamps; adds session access, reload, cost, and guarded secret-delivery controls; improves channel, email, executor, chat, download, PPTX, and account-usage behavior; and completes the ECS-focused infrastructure and deployment updates. Fast-track note: staging image build and deployment passed. One unrelated landing-page accessibility assertion for a scrollable pre element failed; the four browser interaction tests, login accessibility, and migration tests passed.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.12.1...v0.12.2
Read the full release on GitHub →
v0.12.1 August 2, 2026 New
Sessions can require connectors up front: select a connector for a session before it is connected, and when a prompt needs a connector that is not connected yet, the session pauses with a connect card instead of failing.
Project icons: pick an emoji or a named glyph for each project.
When an app preview stops or fails to load, you can send it straight to the agent to fix.
Markdown files with frontmatter now render their metadata.
Improved
The project session list was rebuilt as a cleaner everyday list.
Model management shows which models are enabled for a project, and the Manage models tab counts them correctly.
Error screens include one-click copy so you can report exactly what went wrong.
The sidebar merges the Kortix mark and project switcher into one control, with layout and hover fixes.
Sandbox capacity problems surface clear retry diagnostics instead of failing silently.
Fixed
New signups land directly in their project instead of the project list.
E2B sandboxes: template builds route through the self-host domain, concurrent builds settle correctly, build uploads stream reliably, and permanent sandbox removal is bounded.
The file viewer no longer errors when a file is missing from the repo.
Self-hosted installs can configure the API memory ceiling.
Console noise from Android WebView is filtered out of session logs.
Release pipeline: a stalled dark-region replica can no longer hold back a release, which had left recent releases without their published notes.
What's Changed
chore(release): staging VERSION → 0.9.99 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4264
Promote main → staging (LLM provider keys always project-wide + batch) by @markokraemer in https://github.com/kortix-ai/suna/pull/4273
chore(release): staging VERSION → 0.9.100 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4280
Promote main → staging: 0.9.100 release candidate by @markokraemer in https://github.com/kortix-ai/suna/pull/4312
promote: snapshot quota fix + IAM capability gating → staging by @markokraemer in https://github.com/kortix-ai/suna/pull/4335
chore(staging): promote main → staging (fix: prod sandbox_provider platinum enum drift) by @markokraemer in https://github.com/kortix-ai/suna/pull/4338
chore(release): staging VERSION → 0.9.101 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4346
Staging by @kubet in https://github.com/kortix-ai/suna/pull/4360
Promote main → staging: v0.9.101 release candidate by @kubet in https://github.com/kortix-ai/suna/pull/4363
chore(release): staging VERSION → 0.9.102 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4368
Promote main → staging: release candidate (incl. slack bind-thread #4385) by @markokraemer in https://github.com/kortix-ai/suna/pull/4389
chore(release): staging VERSION → 0.9.103 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4394
release: promote main session-identity safeguards to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/4462
release: complete staging health verification by @markokraemer in https://github.com/kortix-ai/suna/pull/4466
chore(release): promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/4468
chore(release): promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/4471
chore(release): promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/4475
chore(release): staging VERSION → 0.9.104 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4478
fix: recover prod migrations and session uploads by @markokraemer in https://github.com/kortix-ai/suna/pull/4482
chore(release): staging VERSION → 0.9.105 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4487
chore(release): staging VERSION → 0.9.106 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4492
chore(release): staging VERSION → 0.9.107 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4501
hotfix: auto-resume a stopped box on active OpenCode access (sandbox not ready fix) by @markokraemer in https://github.com/kortix-ai/suna/pull/4506
chore(release): staging VERSION → 0.9.108 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4512
chore(release): staging VERSION → 0.9.109 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4520
Promote main → staging: generic self-host + in-app git by @markokraemer in https://github.com/kortix-ai/suna/pull/4727
chore(release): staging VERSION → 0.10.1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4734
Promote main → staging: self-host hardening (post-v0.10.0) by @markokraemer in https://github.com/kortix-ai/suna/pull/4735
chore(release): staging VERSION → 0.10.2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4743
Promote main → staging: self-host wave 3 by @markokraemer in https://github.com/kortix-ai/suna/pull/4746
Promote main → staging: self-host wave 3 by @markokraemer in https://github.com/kortix-ai/suna/pull/4747
Promote main → staging: self-host wave (identity polish, account-creation restriction, managed-provider default fix) by @markokraemer in https://github.com/kortix-ai/suna/pull/4756
chore(release): staging VERSION → 0.10.3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4761
Promote main → staging: v0.10.3 release train (self-host hardening, local-docker provider, migration safety, auth refresh) by @markokraemer in https://github.com/kortix-ai/suna/pull/4772
chore(release): staging VERSION → 0.10.4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4779
Release candidate: managed model catalog hotfix by @markokraemer in https://github.com/kortix-ai/suna/pull/4784
fix(release): restore staging managed-model gateway by @markokraemer in https://github.com/kortix-ai/suna/pull/4789
chore(release): staging VERSION → 0.10.5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4792
fix(infra): restore prod EKS gateway origin TLS by @markokraemer in https://github.com/kortix-ai/suna/pull/4795
fix(gateway): stamp promoted release version by @markokraemer in https://github.com/kortix-ai/suna/pull/4798
chore(release): staging VERSION → 0.10.7 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4804
Promote main → staging: v0.10.7 release train by @markokraemer in https://github.com/kortix-ai/suna/pull/4844
chore(release): staging VERSION → 0.10.8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4850
Promote main → staging (v0.10.8 candidate) by @markokraemer in https://github.com/kortix-ai/suna/pull/4852
Promote main → staging for v0.10.8 (max_tokens, BYOK-shared, toast, pty, pipeline hardening) by @markokraemer in https://github.com/kortix-ai/suna/pull/4864
chore(release): staging VERSION → 0.10.9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4875
Promote to staging: Easy/Advanced session panel (#4120 + #4867) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/4878
Promote main → staging for v0.10.9 (self-host SSO redirect fix, gateway Argo render fix, Cloudflare Access SAML guide) by @markokraemer in https://github.com/kortix-ai/suna/pull/4883
chore(release): staging VERSION → 0.10.10 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4886
Promote main to staging (session panel + show tool fixes) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/4888
chore(release): staging VERSION → 0.10.11 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4891
release: promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/4912
release: promote main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/4941
chore(release): promote accessibility gate fix to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/4947
fix(release): align QA with staging environment by @markokraemer in https://github.com/kortix-ai/suna/pull/4952
Promote release QA fixes to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/4961
Promote release QA fixes to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/4963
Promote staging secret preservation by @markokraemer in https://github.com/kortix-ai/suna/pull/4965
release: promote authenticated release coverage by @markokraemer in https://github.com/kortix-ai/suna/pull/4967
Promote main to staging: self-host release QA isolation by @markokraemer in https://github.com/kortix-ai/suna/pull/4970
Release candidate: LLM Gateway on AI-SDK + models.dev (v0.10.11) by @markokraemer in https://github.com/kortix-ai/suna/pull/5014
test(ke2e): refresh two stale flow assertions for v0.10.11 (staging) by @markokraemer in https://github.com/kortix-ai/suna/pull/5018
fix(sandbox): warm-bake Chromium cache order + 30min timeout (staging) by @markokraemer in https://github.com/kortix-ai/suna/pull/5044
chore(release): staging VERSION → 0.10.12 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5047
chore(staging): promote main → staging for v0.10.12 (sandbox ppwarm FROM-base fix) by @markokraemer in https://github.com/kortix-ai/suna/pull/5052
fix(sandbox): Chromium cache-order on the base image — staging hotfix for the v0.10.11 session-boot regression by @markokraemer in https://github.com/kortix-ai/suna/pull/5059
Promote main → staging (v0.10.12 candidate: opencode config fix + Chromium cache-order + gateway) by @markokraemer in https://github.com/kortix-ai/suna/pull/5070
chore(release): staging VERSION → 0.10.13 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5075
Promote main → staging: Anthropic adaptive-thinking fix (+ gateway mapping spec) by @markokraemer in https://github.com/kortix-ai/suna/pull/5078
Staging: gateway provider adapters + capability gating, IAM/SCIM identity UX, git-provider project creation by @markokraemer in https://github.com/kortix-ai/suna/pull/5100
chore(release): staging VERSION → 0.10.14 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5136
Promote main to staging (v0.10.14 candidate) by @markokraemer in https://github.com/kortix-ai/suna/pull/5196
Promote main to staging (v0.10.14 candidate, refresh) by @markokraemer in https://github.com/kortix-ai/suna/pull/5205
Promote current main to staging (v0.10.14 latest candidate) by @markokraemer in https://github.com/kortix-ai/suna/pull/5212
Promote latest main to staging (v0.10.14 final refresh) by @markokraemer in https://github.com/kortix-ai/suna/pull/5214
Promote latest main to staging (v0.10.14 billing refresh) by @markokraemer in https://github.com/kortix-ai/suna/pull/5218
Promote exact latest main to staging (v0.10.14 dev pin sync) by @markokraemer in https://github.com/kortix-ai/suna/pull/5221
Promote release cutoff main to staging (v0.10.14 performance refresh) by @markokraemer in https://github.com/kortix-ai/suna/pull/5223
Promote latest main to staging (v0.10.14 project page crash fix) by @markokraemer in https://github.com/kortix-ai/suna/pull/5226
Promote main to staging — v0.10.14 candidate by @markokraemer in https://github.com/kortix-ai/suna/pull/5233
Refresh staging with latest main — v0.10.14 final candidate by @markokraemer in https://github.com/kortix-ai/suna/pull/5235
Refresh staging with final main — v0.10.14 release candidate by @markokraemer in https://github.com/kortix-ai/suna/pull/5239
release: promote main to staging after QA stabilization by @markokraemer in https://github.com/kortix-ai/suna/pull/5246
Promote main to staging for v0.10.14 by @markokraemer in https://github.com/kortix-ai/suna/pull/5258
Promote latest main to staging for v0.10.14 by @markokraemer in https://github.com/kortix-ai/suna/pull/5263
Promote session inventory authorization fix to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5269
test: retry transient release gate failures by @markokraemer in https://github.com/kortix-ai/suna/pull/5279
fix(git): refresh staging mirror after missing branch by @markokraemer in https://github.com/kortix-ai/suna/pull/5282
test: tolerate staging release gate host transients by @markokraemer in https://github.com/kortix-ai/suna/pull/5287
fix(staging): cap API database pools by @markokraemer in https://github.com/kortix-ai/suna/pull/5291
fix(deps): upgrade PostCSS past CVE-2026-45623 by @markokraemer in https://github.com/kortix-ai/suna/pull/5298
Promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5303
Complete latest main promotion to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5305
Promote final current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5309
Promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5312
release(staging): session runtime v32 fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/5322
fix(staging): preserve session runtime URL on restart by @markokraemer in https://github.com/kortix-ai/suna/pull/5325
release: promote main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5340
fix(staging): verify v0.10.14 session release gates by @markokraemer in https://github.com/kortix-ai/suna/pull/5364
Release candidate: promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5365
release(staging): promote main after session gate fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/5372
release(staging): include latest main pricing update by @markokraemer in https://github.com/kortix-ai/suna/pull/5374
release(staging): fix distributed session limit enforcement by @markokraemer in https://github.com/kortix-ai/suna/pull/5379
chore(dev-eks): deploy dev-a21799e8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5385
fix(connectors): expose OAuth2 during creation by @markokraemer in https://github.com/kortix-ai/suna/pull/5389
refactor(web): enforce SDK-only backend boundary by @markokraemer in https://github.com/kortix-ai/suna/pull/5388
chore(dev-eks): deploy dev-ae967fdb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5390
chore(dev-eks): deploy dev-07f28dd0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5391
fix(dev): preserve API WebSocket upgrades by @markokraemer in https://github.com/kortix-ai/suna/pull/5392
chore(dev-eks): deploy gateway dev-8688b849 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5393
chore(dev-eks): deploy dev-8688b849 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5394
test(sdk): close SDK-only frontend delivery by @markokraemer in https://github.com/kortix-ai/suna/pull/5395
chore(dev-eks): deploy dev-f2929a4d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5396
fix(llm-gateway): forward prompt cache writes by @markokraemer in https://github.com/kortix-ai/suna/pull/5397
chore(dev-eks): deploy gateway dev-463d4241 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5398
chore(dev-eks): deploy dev-463d4241 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5399
Fix session history pagination scroll restoration by @markokraemer in https://github.com/kortix-ai/suna/pull/5400
chore(dev-eks): deploy dev-76de546c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5401
fix(whitelabel): prevent zstd proxy corruption by @markokraemer in https://github.com/kortix-ai/suna/pull/5402
feat(integrations): add provider-independent authentication lifecycle by @markokraemer in https://github.com/kortix-ai/suna/pull/5403
chore(dev-eks): deploy dev-00bc2906 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5404
chore(dev-eks): deploy dev-8a124988 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5406
chore(db): prepare us-west-2 Supabase target by @markokraemer in https://github.com/kortix-ai/suna/pull/5405
chore(dev-eks): deploy dev-dceea2ed [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5407
fix(gateway): make managed billing exact and auditable by @markokraemer in https://github.com/kortix-ai/suna/pull/5408
chore(dev-eks): deploy gateway dev-29675b2d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5412
fix(web): guard PoliciesPanel against missing policies field (BS 236e88fb) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5410
chore(dev-eks): deploy dev-29675b2d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5413
feat(infra): prepare US West 2 production shadow by @markokraemer in https://github.com/kortix-ai/suna/pull/5414
chore(dev-eks): deploy gateway dev-e58faa6c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5417
feat(acp): add OpenCode-only runtime canary by @markokraemer in https://github.com/kortix-ai/suna/pull/5415
chore(dev-eks): deploy dev-3a45ab55 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5419
fix(infra): repair US shadow deploy and reconciliation by @markokraemer in https://github.com/kortix-ai/suna/pull/5418
chore(dev-eks): deploy gateway dev-f8968d3e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5420
chore(dev-eks): deploy dev-f8968d3e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5421
docs: OAuth2 lifecycle, connector auth-type enum, transport-throw retry, example 09 by @agent-kortix in https://github.com/kortix-ai/suna/pull/5422
test(acp): harden deployed canary verification by @markokraemer in https://github.com/kortix-ai/suna/pull/5423
chore(dev-eks): deploy dev-93f21e9c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5424
fix(sdk): keep ACP event streams alive by @markokraemer in https://github.com/kortix-ai/suna/pull/5425
content(docs): add persistent "Get started" CTA to docs nav rail by @agent-kortix in https://github.com/kortix-ai/suna/pull/5426
chore(dev-eks): deploy gateway dev-ed7d992f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5427
chore(dev-eks): deploy dev-ed7d992f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5428
test(acp): detach reconnect from Playwright routing by @markokraemer in https://github.com/kortix-ai/suna/pull/5429
perf(boot): attribute and cut session-boot latency (removes Platinum's ~7s clone) by @markokraemer in https://github.com/kortix-ai/suna/pull/5409
chore(dev-eks): deploy dev-3d649159 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5430
fix(web): restore LLM management navigation by @markokraemer in https://github.com/kortix-ai/suna/pull/5432
fix(sdk): serialize ACP sends across runtime restarts by @markokraemer in https://github.com/kortix-ai/suna/pull/5433
chore(dev-eks): deploy dev-aedb8c16 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5434
Fix false Load older messages control by @markokraemer in https://github.com/kortix-ai/suna/pull/5435
chore(dev-eks): deploy dev-85ae91df [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5436
fix(web): clarify LLM provider connection flow by @markokraemer in https://github.com/kortix-ai/suna/pull/5437
Fix trigger scheduler fleet scans by @markokraemer in https://github.com/kortix-ai/suna/pull/5438
fix(audit): add actor / search / date-range / resource filters to account audit log by @agent-kortix in https://github.com/kortix-ai/suna/pull/5383
test(e2e): wait for REST model readiness by @markokraemer in https://github.com/kortix-ai/suna/pull/5440
chore(dev-eks): deploy dev-db2519b5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5442
fix(web): guard session-page .slice() against null value (BS e6d0e044) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5439
fix(staging): keep API router on EKS by @markokraemer in https://github.com/kortix-ai/suna/pull/5441
fix: refresh webhook trigger manifests by @markokraemer in https://github.com/kortix-ai/suna/pull/5443
chore(dev-eks): deploy dev-f9132a97 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5444
fix(web): restore compact LLM provider modal by @markokraemer in https://github.com/kortix-ai/suna/pull/5445
chore(infra): prepare US East 2 production shadow by @markokraemer in https://github.com/kortix-ai/suna/pull/5447
release: promote scheduler reliability fixes to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5446
chore(dev-eks): deploy gateway dev-56954737 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5449
feat(voice): realtime voice channel on LiveKit (replaces the Recall notetaker) by @markokraemer in https://github.com/kortix-ai/suna/pull/5431
fix(web): open LLM manager actions in modal by @markokraemer in https://github.com/kortix-ai/suna/pull/5448
fix(web): use canonical SDK voice import by @markokraemer in https://github.com/kortix-ai/suna/pull/5450
fix(db): restore voice migration order by @markokraemer in https://github.com/kortix-ai/suna/pull/5452
chore(dev-eks): deploy dev-0a1ed173 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5453
test(migration): verify source refresh on US Auth by @markokraemer in https://github.com/kortix-ai/suna/pull/5454
fix(migration): scope Node SSL mode to database runner by @markokraemer in https://github.com/kortix-ai/suna/pull/5455
docs(migration): refresh US shadow evidence by @markokraemer in https://github.com/kortix-ai/suna/pull/5456
docs(migration): record production autoscaling by @markokraemer in https://github.com/kortix-ai/suna/pull/5457
Make the white-label ACP reference SDK-only by @markokraemer in https://github.com/kortix-ai/suna/pull/5458
chore(dev-eks): deploy gateway dev-ceaa7e33 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5459
chore(dev-eks): deploy dev-ceaa7e33 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5460
release: stage scheduler reliability only by @markokraemer in https://github.com/kortix-ai/suna/pull/5461
Keep ACP sessions on the current daemon snapshot by @markokraemer in https://github.com/kortix-ai/suna/pull/5462
chore(dev-eks): deploy dev-aff406f3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5464
Fix model provider connection UX by @markokraemer in https://github.com/kortix-ai/suna/pull/5463
test(migration): gate US shadow authentication by @markokraemer in https://github.com/kortix-ai/suna/pull/5466
Session chat: narrative transcript by default, full history one click away by @markokraemer in https://github.com/kortix-ai/suna/pull/5451
fix(sdk): reconcile REST prompts before first event by @markokraemer in https://github.com/kortix-ai/suna/pull/5467
test(migration): gate US frontend provider redirects by @markokraemer in https://github.com/kortix-ai/suna/pull/5468
chore(dev-eks): deploy gateway dev-ad56e00c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5469
chore(release): VERSION → 0.10.16 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5470
chore(release): staging VERSION → 0.10.16 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5471
chore(dev-eks): deploy gateway dev-c26942d4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5472
chore(dev-eks): deploy dev-c26942d4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5473
chore(dev-eks): deploy dev-92b337bb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5474
feat(projects): keep one warm session ready by @markokraemer in https://github.com/kortix-ai/suna/pull/5475
chore(dev-eks): deploy dev-dc6d1c0b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5476
fix(sdk): make ACP and REST prompt completion monotonic by @markokraemer in https://github.com/kortix-ai/suna/pull/5477
chore(dev-eks): deploy dev-480a44dc [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5478
docs(sdk): record B23 deployed completion [skip ci] by @markokraemer in https://github.com/kortix-ai/suna/pull/5479
docs: meet->voice channel rename, workspace enforcement by @agent-kortix in https://github.com/kortix-ai/suna/pull/5482
content(blog): correct DeepSeek output price $0.30 -> $0.28 by @agent-kortix in https://github.com/kortix-ai/suna/pull/5484
test(auth): wait for hydrated login form by @markokraemer in https://github.com/kortix-ai/suna/pull/5485
docs: add ACP runtime status quo handoff by @markokraemer in https://github.com/kortix-ai/suna/pull/5488
fix(api): stop Sentry-capturing transient Supabase pool exhaustion (BS 721b7efe) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5487
chore(dev-eks): deploy dev-c9df628d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5489
perf(api): remove turn-stream request amplification by @markokraemer in https://github.com/kortix-ai/suna/pull/5490
chore(dev-eks): deploy dev-4f46e3aa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5492
chore(dev-eks): deploy gateway dev-47d41d9b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5493
chore(dev-eks): deploy dev-69af18f3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5494
perf(api): cut sandbox control-plane chatter and ambient-poll latency by @markokraemer in https://github.com/kortix-ai/suna/pull/5491
chore(dev-eks): deploy dev-704b9c1b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5497
fix(ci): restore starter and voice checks by @markokraemer in https://github.com/kortix-ai/suna/pull/5498
docs(sdk): record API latency dev proof by @markokraemer in https://github.com/kortix-ai/suna/pull/5495
fix(prod): harden final US East 2 database cutover by @markokraemer in https://github.com/kortix-ai/suna/pull/5496
chore(dev-eks): deploy gateway dev-fa525d30 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5499
chore(dev-eks): deploy dev-fa525d30 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5501
fix(web): pass turn run children as data prop by @markokraemer in https://github.com/kortix-ai/suna/pull/5500
chore(dev-eks): deploy dev-ccdce643 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5503
fix(billing): reconcile lost per-seat compute windows; make request diagnostics visible in CloudWatch by @markokraemer in https://github.com/kortix-ai/suna/pull/5502
chore(dev-eks): deploy dev-afe54ce9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5505
fix(maintenance): fail over independently at the edge by @markokraemer in https://github.com/kortix-ai/suna/pull/5504
chore(dev-eks): deploy gateway dev-b18ceaa5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5507
release: add independent production maintenance failover by @markokraemer in https://github.com/kortix-ai/suna/pull/5506
chore(dev-eks): deploy dev-b18ceaa5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5508
chore(dev-eks): deploy dev-1097dce8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5510
chore(dev-eks): deploy dev-d5bc283d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5513
fix(sdk): restore staging maintenance transport by @markokraemer in https://github.com/kortix-ai/suna/pull/5512
fix(api): stop billing rotations on workerless pods by @markokraemer in https://github.com/kortix-ai/suna/pull/5515
chore(dev-eks): deploy dev-efc0036e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5516
chore(dev-eks): deploy dev-e8dc428a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5517
chore(dev-eks): deploy dev-6a1ff05b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5518
fix(use2): clean recovery flow state after smoke by @markokraemer in https://github.com/kortix-ai/suna/pull/5519
chore(dev-eks): deploy dev-8189da8a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5520
fix(secrets): scope sandbox secret injection to the agent that actually runs by @markokraemer in https://github.com/kortix-ai/suna/pull/5514
chore(dev-eks): deploy dev-7d0aae0b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5521
docs(secrets): spec network-boundary secret delivery policy by @markokraemer in https://github.com/kortix-ai/suna/pull/5522
Fix US migration smoke billing cleanup by @markokraemer in https://github.com/kortix-ai/suna/pull/5523
Release US worker isolation guard to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5524
Fix frontend migration smoke Auth flow cleanup by @markokraemer in https://github.com/kortix-ai/suna/pull/5525
chore(dev-eks): deploy dev-43fd93cd [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5526
chore(dev-eks): deploy dev-d7dc3622 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5527
chore(dev-eks): deploy dev-5051d9cb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5528
fix(use2): harden US shadow session readiness by @markokraemer in https://github.com/kortix-ai/suna/pull/5529
chore(dev-eks): deploy dev-5c0ae97e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5530
test(use2): wait for selected warm agent by @markokraemer in https://github.com/kortix-ai/suna/pull/5531
chore(dev-eks): deploy dev-8d6a7876 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5532
fix(sdk): preserve project agent selection by @markokraemer in https://github.com/kortix-ai/suna/pull/5533
chore(dev-eks): deploy dev-ee45f55f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5534
docs(sdk): record US session readiness proof by @markokraemer in https://github.com/kortix-ai/suna/pull/5535
chore(dev-eks): deploy dev-36432e59 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5536
ops: add US shadow reconciliation workflow by @markokraemer in https://github.com/kortix-ai/suna/pull/5537
fix(ops): scope Supabase CLI prerequisite by @markokraemer in https://github.com/kortix-ai/suna/pull/5538
fix(ops): use US shadow reconciliation role by @markokraemer in https://github.com/kortix-ai/suna/pull/5539
fix(web): break setSessionAgentName React #185 render loop (BS 351da943) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5540
fix(web): guard marketing-site scrollTo against non-scrollable ref (BS a0000df8) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5542
fix(scheduler): dispatch cron slots exactly by @markokraemer in https://github.com/kortix-ai/suna/pull/5543
chore(dev-eks): deploy gateway dev-974c699e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5544
chore(dev-eks): deploy dev-974c699e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5545
fix(scheduler): bound catalog retries after backfill by @markokraemer in https://github.com/kortix-ai/suna/pull/5546
chore(dev-eks): deploy dev-1cd087aa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5547
release(scheduler): promote exact cron dispatch to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5548
docs: trigger scheduler cadence, execution lease interval, voice opt-in, voiceTranscript by @agent-kortix in https://github.com/kortix-ai/suna/pull/5550
fix(security): scope AgentMail inbox takeover delete + ownership gate (pentest 2026-07-27) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5551
chore(dev-eks): deploy dev-bf90f44e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5553
fix(security): do not expose DOTENV_PRIVATE_KEY to PR-triggered test jobs (CI-DK) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5552
feat: multiple connections per connector (team + personal) with a connections list by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5556
feat(web): make team-shared vs private-to-me connections unmistakable by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5554
chore(dev-eks): deploy dev-52dc62cc [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5557
feat(kaab): required connectors — run as the user's own connection, gate if unconnected, admin roster by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5366
fix(kaab): make KORTIX_ORIGIN_REF unforgeable + document origin_ref honestly by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5558
chore(dev-eks): deploy dev-64250043 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5560
fix(kaab): require_connectors picks the member's default connection, skips revoked by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5559
chore(dev-eks): deploy dev-e88526c6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5562
fix(kaab): re-land connectors_personal onto main (#5370 merged into its base branch, not main) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5561
chore(dev-eks): deploy dev-170b4b14 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5563
fix(seo): stop garbled brand snippet — render KortixLetterField as SVG background-image by @agent-kortix in https://github.com/kortix-ai/suna/pull/5555
feat(kaab): set connectors_personal from the agent-scope API (with subset pruning) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5564
chore(dev-eks): deploy dev-f9a5d420 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5566
fix(kaab): agent editor could not save any project using connectors_personal by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5565
chore(dev-eks): deploy dev-55663e3b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5568
feat(web): per-connector 'personal' toggle in the agent editor by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5567
feat(kaab): per-end-user usage metering (origin_ref on usage_events) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5569
feat(kaab): per-end-user concurrency cap + restore the lost account-active index by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5570
chore(dev-eks): deploy dev-7824a618 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5571
feat(web): per-connection IDs + tabbed connector detail by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5572
fix(permissions): surface project-rule overrides + feat(billing): per-end-user spend by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5573
chore(dev-eks): deploy dev-12da8c76 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5575
fix(web): drop iOS WebView WebKit-bridge messageHandlers noise (BS 5b94212b) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5574
fix(security): KaaB cross-end-user session access + revoked-secret re-injection by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5577
chore(dev-eks): deploy dev-f4a968f6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5580
feat(permissions): per-connection tool permissions by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5579
chore(dev-eks): deploy dev-8a344cdb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5582
fix(test): un-dark two suites (0 → 76 tests) + Permissions discoverability by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5583
chore(dev-eks): deploy dev-25051973 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5585
ops: guard final US East 2 cutover by @markokraemer in https://github.com/kortix-ai/suna/pull/5584
chore(release): merge latest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5588
feat(api): rename origin_ref → end_user_ref (origin_ref kept as permanent alias) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5586
fix(voice): keep worker bearer out of room metadata by @markokraemer in https://github.com/kortix-ai/suna/pull/5589
ops: support candidate tags in US shadow by @markokraemer in https://github.com/kortix-ai/suna/pull/5590
fix(cli,api): kortix ship pushes through the git proxy, not an unexportable token by @markokraemer in https://github.com/kortix-ai/suna/pull/5591
chore(dev-eks): deploy dev-96c8d84a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5596
fix: update staging security dependencies by @markokraemer in https://github.com/kortix-ai/suna/pull/5595
chore(release): reconcile latest main with staging hotfix by @markokraemer in https://github.com/kortix-ai/suna/pull/5593
feat(api): change a session's model mid-flight by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5592
chore(dev-eks): deploy dev-bd3ae3c1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5597
fix(test): validate every decorative landing element by @markokraemer in https://github.com/kortix-ai/suna/pull/5601
fix(test): validate every decorative landing element by @markokraemer in https://github.com/kortix-ai/suna/pull/5602
fix(sdk): preserve ACP message turn boundaries by @markokraemer in https://github.com/kortix-ai/suna/pull/5603
fix(migration): reconcile shadow credit ledger rows by @markokraemer in https://github.com/kortix-ai/suna/pull/5604
feat(whitelabel-demo): Kortix-as-a-Backend support end to end by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5599
fix: never re-queue a create whose failure was already returned to the caller by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5606
fix(migration): preserve replication backlog ownership by @markokraemer in https://github.com/kortix-ai/suna/pull/5607
fix(migration): reconcile shadow credit ledger rows by @markokraemer in https://github.com/kortix-ai/suna/pull/5605
chore(release): sync newest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5600
fix: one canonical connector alias across all three grant gates by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5609
chore(dev-eks): deploy dev-a6b3fd68 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5611
test: prove KaaB session isolation at the list leg by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5610
chore(dev-eks): deploy dev-65c707d4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5613
feat(whitelabel-demo): pick which shared connection a session runs as by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5612
fix(gateway): normalize malformed message history so strict providers accept it by @markokraemer in https://github.com/kortix-ai/suna/pull/5608
chore(dev-eks): deploy gateway dev-7b77515d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5616
chore(release): sync latest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5615
chore(release): sync newest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5617
chore(dev-eks): deploy dev-7b77515d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5618
chore(release): sync exact current main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5620
feat(sessions): add message-based rewind for REST and ACP by @markokraemer in https://github.com/kortix-ai/suna/pull/5619
chore(dev-eks): deploy dev-9e90e8ed [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5621
chore(release): sync exact latest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5622
Add Marketing Department project template by @lillyboga in https://github.com/kortix-ai/suna/pull/5578
chore(dev-eks): deploy gateway dev-e548c6a8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5625
chore(dev-eks): deploy dev-e548c6a8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5626
chore(release): sync final latest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5627
fix(release): harden US cutover readiness by @markokraemer in https://github.com/kortix-ai/suna/pull/5623
chore(dev-eks): deploy gateway dev-79c208aa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5628
chore(release): include latest production cutover hardening by @markokraemer in https://github.com/kortix-ai/suna/pull/5629
docs(sdk): record deployed session rewind proof by @markokraemer in https://github.com/kortix-ai/suna/pull/5630
chore(dev-eks): deploy dev-49dc74f4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5632
fix(tests): use one Playwright runtime for US smoke by @markokraemer in https://github.com/kortix-ai/suna/pull/5631
chore(dev-eks): deploy gateway dev-83984378 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5634
chore(dev-eks): deploy dev-83984378 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5635
Fix ACP final idle state and add ?acp override by @markokraemer in https://github.com/kortix-ai/suna/pull/5636
chore(dev-eks): deploy dev-76b4cb98 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5637
fix(release): pace managed repository provisioning by @markokraemer in https://github.com/kortix-ai/suna/pull/5638
Heal corrupt git mirror cache entries by @lillyboga in https://github.com/kortix-ai/suna/pull/5641
chore(dev-eks): deploy dev-256230d1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5642
fix(release): isolate mutable IAM and session flows by @markokraemer in https://github.com/kortix-ai/suna/pull/5640
Fix CodeQL secure temporary file gate by @markokraemer in https://github.com/kortix-ai/suna/pull/5644
chore(dev-eks): deploy dev-022f666d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5645
Release candidate: promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5643
Fix release pacing unit-test environment by @markokraemer in https://github.com/kortix-ai/suna/pull/5646
Release candidate: fix release pacing test environment by @markokraemer in https://github.com/kortix-ai/suna/pull/5647
fix(sessions): sync runtime-generated titles by @markokraemer in https://github.com/kortix-ai/suna/pull/5648
chore(dev-eks): deploy dev-b8e1e75b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5649
Release candidate: include latest session title synchronization by @markokraemer in https://github.com/kortix-ai/suna/pull/5650
test(sessions): wait for web readiness in title sync flow by @markokraemer in https://github.com/kortix-ai/suna/pull/5651
Release candidate: sync test-only session title wait by @markokraemer in https://github.com/kortix-ai/suna/pull/5654
fix(worktree): stop process trees, not port listeners by @markokraemer in https://github.com/kortix-ai/suna/pull/5653
fix(api): return 404 for readRepoFile git-show path-not-found (BS a8d20288) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5652
chore(dev-eks): deploy dev-985b7db0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5655
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5656
chore(dev-eks): deploy dev-cd5f4513 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5659
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5660
test(ke2e): reuse Git fixtures and split live lanes by @markokraemer in https://github.com/kortix-ai/suna/pull/5658
chore(release): promote optimized ke2e gate to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5661
test(ke2e): honor gateway Retry-After by @markokraemer in https://github.com/kortix-ai/suna/pull/5662
feat(runtime): add ACP CLI harness processes by @markokraemer in https://github.com/kortix-ai/suna/pull/5665
chore(dev-eks): deploy gateway dev-d87349a9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5666
chore(dev-eks): deploy dev-d87349a9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5667
docs: connectors_personal manifest field, changeModel SDK method, auth-type enum, runtimeTransport option by @agent-kortix in https://github.com/kortix-ai/suna/pull/5668
test(ke2e): bound release gate load by @markokraemer in https://github.com/kortix-ai/suna/pull/5669
fix(runtime): pin Pi internal dependencies by @markokraemer in https://github.com/kortix-ai/suna/pull/5671
chore(dev-eks): deploy gateway dev-1b4db8f8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5672
chore(dev-eks): deploy dev-1b4db8f8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5674
docs: narrow the e2e-preview-proxy failures to a harness question by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5614
fix(runtime): install Pi with npm by @markokraemer in https://github.com/kortix-ai/suna/pull/5675
chore(dev-eks): deploy gateway dev-5762bcfc [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5677
chore(dev-eks): deploy dev-5762bcfc [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5678
feat(whitelabel-demo): show what a running session can and cannot change by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5676
chore(dev-eks): deploy gateway dev-dda51b0b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5680
chore(dev-eks): deploy dev-dda51b0b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5681
docs: the apps/api suite has no CI key — proven, and my earlier fix retracted by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5682
fix(security): session sharing was exempt from the KaaB isolation narrowing by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5683
chore(dev-eks): deploy dev-cb5bb899 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5685
fix(security): bind turn-question to the sandbox token's own session by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5686
chore(dev-eks): deploy dev-8bfb1096 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5690
fix(security): never widen an agent grant on a manifest error; canonicalize the v2 default by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5687
fix(gateway): fail over stalled model streams by @markokraemer in https://github.com/kortix-ai/suna/pull/5689
chore(dev-eks): deploy gateway dev-9ac237f1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5692
chore(dev-eks): deploy dev-9ac237f1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5693
fix(security): redact session content on rows the caller cannot access by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5688
docs: correct the KaaB docs against the code, and document what shipped by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5691
fix(whitelabel-demo): make KaaB refusals reachable, and stop silent sends by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5694
fix(security): an agent must never resolve its own approval by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5684
chore(dev-eks): deploy dev-57e081c0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5696
feat(kaab): filter the session list by end_user_ref by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5697
chore(dev-eks): deploy dev-7f51c831 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5699
feat(kaab): re-mint the session token grant on a mid-session agent switch by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5698
chore(dev-eks): deploy dev-fd6fa64b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5701
fix(kaab): revoke a session's executor tokens when its sandbox is gone by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5700
fix(ke2e): reuse managed project on staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5702
feat(kaab): per-end-user spend cap by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5704
chore(dev-eks): deploy dev-0f390c6c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5706
docs: verified baseline of secret exposure inside the sandbox by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5705
fix(ke2e): bound stale-user cleanup by @markokraemer in https://github.com/kortix-ai/suna/pull/5707
perf(ke2e): query stale users directly by @markokraemer in https://github.com/kortix-ai/suna/pull/5711
fix(ke2e): require strict TLS for GC database by @markokraemer in https://github.com/kortix-ai/suna/pull/5714
content(blog): differentiate agi-ready-architecture manifest from introducing-kortix by @agent-kortix in https://github.com/kortix-ai/suna/pull/5712
fix(ke2e): preserve claimed warm-session metadata by @markokraemer in https://github.com/kortix-ai/suna/pull/5716
fix(api): preserve public-share permission status by @markokraemer in https://github.com/kortix-ai/suna/pull/5717
chore(dev-eks): deploy dev-fe9c7bfe [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5718
feat(secrets): secret delivery strategy — design + pure policy layer by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5708
fix(whitelabel-demo): refuse encoded-slash path traversal in the BFF proxy by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5710
fix(kaab): two critical regressions in my own isolation work by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5715
chore(dev-eks): deploy dev-b217ced8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5721
fix(kaab): gate opencode :4096 on session visibility, not just :8000 by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5722
chore(dev-eks): deploy dev-e5e934f4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5723
feat(secrets): SDS stage 1 — schema + policy layer, one shared egress-policy type by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5724
chore(dev-eks): deploy dev-ff0e36fa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5726
fix(sandbox-proxy): release prompt dedupe claim when delivery provably failed by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5271
chore(dev-eks): deploy dev-be05b2ca [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5727
feat(whitelabel-demo): session scope controls, connector binding, and a testing guide by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5728
feat(sessions): generate session titles from the first prompt via the gateway by @markokraemer in https://github.com/kortix-ai/suna/pull/5733
chore(dev-eks): deploy dev-5db7502b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5734
fix(sessions): title with the live picked model, not the stale opencode_model by @markokraemer in https://github.com/kortix-ai/suna/pull/5735
chore(dev-eks): deploy dev-6b695ee4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5736
fix(web): stop ambient voice transcript polling by @markokraemer in https://github.com/kortix-ai/suna/pull/5738
refactor(sessions): one title path — delete the OpenCode title machinery by @markokraemer in https://github.com/kortix-ai/suna/pull/5739
chore(dev-eks): deploy dev-efdb77c5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5740
fix(web): remove session voice transcript tab by @markokraemer in https://github.com/kortix-ai/suna/pull/5742
feat(models): per-project model enablement, gateway-enforced (backend) by @markokraemer in https://github.com/kortix-ai/suna/pull/5743
chore(dev-eks): deploy gateway dev-6e0f8cf0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5744
chore(dev-eks): deploy dev-6e0f8cf0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5745
fix(release): block mismatched production Supabase auth by @markokraemer in https://github.com/kortix-ai/suna/pull/5747
feat(models): wire the model-enablement UI to the server (Manage models + picker) by @markokraemer in https://github.com/kortix-ai/suna/pull/5746
chore(dev-eks): deploy dev-d248b8ce [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5748
feat(acp): add project-gated multi-harness runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/5749
chore(dev-eks): deploy gateway dev-239cda8a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5752
chore(dev-eks): deploy dev-239cda8a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5753
fix(web): restore public share links across the file and preview surfaces by @markokraemer in https://github.com/kortix-ai/suna/pull/5751
chore(dev-eks): deploy dev-8e86e27d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5754
fix(security): close public SSH/RDP exposure on the us-east-2 ACL and prevent its return by @markokraemer in https://github.com/kortix-ai/suna/pull/5755
test(ke2e): cover the public file-share branch in SESS-13 by @markokraemer in https://github.com/kortix-ai/suna/pull/5756
fix(security): make the NACL admin-port audit actually run by @markokraemer in https://github.com/kortix-ai/suna/pull/5757
fix(acp): refresh ingress credentials after restart by @markokraemer in https://github.com/kortix-ai/suna/pull/5759
chore(dev-eks): deploy dev-35d4063c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5761
fix(ci): make drift detection actually run by @markokraemer in https://github.com/kortix-ai/suna/pull/5760
docs(sdk): record deployed multi-harness proof by @markokraemer in https://github.com/kortix-ai/suna/pull/5762
fix(ci): give drift detection the Cloudflare token it needs to plan by @markokraemer in https://github.com/kortix-ai/suna/pull/5763
feat(onboarding): land every signup directly in a project, with no blocking provision by @markokraemer in https://github.com/kortix-ai/suna/pull/5758
revert(session-chat): restore the pre-v0.11 transcript rendering by @markokraemer in https://github.com/kortix-ai/suna/pull/5764
fix(ci): supply cloudflare_zone_id to the drift plan by @markokraemer in https://github.com/kortix-ai/suna/pull/5765
fix(ci): scope drift detection to roots CI can actually plan by @markokraemer in https://github.com/kortix-ai/suna/pull/5766
fix(onboarding): bind the remembered-project cookie to its owner by @markokraemer in https://github.com/kortix-ai/suna/pull/5767
docs(acp): make Kortix multi-harness documentation complete by @markokraemer in https://github.com/kortix-ai/suna/pull/5768
chore(dev-eks): deploy dev-3b3992fb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5769
refactor(infra): make Terraform the source of truth for the ECS envs by @markokraemer in https://github.com/kortix-ai/suna/pull/5771
Slim the Kortix Starter to a 10-skill artifact floor by @markokraemer in https://github.com/kortix-ai/suna/pull/5770
Start only the selected ACP harness and persist boot benchmarks by @markokraemer in https://github.com/kortix-ai/suna/pull/5772
docs(compliance): record the open critical IaC finding on the audit role by @markokraemer in https://github.com/kortix-ai/suna/pull/5773
chore(dev-eks): deploy gateway dev-81486b61 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5775
docs(sdk): record multi-harness docs deployment by @markokraemer in https://github.com/kortix-ai/suna/pull/5774
chore(dev-eks): deploy dev-7935cd93 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5777
Repair marketplace tests missed by the starter slim-down by @markokraemer in https://github.com/kortix-ai/suna/pull/5776
fix(infra): capture the Cloudflare zone id so plans stop proposing DNS churn by @markokraemer in https://github.com/kortix-ai/suna/pull/5778
refactor(billing): make Stripe returns route-independent, delete the dead modal chain by @markokraemer in https://github.com/kortix-ai/suna/pull/5779
docs(runtime): record live dev Pi latency proof by @markokraemer in https://github.com/kortix-ai/suna/pull/5781
chore(security): adopt the last unmanaged IAM roles, retire the dead ones by @markokraemer in https://github.com/kortix-ai/suna/pull/5782
ci: cover the ECS environments in drift detection by @markokraemer in https://github.com/kortix-ai/suna/pull/5783
fix(models): one answer for "which models does this project offer" by @markokraemer in https://github.com/kortix-ai/suna/pull/5780
feat(web): use harness favicons in agent selectors by @markokraemer in https://github.com/kortix-ai/suna/pull/5784
chore(sdk): record BillingState in the type-surface snapshot by @markokraemer in https://github.com/kortix-ai/suna/pull/5786
fix(models): never prune a managed or configured model from the default set by @markokraemer in https://github.com/kortix-ai/suna/pull/5785
fix(db): restore dev migration order by @markokraemer in https://github.com/kortix-ai/suna/pull/5787
chore(dev-eks): deploy dev-d55c0bb0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5788
chore(dev-eks): deploy dev-16e14971 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5789
chore(dev-eks): deploy gateway dev-c59a9181 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5790
chore(dev-eks): deploy dev-c59a9181 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5791
docs: per-project model enablement, backend.mdx error table + wording by @agent-kortix in https://github.com/kortix-ai/suna/pull/5794
feat(secrets): wire the delivery chokepoint — a denied secret never enters the sandbox by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5793
chore(dev-eks): deploy dev-ed342859 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5796
feat(whitelabel-demo): make every KaaB capability testable from the UI by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5795
fix(kaab): a sandbox may not enumerate other end-users' connector profiles by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5797
chore(dev-eks): deploy dev-efa9ef71 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5799
fix(kaab): enforce the per-end-user session cap on resume, not just create by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5798
chore(dev-eks): deploy dev-9a6a8b25 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5800
feat(whitelabel-demo): bottom scope bar + live API-call snippets by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5801
docs(kaab): END_USER_REF_CONFLICT is a 400, and pin it with a test by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5802
chore(dev-eks): deploy dev-47b9add5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5803
fix(kaab): prove the WebSocket isolation, add the mode badge and runtime_context by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5804
chore(dev-eks): deploy dev-3998a94d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5805
feat(whitelabel-demo): gated import of existing account projects by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5806
feat(whitelabel-demo): syntax-highlight snippets + cover every KaaB call by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5807
feat(kaab): re-scope a running session's secrets and connector bindings by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5808
chore(dev-eks): deploy dev-51da6740 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5809
feat(kaab): mid-session re-scope in the demo, SDK method, and docs by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5810
fix(web): drop Safari generic SecurityError noise (BS 4 patterns, post-v0.11.0) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5811
fix(auth): never return sign-in to projects list by @markokraemer in https://github.com/kortix-ai/suna/pull/5814
test(ke2e): cover PUT model-enablement route + regen manifest to 527 by @agent-kortix in https://github.com/kortix-ai/suna/pull/5792
fix(web): make the sidebar Review pill actually open the Review inbox by @markokraemer in https://github.com/kortix-ai/suna/pull/5815
fix(models): lock the default row, refresh without a reload, set the default inline by @markokraemer in https://github.com/kortix-ai/suna/pull/5813
fix(web): order reused sessions by last activity by @markokraemer in https://github.com/kortix-ai/suna/pull/5816
chore(dev-eks): deploy dev-61910424 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5817
docs(perf): preserve session-start evidence and stateful target by @markokraemer in https://github.com/kortix-ai/suna/pull/5818
fix(auth): never send a signup to a project it cannot open by @markokraemer in https://github.com/kortix-ai/suna/pull/5819
fix(whitelabel-demo): actually let the scope bar re-scope this session by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5820
feat(acp): add complete multi-harness starter and auth UX by @markokraemer in https://github.com/kortix-ai/suna/pull/5821
chore(dev-eks): deploy dev-452948e8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5824
docs(perf): record Platinum repository-image A/B by @markokraemer in https://github.com/kortix-ai/suna/pull/5822
chore(dev-eks): deploy gateway dev-22e9259b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5826
fix(whitelabel-demo): call the re-scope hook unconditionally by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5825
chore(dev-eks): deploy dev-22e9259b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5827
chore(dev-eks): deploy gateway dev-d703d0e9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5828
chore(dev-eks): deploy dev-d703d0e9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5830
fix(whitelabel-demo): un-gate the scope editors that 'changeable' switched off by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5829
fix(acp): exempt harness turns from request deadline by @markokraemer in https://github.com/kortix-ai/suna/pull/5831
chore(dev-eks): deploy dev-dfa2070d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5832
fix(sessions): converge every session-start path on server-side titling by @markokraemer in https://github.com/kortix-ai/suna/pull/5834
chore(dev-eks): deploy dev-41d62c4f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5836
fix(web): stop the project sidebar flickering on cold load by @markokraemer in https://github.com/kortix-ai/suna/pull/5835
fix: reject terminal soft-rate completions by @markokraemer in https://github.com/kortix-ai/suna/pull/5840
fix(session): paint the transcript from cache instead of waiting on a VM by @markokraemer in https://github.com/kortix-ai/suna/pull/5837
Recover conflicted changes with an agent by @markokraemer in https://github.com/kortix-ai/suna/pull/5839
chore(dev-eks): deploy gateway dev-ae00d2ac [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5841
chore(dev-eks): deploy dev-ae00d2ac [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5843
feat(projects): make the default starter multi-harness by @markokraemer in https://github.com/kortix-ai/suna/pull/5842
chore(dev-eks): deploy dev-a7038f49 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5844
fix(sdk): isolate preassigned OpenCode session state by @markokraemer in https://github.com/kortix-ai/suna/pull/5846
chore(dev-eks): deploy dev-7a7bb4f1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5847
fix(sdk): honor inherited OpenCode session defaults by @markokraemer in https://github.com/kortix-ai/suna/pull/5848
chore(dev-eks): deploy dev-d6979ad9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5849
docs(sdk): record inherited session delivery by @markokraemer in https://github.com/kortix-ai/suna/pull/5850
chore(dev-eks): deploy dev-9a226118 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5851
fix(web): show triggers as active when they are active by @markokraemer in https://github.com/kortix-ai/suna/pull/5853
fix(gateway): require zero usage for soft rate limits by @markokraemer in https://github.com/kortix-ai/suna/pull/5852
chore(dev-eks): deploy gateway dev-0c27d730 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5854
chore(dev-eks): deploy dev-0c27d730 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5856
refactor(session): load older history by scrolling, not by clicking by @markokraemer in https://github.com/kortix-ai/suna/pull/5855
ci(api): actually run the kortix-api suite on pull requests by @markokraemer in https://github.com/kortix-ai/suna/pull/5838
fix(sandbox): derive the sandbox alert from live provider state, not the build log by @markokraemer in https://github.com/kortix-ai/suna/pull/5858
chore(dev-eks): deploy dev-1949db07 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5860
fix(session): stop a session with history opening on the empty new-session shell by @markokraemer in https://github.com/kortix-ai/suna/pull/5857
fix(executor): accept canonical dotted tool references by @markokraemer in https://github.com/kortix-ai/suna/pull/5859
chore(dev-eks): deploy dev-31391b4b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5861
test(api): stop partial module mocks from killing whole test files by @markokraemer in https://github.com/kortix-ai/suna/pull/5863
chore(dev-eks): deploy dev-d6413c2f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5865
feat(executor): make approvals answerable and enforce policy on arguments by @markokraemer in https://github.com/kortix-ai/suna/pull/5862
fix(snapshots): attest sandbox CLI artifacts by @markokraemer in https://github.com/kortix-ai/suna/pull/5867
chore(dev-eks): deploy gateway dev-4bc30619 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5868
fix(sandbox): bound sandbox lifetime — delete three self-granted vetoes, add one column the box cannot forge by @markokraemer in https://github.com/kortix-ai/suna/pull/5845
test(api): retarget slash-command + manifest tests at the shipped design by @markokraemer in https://github.com/kortix-ai/suna/pull/5864
fix(billing): one credit debit function, no floor bypass for unpaid subs, seat allowance not seat price by @markokraemer in https://github.com/kortix-ai/suna/pull/5869
feat: add connector profile authorization and session costs by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5872
fix: repair dev migration order by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5873
chore(dev-eks): deploy dev-95c1e0ea [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5874
fix: refresh session governance before provisioning by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5878
chore(dev-eks): deploy dev-37ce0d58 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5879
fix(api): fail closed for required connector profiles by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5882
chore(dev-eks): deploy dev-3f4fe600 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5883
perf(web): make the project Files route open instantly instead of after 5–6s by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5881
fix(api): support agent scope for version 3 manifests by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5884
chore(dev-eks): deploy dev-c88c94ea [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5885
Migrate icon library to Phosphor icons by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5386
chore(dev-eks): deploy gateway dev-98e5fd0a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5886
chore(dev-eks): deploy dev-98e5fd0a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5887
fix(whitelabel): use project connection terminology by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5888
fix(web): make sidebar docking instant instead of a 200ms layout morph by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5890
content(blog): expand beyond-the-chat-box -- add unique section + outbound links by @agent-kortix in https://github.com/kortix-ai/suna/pull/5889
fix(whitelabel): preserve session list shape in mock by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5891
chore(connectors): align project connection terminology by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5892
chore(dev-eks): deploy dev-536cccf1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5893
fix: suppress wallet-extension inpage.js 'No error message' noise (pattern 61949432...) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5894
fix: restore OpenCode REST + kortix.yaml v2 as the default runtime, and a session-runtime bug bash by @markokraemer in https://github.com/kortix-ai/suna/pull/5870
chore(dev-eks): deploy gateway dev-890095d6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5895
chore(dev-eks): deploy dev-29bac7e1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5897
Restore CLI SDK and API contract CI gates by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5899
chore(dev-eks): deploy dev-2cfff1e4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5900
feat(web): generate connector profile slugs from names by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5896
Remove ACP and multi-harness runtime; restore OpenCode REST by @markokraemer in https://github.com/kortix-ai/suna/pull/5901
chore(dev-eks): deploy gateway dev-5dc989f9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5902
Fix ACP removal migration ordering by @markokraemer in https://github.com/kortix-ai/suna/pull/5903
chore(dev-eks): deploy gateway dev-e4052cca [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5904
chore(dev-eks): deploy dev-e4052cca [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5905
Serve Roobert from one variable font and fix monospace alignment by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5898
fix(cli): don't force https on private hosts — self-host reaches its API over container names and LAN addresses by @Leonxu6 in https://github.com/kortix-ai/suna/pull/5876
chore(dev-eks): deploy dev-b5ab22b0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5907
fix(web): break the async import cycle between file-source and the project-files barrel by @Leonxu6 in https://github.com/kortix-ai/suna/pull/5880
fix(sdk): keep the session boot poll running while the tab is in the background by @Leonxu6 in https://github.com/kortix-ai/suna/pull/5875
chore(dev-eks): deploy dev-72797256 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5909
feat(teams): Teams is a per-project experimental feature, not a server env var by @markokraemer in https://github.com/kortix-ai/suna/pull/5908
chore(dev-eks): deploy dev-1647c2ee [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5910
fix(web): in-product CLI install command targets the deployment, not kortix.com by @Leonxu6 in https://github.com/kortix-ai/suna/pull/5877
refactor(web): Easy panel fit & session info by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5906
feat(web): /a1o — standalone die that rolls the Kortix stack by @markokraemer in https://github.com/kortix-ai/suna/pull/5911
chore(dev-eks): deploy gateway dev-b631bd9a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5912
chore(dev-eks): deploy dev-b631bd9a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5913
fix(api): gracefully skip broken sandbox templates instead of failing the full listing by @agent-kortix in https://github.com/kortix-ai/suna/pull/5915
chore(dev-eks): deploy dev-d5f531f9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5916
fix: suppress injectedScript.bundle.js sendMessage noise from browser extensions by @agent-kortix in https://github.com/kortix-ai/suna/pull/5914
Marketing site rebuild, and a sweep of claims that were not true by @markokraemer in https://github.com/kortix-ai/suna/pull/5917
test(ke2e): cover audit actor/resource/date-range/search/cursor/limit filters by @agent-kortix in https://github.com/kortix-ai/suna/pull/5481
test(ke2e): prove project-scoped PAT cross-project WRITE boundary (TOK-5) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5349
Product showcase in both themes, and 2.76 MiB lighter by @markokraemer in https://github.com/kortix-ai/suna/pull/5919
Preserve hydrated session content after runtime lookup misses by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5920
Improve session access scope selection by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5921
fix(connectors): lock the authorization owner after creation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5922
feat(connectors): read-only authorization owner instead of a dead select by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5924
feat(audit): centralize reconstructable system activity by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5925
chore(dev-eks): deploy dev-9b82d8f1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5926
fix(gateway): Bedrock adaptive thinking + region-prefix normalization by @markokraemer in https://github.com/kortix-ai/suna/pull/5927
fix: all managed models group under Kortix in the picker, not Anthropic/DeepSeek by @agent-kortix in https://github.com/kortix-ai/suna/pull/5918
feat(web): add a public /download page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5923
chore(dev-eks): deploy gateway dev-be2690a5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5930
chore(dev-eks): deploy dev-be2690a5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5931
Improve audit event labels and details by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5928
fix(tests): drop leftover public routines in db-reset so re-apply matches a fresh DB by @markokraemer in https://github.com/kortix-ai/suna/pull/5933
revert(models): remove server-side per-project model enablement by @markokraemer in https://github.com/kortix-ai/suna/pull/5932
chore(dev-eks): deploy gateway dev-6c168ee2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5936
chore(dev-eks): deploy dev-6c168ee2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5937
chore(dev-eks): deploy gateway dev-58065906 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5938
chore(dev-eks): deploy dev-58065906 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5939
KaaB: prompt to connect a required connector instead of failing blind by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5935
chore(dev-eks): deploy dev-b1b33ff8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5943
Reorder the user menu, make Theme a submenu, drop the destructive dropdown variant by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5941
Allow agent switches within one session by @markokraemer in https://github.com/kortix-ai/suna/pull/5946
chore(dev-eks): deploy dev-5606d63a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5947
fix(db,ke2e): unblock the v0.12.0 release gate — credit grant 42501 + database-only session fixture by @markokraemer in https://github.com/kortix-ai/suna/pull/5948
chore(dev-eks): deploy dev-1fff69b1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5951
fix(ke2e): AUD-5 360s budget; COVD-1 manifest-read retry by @markokraemer in https://github.com/kortix-ai/suna/pull/5953
KaaB: gate mid-session prompts on required connectors, and let one be required before it is connected by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5956
chore(dev-eks): deploy dev-ad13cc9c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5957
Render the connector refusal as a card under the message, not a pill + a self-opening modal by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5961
chore(dev-eks): deploy dev-00d53cd1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5962
fix(web): Manage-models tab shows "0 of N" — pass useModelStore the opts it needs by @markokraemer in https://github.com/kortix-ai/suna/pull/5963
fix(api): use E2B_DOMAIN for template APIs by @markokraemer in https://github.com/kortix-ai/suna/pull/5964
chore(dev-eks): deploy dev-1f6ae707 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5965
fix(api): unblock self-host E2B snapshot builds by @markokraemer in https://github.com/kortix-ai/suna/pull/5966
chore(dev-eks): deploy gateway dev-cf578eb0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5967
chore(dev-eks): deploy dev-cf578eb0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5968
docs: remove reverted per-project model enablement section by @agent-kortix in https://github.com/kortix-ai/suna/pull/5969
fix(api): catch RepoFileNotFoundError in files/content route (BS 5b40ec1a) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5971
fix(web): filter Android WebView postEvent setTimeout-captured noise (BS f50ed590) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5972
fix(sandboxes): handle provider capacity safely by @markokraemer in https://github.com/kortix-ai/suna/pull/5973
chore(dev-eks): deploy dev-5c118dfa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5975
fix(web): post-auth signups land in their project, never on /projects by @markokraemer in https://github.com/kortix-ai/suna/pull/5976
chore(dev-eks): deploy dev-67cd196e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5978
fix(sandbox): preserve capacity retry diagnostics by @markokraemer in https://github.com/kortix-ai/suna/pull/5977
Project icons: pick an emoji or a named glyph by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5970
chore(dev-eks): deploy gateway dev-f7f38ab8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5979
chore(dev-eks): deploy dev-f7f38ab8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5980
fix(web): restore sidebar switcher width by @markokraemer in https://github.com/kortix-ai/suna/pull/5982
fix(e2b): bound permanent sandbox removal by @markokraemer in https://github.com/kortix-ai/suna/pull/5981
chore(dev-eks): deploy dev-b530dbdb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5983
fix(self-host): make API memory ceiling configurable by @markokraemer in https://github.com/kortix-ai/suna/pull/5984
chore(dev-eks): deploy dev-5f503dc3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5985
feat(web): send-to-agent affordance for stopped apps by @agent-kortix in https://github.com/kortix-ai/suna/pull/5987
fix(web): move send-to-agent into the AppPreview "Couldn't load" error state by @agent-kortix in https://github.com/kortix-ai/suna/pull/5988
feat(web): rebuild the project session list as an everyday list by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5989
fix(release): dark US shadow region no longer gates release artifacts by @markokraemer in https://github.com/kortix-ai/suna/pull/5992
fix(channels): bind email sessions to configured agents by @markokraemer in https://github.com/kortix-ai/suna/pull/5995
fix(sessions): fail fast on provider capacity by @markokraemer in https://github.com/kortix-ai/suna/pull/5993
chore(dev-eks): deploy dev-b3d0fd64 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5996
fix(release): un-gate the shadow region with valid workflow syntax by @markokraemer in https://github.com/kortix-ai/suna/pull/5998
fix(email): enable Executor MCP for channel sessions by @markokraemer in https://github.com/kortix-ai/suna/pull/6000
chore(dev-eks): deploy dev-17db263e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6002
fix(web): filter Supabase TOKEN_EXPIRED frameless promise rejection noise (BS 63b0cde7) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6003
fix(secrets): make session writes visible to agents by @markokraemer in https://github.com/kortix-ai/suna/pull/6005
chore(dev-eks): deploy dev-5775ca7d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6006
fix(sessions): recover from sandbox provider failures by @markokraemer in https://github.com/kortix-ai/suna/pull/6008
chore(dev-eks): deploy dev-98a32526 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6009
fix(email): require one canonical sender mailbox by @markokraemer in https://github.com/kortix-ai/suna/pull/6007
chore(dev-eks): deploy dev-1e0426d2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6010
New Contributors
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.14...v0.12.1
Read the full release on GitHub →
v0.12.0 August 1, 2026 New
Audit log — every API request and agent action lands in one centralized audit trail. The app gets a project and session audit explorer; the SDK gets reconstruction filters and client attribution.
Session costs — one unified cost record per session, and a session cost explorer in billing that shows what each session spent.
Session scope controls — new sessions can start with an explicit, opt-in scope over connectors and secrets. Agents can require connector profiles, connector profiles carry an authorization strategy, and denied secrets never enter the sandbox. When a required connector is missing, the session prompts to connect it instead of failing.
Answerable approvals — approval prompts show the full tool arguments, and approval policies match on arguments, not just tool names.
Automatic session titles — sessions are titled from the first prompt, server-side, on every session-start path.
Signup lands in a project — new accounts go straight into a working project, with no blocking provisioning step.
Microsoft Teams (experimental) — Teams is available as a per-project experimental channel.
Embedding Kortix — per-end-user session caps enforced on create and resume, hardened sandbox isolation between end users, and mid-session re-scoping of secrets and connector bindings.
New website — kortix.com rebuilt: home page, Solutions, Security, Self-hosted, Integrations, Channels, Automations, About, Careers, and a public /download page. An accuracy sweep removed claims that were not true and corrected public pricing copy.
Improved
The project Files route opens instantly instead of after 5–6 seconds, session transcripts paint from cache instead of waiting on the sandbox VM, the sidebar no longer flickers on cold load, and older history loads by scrolling.
Sandboxes have a bounded lifetime that a wedged box cannot escape, and compute is billed against liveness evidence, never wall-clock.
Billing is one state machine: running out of credits reads as "out of credits", never "no plan"; one credit-debit function with no wallet-floor bypass; Stripe checkout returns work from any route.
Sessions order by last activity, connector profile creation is atomic, and the icon set moved to Phosphor.
Managed models group under Kortix in the model picker instead of being split across upstream provider names.
Fixed
Gateway: Bedrock adaptive thinking and region-prefix normalization, and the correct base path for standalone OpenAI keys.
A broken sandbox template no longer fails the whole template listing.
Public file-share links restored across the file and preview surfaces.
Signup and sign-in redirects can no longer land in a project the user cannot open.
Opening a session with history no longer shows an empty new-session shell, and triggers show as active when they are active.
CLI: private and self-hosted API hosts are no longer forced to https, and IPv6 hosts classify correctly.
Every /docs route returned 500 after an icon namespace crossed the RSC boundary.
Closed public SSH/RDP exposure on a network ACL and added an audit that keeps it closed.
What's Changed
feat(sessions): generate session titles from the first prompt via the gateway by @markokraemer in https://github.com/kortix-ai/suna/pull/5733
chore(dev-eks): deploy dev-5db7502b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5734
fix(sessions): title with the live picked model, not the stale opencode_model by @markokraemer in https://github.com/kortix-ai/suna/pull/5735
chore(dev-eks): deploy dev-6b695ee4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5736
fix(web): stop ambient voice transcript polling by @markokraemer in https://github.com/kortix-ai/suna/pull/5738
refactor(sessions): one title path — delete the OpenCode title machinery by @markokraemer in https://github.com/kortix-ai/suna/pull/5739
chore(dev-eks): deploy dev-efdb77c5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5740
fix(prod): preserve API deployment selector by @markokraemer in https://github.com/kortix-ai/suna/pull/5737
fix(web): remove session voice transcript tab by @markokraemer in https://github.com/kortix-ai/suna/pull/5742
feat(models): per-project model enablement, gateway-enforced (backend) by @markokraemer in https://github.com/kortix-ai/suna/pull/5743
chore(dev-eks): deploy gateway dev-6e0f8cf0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5744
chore(dev-eks): deploy dev-6e0f8cf0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5745
fix(release): block mismatched production Supabase auth by @markokraemer in https://github.com/kortix-ai/suna/pull/5747
feat(models): wire the model-enablement UI to the server (Manage models + picker) by @markokraemer in https://github.com/kortix-ai/suna/pull/5746
chore(dev-eks): deploy dev-d248b8ce [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5748
fix(release): carry production Supabase guard to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5750
feat(acp): add project-gated multi-harness runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/5749
chore(dev-eks): deploy gateway dev-239cda8a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5752
chore(dev-eks): deploy dev-239cda8a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5753
fix(web): restore public share links across the file and preview surfaces by @markokraemer in https://github.com/kortix-ai/suna/pull/5751
chore(dev-eks): deploy dev-8e86e27d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5754
fix(security): close public SSH/RDP exposure on the us-east-2 ACL and prevent its return by @markokraemer in https://github.com/kortix-ai/suna/pull/5755
test(ke2e): cover the public file-share branch in SESS-13 by @markokraemer in https://github.com/kortix-ai/suna/pull/5756
fix(security): make the NACL admin-port audit actually run by @markokraemer in https://github.com/kortix-ai/suna/pull/5757
fix(acp): refresh ingress credentials after restart by @markokraemer in https://github.com/kortix-ai/suna/pull/5759
chore(dev-eks): deploy dev-35d4063c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5761
fix(ci): make drift detection actually run by @markokraemer in https://github.com/kortix-ai/suna/pull/5760
docs(sdk): record deployed multi-harness proof by @markokraemer in https://github.com/kortix-ai/suna/pull/5762
fix(ci): give drift detection the Cloudflare token it needs to plan by @markokraemer in https://github.com/kortix-ai/suna/pull/5763
feat(onboarding): land every signup directly in a project, with no blocking provision by @markokraemer in https://github.com/kortix-ai/suna/pull/5758
revert(session-chat): restore the pre-v0.11 transcript rendering by @markokraemer in https://github.com/kortix-ai/suna/pull/5764
fix(ci): supply cloudflare_zone_id to the drift plan by @markokraemer in https://github.com/kortix-ai/suna/pull/5765
fix(ci): scope drift detection to roots CI can actually plan by @markokraemer in https://github.com/kortix-ai/suna/pull/5766
fix(onboarding): bind the remembered-project cookie to its owner by @markokraemer in https://github.com/kortix-ai/suna/pull/5767
docs(acp): make Kortix multi-harness documentation complete by @markokraemer in https://github.com/kortix-ai/suna/pull/5768
chore(dev-eks): deploy dev-3b3992fb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5769
refactor(infra): make Terraform the source of truth for the ECS envs by @markokraemer in https://github.com/kortix-ai/suna/pull/5771
Slim the Kortix Starter to a 10-skill artifact floor by @markokraemer in https://github.com/kortix-ai/suna/pull/5770
Start only the selected ACP harness and persist boot benchmarks by @markokraemer in https://github.com/kortix-ai/suna/pull/5772
docs(compliance): record the open critical IaC finding on the audit role by @markokraemer in https://github.com/kortix-ai/suna/pull/5773
chore(dev-eks): deploy gateway dev-81486b61 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5775
docs(sdk): record multi-harness docs deployment by @markokraemer in https://github.com/kortix-ai/suna/pull/5774
chore(dev-eks): deploy dev-7935cd93 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5777
Repair marketplace tests missed by the starter slim-down by @markokraemer in https://github.com/kortix-ai/suna/pull/5776
fix(infra): capture the Cloudflare zone id so plans stop proposing DNS churn by @markokraemer in https://github.com/kortix-ai/suna/pull/5778
refactor(billing): make Stripe returns route-independent, delete the dead modal chain by @markokraemer in https://github.com/kortix-ai/suna/pull/5779
docs(runtime): record live dev Pi latency proof by @markokraemer in https://github.com/kortix-ai/suna/pull/5781
chore(security): adopt the last unmanaged IAM roles, retire the dead ones by @markokraemer in https://github.com/kortix-ai/suna/pull/5782
ci: cover the ECS environments in drift detection by @markokraemer in https://github.com/kortix-ai/suna/pull/5783
fix(models): one answer for "which models does this project offer" by @markokraemer in https://github.com/kortix-ai/suna/pull/5780
feat(web): use harness favicons in agent selectors by @markokraemer in https://github.com/kortix-ai/suna/pull/5784
chore(sdk): record BillingState in the type-surface snapshot by @markokraemer in https://github.com/kortix-ai/suna/pull/5786
fix(models): never prune a managed or configured model from the default set by @markokraemer in https://github.com/kortix-ai/suna/pull/5785
fix(db): restore dev migration order by @markokraemer in https://github.com/kortix-ai/suna/pull/5787
chore(dev-eks): deploy dev-d55c0bb0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5788
chore(dev-eks): deploy dev-16e14971 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5789
chore(dev-eks): deploy gateway dev-c59a9181 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5790
chore(dev-eks): deploy dev-c59a9181 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5791
docs: per-project model enablement, backend.mdx error table + wording by @agent-kortix in https://github.com/kortix-ai/suna/pull/5794
feat(secrets): wire the delivery chokepoint — a denied secret never enters the sandbox by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5793
chore(dev-eks): deploy dev-ed342859 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5796
feat(whitelabel-demo): make every KaaB capability testable from the UI by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5795
fix(kaab): a sandbox may not enumerate other end-users' connector profiles by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5797
chore(dev-eks): deploy dev-efa9ef71 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5799
fix(kaab): enforce the per-end-user session cap on resume, not just create by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5798
chore(dev-eks): deploy dev-9a6a8b25 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5800
feat(whitelabel-demo): bottom scope bar + live API-call snippets by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5801
docs(kaab): END_USER_REF_CONFLICT is a 400, and pin it with a test by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5802
chore(dev-eks): deploy dev-47b9add5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5803
fix(kaab): prove the WebSocket isolation, add the mode badge and runtime_context by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5804
chore(dev-eks): deploy dev-3998a94d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5805
feat(whitelabel-demo): gated import of existing account projects by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5806
feat(whitelabel-demo): syntax-highlight snippets + cover every KaaB call by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5807
feat(kaab): re-scope a running session's secrets and connector bindings by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5808
chore(dev-eks): deploy dev-51da6740 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5809
feat(kaab): mid-session re-scope in the demo, SDK method, and docs by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5810
fix(web): drop Safari generic SecurityError noise (BS 4 patterns, post-v0.11.0) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5811
fix(auth): never return sign-in to projects list by @markokraemer in https://github.com/kortix-ai/suna/pull/5814
test(ke2e): cover PUT model-enablement route + regen manifest to 527 by @agent-kortix in https://github.com/kortix-ai/suna/pull/5792
fix(web): make the sidebar Review pill actually open the Review inbox by @markokraemer in https://github.com/kortix-ai/suna/pull/5815
fix(models): lock the default row, refresh without a reload, set the default inline by @markokraemer in https://github.com/kortix-ai/suna/pull/5813
fix(web): order reused sessions by last activity by @markokraemer in https://github.com/kortix-ai/suna/pull/5816
chore(dev-eks): deploy dev-61910424 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5817
docs(perf): preserve session-start evidence and stateful target by @markokraemer in https://github.com/kortix-ai/suna/pull/5818
fix(auth): never send a signup to a project it cannot open by @markokraemer in https://github.com/kortix-ai/suna/pull/5819
fix(whitelabel-demo): actually let the scope bar re-scope this session by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5820
feat(acp): add complete multi-harness starter and auth UX by @markokraemer in https://github.com/kortix-ai/suna/pull/5821
chore(dev-eks): deploy dev-452948e8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5824
docs(perf): record Platinum repository-image A/B by @markokraemer in https://github.com/kortix-ai/suna/pull/5822
chore(dev-eks): deploy gateway dev-22e9259b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5826
fix(whitelabel-demo): call the re-scope hook unconditionally by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5825
chore(dev-eks): deploy dev-22e9259b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5827
chore(dev-eks): deploy gateway dev-d703d0e9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5828
chore(dev-eks): deploy dev-d703d0e9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5830
fix(whitelabel-demo): un-gate the scope editors that 'changeable' switched off by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5829
fix(acp): exempt harness turns from request deadline by @markokraemer in https://github.com/kortix-ai/suna/pull/5831
chore(dev-eks): deploy dev-dfa2070d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5832
fix(sessions): converge every session-start path on server-side titling by @markokraemer in https://github.com/kortix-ai/suna/pull/5834
chore(dev-eks): deploy dev-41d62c4f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5836
fix(web): stop the project sidebar flickering on cold load by @markokraemer in https://github.com/kortix-ai/suna/pull/5835
fix: reject terminal soft-rate completions by @markokraemer in https://github.com/kortix-ai/suna/pull/5840
fix(session): paint the transcript from cache instead of waiting on a VM by @markokraemer in https://github.com/kortix-ai/suna/pull/5837
Recover conflicted changes with an agent by @markokraemer in https://github.com/kortix-ai/suna/pull/5839
chore(dev-eks): deploy gateway dev-ae00d2ac [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5841
chore(dev-eks): deploy dev-ae00d2ac [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5843
feat(projects): make the default starter multi-harness by @markokraemer in https://github.com/kortix-ai/suna/pull/5842
chore(dev-eks): deploy dev-a7038f49 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5844
fix(sdk): isolate preassigned OpenCode session state by @markokraemer in https://github.com/kortix-ai/suna/pull/5846
chore(dev-eks): deploy dev-7a7bb4f1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5847
fix(sdk): honor inherited OpenCode session defaults by @markokraemer in https://github.com/kortix-ai/suna/pull/5848
chore(dev-eks): deploy dev-d6979ad9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5849
docs(sdk): record inherited session delivery by @markokraemer in https://github.com/kortix-ai/suna/pull/5850
chore(dev-eks): deploy dev-9a226118 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5851
fix(web): show triggers as active when they are active by @markokraemer in https://github.com/kortix-ai/suna/pull/5853
fix(gateway): require zero usage for soft rate limits by @markokraemer in https://github.com/kortix-ai/suna/pull/5852
chore(dev-eks): deploy gateway dev-0c27d730 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5854
chore(dev-eks): deploy dev-0c27d730 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5856
refactor(session): load older history by scrolling, not by clicking by @markokraemer in https://github.com/kortix-ai/suna/pull/5855
ci(api): actually run the kortix-api suite on pull requests by @markokraemer in https://github.com/kortix-ai/suna/pull/5838
fix(sandbox): derive the sandbox alert from live provider state, not the build log by @markokraemer in https://github.com/kortix-ai/suna/pull/5858
chore(dev-eks): deploy dev-1949db07 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5860
fix(session): stop a session with history opening on the empty new-session shell by @markokraemer in https://github.com/kortix-ai/suna/pull/5857
fix(executor): accept canonical dotted tool references by @markokraemer in https://github.com/kortix-ai/suna/pull/5859
chore(dev-eks): deploy dev-31391b4b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5861
test(api): stop partial module mocks from killing whole test files by @markokraemer in https://github.com/kortix-ai/suna/pull/5863
chore(dev-eks): deploy dev-d6413c2f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5865
feat(executor): make approvals answerable and enforce policy on arguments by @markokraemer in https://github.com/kortix-ai/suna/pull/5862
fix(snapshots): attest sandbox CLI artifacts by @markokraemer in https://github.com/kortix-ai/suna/pull/5867
chore(dev-eks): deploy gateway dev-4bc30619 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5868
fix(sandbox): bound sandbox lifetime — delete three self-granted vetoes, add one column the box cannot forge by @markokraemer in https://github.com/kortix-ai/suna/pull/5845
test(api): retarget slash-command + manifest tests at the shipped design by @markokraemer in https://github.com/kortix-ai/suna/pull/5864
fix(billing): one credit debit function, no floor bypass for unpaid subs, seat allowance not seat price by @markokraemer in https://github.com/kortix-ai/suna/pull/5869
feat: add connector profile authorization and session costs by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5872
fix: repair dev migration order by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5873
chore(dev-eks): deploy dev-95c1e0ea [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5874
fix: refresh session governance before provisioning by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5878
chore(dev-eks): deploy dev-37ce0d58 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5879
fix(api): fail closed for required connector profiles by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5882
chore(dev-eks): deploy dev-3f4fe600 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5883
perf(web): make the project Files route open instantly instead of after 5–6s by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5881
fix(api): support agent scope for version 3 manifests by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5884
chore(dev-eks): deploy dev-c88c94ea [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5885
Migrate icon library to Phosphor icons by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5386
chore(dev-eks): deploy gateway dev-98e5fd0a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5886
chore(dev-eks): deploy dev-98e5fd0a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5887
fix(whitelabel): use project connection terminology by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5888
fix(web): make sidebar docking instant instead of a 200ms layout morph by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5890
content(blog): expand beyond-the-chat-box -- add unique section + outbound links by @agent-kortix in https://github.com/kortix-ai/suna/pull/5889
fix(whitelabel): preserve session list shape in mock by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5891
chore(connectors): align project connection terminology by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5892
chore(dev-eks): deploy dev-536cccf1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5893
fix: suppress wallet-extension inpage.js 'No error message' noise (pattern 61949432...) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5894
fix: restore OpenCode REST + kortix.yaml v2 as the default runtime, and a session-runtime bug bash by @markokraemer in https://github.com/kortix-ai/suna/pull/5870
chore(dev-eks): deploy gateway dev-890095d6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5895
chore(dev-eks): deploy dev-29bac7e1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5897
Restore CLI SDK and API contract CI gates by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5899
chore(dev-eks): deploy dev-2cfff1e4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5900
feat(web): generate connector profile slugs from names by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5896
Remove ACP and multi-harness runtime; restore OpenCode REST by @markokraemer in https://github.com/kortix-ai/suna/pull/5901
chore(dev-eks): deploy gateway dev-5dc989f9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5902
Fix ACP removal migration ordering by @markokraemer in https://github.com/kortix-ai/suna/pull/5903
chore(dev-eks): deploy gateway dev-e4052cca [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5904
chore(dev-eks): deploy dev-e4052cca [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5905
Serve Roobert from one variable font and fix monospace alignment by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5898
fix(cli): don't force https on private hosts — self-host reaches its API over container names and LAN addresses by @Leonxu6 in https://github.com/kortix-ai/suna/pull/5876
chore(dev-eks): deploy dev-b5ab22b0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5907
fix(web): break the async import cycle between file-source and the project-files barrel by @Leonxu6 in https://github.com/kortix-ai/suna/pull/5880
fix(sdk): keep the session boot poll running while the tab is in the background by @Leonxu6 in https://github.com/kortix-ai/suna/pull/5875
chore(dev-eks): deploy dev-72797256 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5909
feat(teams): Teams is a per-project experimental feature, not a server env var by @markokraemer in https://github.com/kortix-ai/suna/pull/5908
chore(dev-eks): deploy dev-1647c2ee [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5910
fix(web): in-product CLI install command targets the deployment, not kortix.com by @Leonxu6 in https://github.com/kortix-ai/suna/pull/5877
refactor(web): Easy panel fit & session info by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5906
feat(web): /a1o — standalone die that rolls the Kortix stack by @markokraemer in https://github.com/kortix-ai/suna/pull/5911
chore(dev-eks): deploy gateway dev-b631bd9a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5912
chore(dev-eks): deploy dev-b631bd9a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5913
fix(api): gracefully skip broken sandbox templates instead of failing the full listing by @agent-kortix in https://github.com/kortix-ai/suna/pull/5915
chore(dev-eks): deploy dev-d5f531f9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5916
fix: suppress injectedScript.bundle.js sendMessage noise from browser extensions by @agent-kortix in https://github.com/kortix-ai/suna/pull/5914
Marketing site rebuild, and a sweep of claims that were not true by @markokraemer in https://github.com/kortix-ai/suna/pull/5917
test(ke2e): cover audit actor/resource/date-range/search/cursor/limit filters by @agent-kortix in https://github.com/kortix-ai/suna/pull/5481
test(ke2e): prove project-scoped PAT cross-project WRITE boundary (TOK-5) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5349
Product showcase in both themes, and 2.76 MiB lighter by @markokraemer in https://github.com/kortix-ai/suna/pull/5919
Preserve hydrated session content after runtime lookup misses by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5920
Improve session access scope selection by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5921
fix(connectors): lock the authorization owner after creation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5922
feat(connectors): read-only authorization owner instead of a dead select by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5924
feat(audit): centralize reconstructable system activity by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5925
chore(dev-eks): deploy dev-9b82d8f1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5926
fix(gateway): Bedrock adaptive thinking + region-prefix normalization by @markokraemer in https://github.com/kortix-ai/suna/pull/5927
fix: all managed models group under Kortix in the picker, not Anthropic/DeepSeek by @agent-kortix in https://github.com/kortix-ai/suna/pull/5918
feat(web): add a public /download page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5923
chore(dev-eks): deploy gateway dev-be2690a5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5930
chore(dev-eks): deploy dev-be2690a5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5931
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5929
Improve audit event labels and details by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5928
fix(tests): drop leftover public routines in db-reset so re-apply matches a fresh DB by @markokraemer in https://github.com/kortix-ai/suna/pull/5933
revert(models): remove server-side per-project model enablement by @markokraemer in https://github.com/kortix-ai/suna/pull/5932
chore(dev-eks): deploy gateway dev-6c168ee2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5936
chore(dev-eks): deploy dev-6c168ee2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5937
chore(release): promote main to staging — db-reset harness fix by @markokraemer in https://github.com/kortix-ai/suna/pull/5934
chore(dev-eks): deploy gateway dev-58065906 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5938
chore(dev-eks): deploy dev-58065906 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5939
KaaB: prompt to connect a required connector instead of failing blind by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5935
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5942
chore(dev-eks): deploy dev-b1b33ff8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5943
Reorder the user menu, make Theme a submenu, drop the destructive dropdown variant by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5941
Merge main into staging — user menu reorder (#5941) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5945
Allow agent switches within one session by @markokraemer in https://github.com/kortix-ai/suna/pull/5946
chore(dev-eks): deploy dev-5606d63a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5947
fix(db,ke2e): unblock the v0.12.0 release gate — credit grant 42501 + database-only session fixture by @markokraemer in https://github.com/kortix-ai/suna/pull/5948
chore(dev-eks): deploy dev-1fff69b1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5951
chore(release): promote main to staging — v0.12.0 gate unblock by @markokraemer in https://github.com/kortix-ai/suna/pull/5950
fix(ke2e): AUD-5 360s budget; COVD-1 manifest-read retry by @markokraemer in https://github.com/kortix-ai/suna/pull/5953
chore(release): promote main to staging — final gate fixes (AUD-5, COVD-1) by @markokraemer in https://github.com/kortix-ai/suna/pull/5954
Release v0.12.0 — Audit log, session costs, session scope controls, and a rebuilt kortix.com by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5955
New Contributors
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.11.0...v0.12.0
Read the full release on GitHub →
v0.11.0 July 28, 2026 New
Realtime voice calls use LiveKit Cloud and preserve transcripts and worker tool calls in the session UI.
Session rewind restores REST and ACP sessions from a selected message.
Warm sessions keep one session available per project to reduce cold-start latency.
The Marketing Department template adds campaign, content, lifecycle, growth, and brand agents.
Connection policies canonicalize connector aliases and enforce the selected shared connection across grant gates.
KaaB isolation restricts session access, sharing, approvals, model changes, executor grants, connector use, and OpenCode proxy access.
KaaB spend controls enforce per-end-user limits.
Secret Delivery Strategy stage 1 adds the schema, policy layer, and shared egress-policy type.
White-label session scope controls add end-user session filtering, connector binding, scope visibility, and a testing guide.
Improved
Prompt delivery deduplication releases the claim after a final sandbox-down response. A later retry can recover without duplicating a completed prompt.
Session transcripts preserve reasoning and tool-step wire order.
Runtime-generated session titles synchronize with the canonical session and web UI.
Managed repository provisioning uses deterministic pacing and 13 reusable repositories in the release gate.
The release gate runs API lanes in parallel and cleans mutable staging fixtures concurrently.
Fixed
Session sharing preserves permission status during warm-session claim races.
Sandbox secret injection remains scoped to the active agent.
Strict model providers receive normalized message history.
readRepoFile returns 404 for a missing Git path.
Maintenance mode remains visible during an API outage.
Worktree shutdown stops the complete process tree.
Operations
US East 2 shadow deployment, database reconciliation, writer activation, and cutover tooling remain disabled.
This release does not freeze the EU database or switch production traffic.
What's Changed
chore(infra): prepare US East 2 production shadow by @markokraemer in https://github.com/kortix-ai/suna/pull/5447
chore(dev-eks): deploy gateway dev-56954737 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5449
feat(voice): realtime voice channel on LiveKit (replaces the Recall notetaker) by @markokraemer in https://github.com/kortix-ai/suna/pull/5431
fix(web): open LLM manager actions in modal by @markokraemer in https://github.com/kortix-ai/suna/pull/5448
fix(web): use canonical SDK voice import by @markokraemer in https://github.com/kortix-ai/suna/pull/5450
fix(db): restore voice migration order by @markokraemer in https://github.com/kortix-ai/suna/pull/5452
chore(dev-eks): deploy dev-0a1ed173 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5453
test(migration): verify source refresh on US Auth by @markokraemer in https://github.com/kortix-ai/suna/pull/5454
fix(migration): scope Node SSL mode to database runner by @markokraemer in https://github.com/kortix-ai/suna/pull/5455
docs(migration): refresh US shadow evidence by @markokraemer in https://github.com/kortix-ai/suna/pull/5456
docs(migration): record production autoscaling by @markokraemer in https://github.com/kortix-ai/suna/pull/5457
Make the white-label ACP reference SDK-only by @markokraemer in https://github.com/kortix-ai/suna/pull/5458
chore(dev-eks): deploy gateway dev-ceaa7e33 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5459
chore(dev-eks): deploy dev-ceaa7e33 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5460
Keep ACP sessions on the current daemon snapshot by @markokraemer in https://github.com/kortix-ai/suna/pull/5462
chore(dev-eks): deploy dev-aff406f3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5464
Fix model provider connection UX by @markokraemer in https://github.com/kortix-ai/suna/pull/5463
test(migration): gate US shadow authentication by @markokraemer in https://github.com/kortix-ai/suna/pull/5466
Session chat: narrative transcript by default, full history one click away by @markokraemer in https://github.com/kortix-ai/suna/pull/5451
fix(sdk): reconcile REST prompts before first event by @markokraemer in https://github.com/kortix-ai/suna/pull/5467
test(migration): gate US frontend provider redirects by @markokraemer in https://github.com/kortix-ai/suna/pull/5468
chore(dev-eks): deploy gateway dev-ad56e00c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5469
chore(release): VERSION → 0.10.16 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5470
chore(release): staging VERSION → 0.10.16 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5471
chore(dev-eks): deploy gateway dev-c26942d4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5472
chore(dev-eks): deploy dev-c26942d4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5473
chore(dev-eks): deploy dev-92b337bb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5474
feat(projects): keep one warm session ready by @markokraemer in https://github.com/kortix-ai/suna/pull/5475
chore(dev-eks): deploy dev-dc6d1c0b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5476
fix(sdk): make ACP and REST prompt completion monotonic by @markokraemer in https://github.com/kortix-ai/suna/pull/5477
chore(dev-eks): deploy dev-480a44dc [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5478
docs(sdk): record B23 deployed completion [skip ci] by @markokraemer in https://github.com/kortix-ai/suna/pull/5479
docs: meet->voice channel rename, workspace enforcement by @agent-kortix in https://github.com/kortix-ai/suna/pull/5482
content(blog): correct DeepSeek output price $0.30 -> $0.28 by @agent-kortix in https://github.com/kortix-ai/suna/pull/5484
test(auth): wait for hydrated login form by @markokraemer in https://github.com/kortix-ai/suna/pull/5485
docs: add ACP runtime status quo handoff by @markokraemer in https://github.com/kortix-ai/suna/pull/5488
fix(api): stop Sentry-capturing transient Supabase pool exhaustion (BS 721b7efe) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5487
chore(dev-eks): deploy dev-c9df628d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5489
perf(api): remove turn-stream request amplification by @markokraemer in https://github.com/kortix-ai/suna/pull/5490
chore(dev-eks): deploy dev-4f46e3aa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5492
chore(dev-eks): deploy gateway dev-47d41d9b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5493
chore(dev-eks): deploy dev-69af18f3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5494
perf(api): cut sandbox control-plane chatter and ambient-poll latency by @markokraemer in https://github.com/kortix-ai/suna/pull/5491
chore(dev-eks): deploy dev-704b9c1b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5497
fix(ci): restore starter and voice checks by @markokraemer in https://github.com/kortix-ai/suna/pull/5498
docs(sdk): record API latency dev proof by @markokraemer in https://github.com/kortix-ai/suna/pull/5495
fix(prod): harden final US East 2 database cutover by @markokraemer in https://github.com/kortix-ai/suna/pull/5496
chore(dev-eks): deploy gateway dev-fa525d30 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5499
chore(dev-eks): deploy dev-fa525d30 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5501
fix(web): pass turn run children as data prop by @markokraemer in https://github.com/kortix-ai/suna/pull/5500
chore(dev-eks): deploy dev-ccdce643 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5503
fix(billing): reconcile lost per-seat compute windows; make request diagnostics visible in CloudWatch by @markokraemer in https://github.com/kortix-ai/suna/pull/5502
chore(dev-eks): deploy dev-afe54ce9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5505
fix(maintenance): fail over independently at the edge by @markokraemer in https://github.com/kortix-ai/suna/pull/5504
chore(dev-eks): deploy gateway dev-b18ceaa5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5507
release: add independent production maintenance failover by @markokraemer in https://github.com/kortix-ai/suna/pull/5506
chore(dev-eks): deploy dev-b18ceaa5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5508
Release v0.10.16 — Independent maintenance failover by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5509
chore(dev-eks): deploy dev-1097dce8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5510
chore(dev-eks): deploy dev-d5bc283d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5513
fix(sdk): restore staging maintenance transport by @markokraemer in https://github.com/kortix-ai/suna/pull/5512
fix(api): stop billing rotations on workerless pods by @markokraemer in https://github.com/kortix-ai/suna/pull/5515
chore(dev-eks): deploy dev-efc0036e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5516
chore(dev-eks): deploy dev-e8dc428a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5517
chore(dev-eks): deploy dev-6a1ff05b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5518
fix(use2): clean recovery flow state after smoke by @markokraemer in https://github.com/kortix-ai/suna/pull/5519
chore(dev-eks): deploy dev-8189da8a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5520
fix(secrets): scope sandbox secret injection to the agent that actually runs by @markokraemer in https://github.com/kortix-ai/suna/pull/5514
chore(dev-eks): deploy dev-7d0aae0b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5521
docs(secrets): spec network-boundary secret delivery policy by @markokraemer in https://github.com/kortix-ai/suna/pull/5522
Fix US migration smoke billing cleanup by @markokraemer in https://github.com/kortix-ai/suna/pull/5523
Release US worker isolation guard to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5524
Fix frontend migration smoke Auth flow cleanup by @markokraemer in https://github.com/kortix-ai/suna/pull/5525
chore(dev-eks): deploy dev-43fd93cd [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5526
chore(dev-eks): deploy dev-d7dc3622 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5527
chore(dev-eks): deploy dev-5051d9cb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5528
fix(use2): harden US shadow session readiness by @markokraemer in https://github.com/kortix-ai/suna/pull/5529
chore(dev-eks): deploy dev-5c0ae97e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5530
test(use2): wait for selected warm agent by @markokraemer in https://github.com/kortix-ai/suna/pull/5531
chore(dev-eks): deploy dev-8d6a7876 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5532
fix(sdk): preserve project agent selection by @markokraemer in https://github.com/kortix-ai/suna/pull/5533
chore(dev-eks): deploy dev-ee45f55f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5534
docs(sdk): record US session readiness proof by @markokraemer in https://github.com/kortix-ai/suna/pull/5535
chore(dev-eks): deploy dev-36432e59 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5536
ops: add US shadow reconciliation workflow by @markokraemer in https://github.com/kortix-ai/suna/pull/5537
fix(ops): scope Supabase CLI prerequisite by @markokraemer in https://github.com/kortix-ai/suna/pull/5538
fix(ops): use US shadow reconciliation role by @markokraemer in https://github.com/kortix-ai/suna/pull/5539
fix(web): break setSessionAgentName React #185 render loop (BS 351da943) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5540
fix(web): guard marketing-site scrollTo against non-scrollable ref (BS a0000df8) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5542
fix(scheduler): dispatch cron slots exactly by @markokraemer in https://github.com/kortix-ai/suna/pull/5543
chore(dev-eks): deploy gateway dev-974c699e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5544
chore(dev-eks): deploy dev-974c699e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5545
fix(scheduler): bound catalog retries after backfill by @markokraemer in https://github.com/kortix-ai/suna/pull/5546
chore(dev-eks): deploy dev-1cd087aa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5547
release(scheduler): promote exact cron dispatch to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5548
docs: trigger scheduler cadence, execution lease interval, voice opt-in, voiceTranscript by @agent-kortix in https://github.com/kortix-ai/suna/pull/5550
fix(security): scope AgentMail inbox takeover delete + ownership gate (pentest 2026-07-27) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5551
chore(dev-eks): deploy dev-bf90f44e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5553
fix(security): do not expose DOTENV_PRIVATE_KEY to PR-triggered test jobs (CI-DK) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5552
feat: multiple connections per connector (team + personal) with a connections list by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5556
feat(web): make team-shared vs private-to-me connections unmistakable by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5554
chore(dev-eks): deploy dev-52dc62cc [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5557
feat(kaab): required connectors — run as the user's own connection, gate if unconnected, admin roster by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5366
fix(kaab): make KORTIX_ORIGIN_REF unforgeable + document origin_ref honestly by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5558
chore(dev-eks): deploy dev-64250043 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5560
fix(kaab): require_connectors picks the member's default connection, skips revoked by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5559
chore(dev-eks): deploy dev-e88526c6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5562
fix(kaab): re-land connectors_personal onto main (#5370 merged into its base branch, not main) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5561
chore(dev-eks): deploy dev-170b4b14 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5563
fix(seo): stop garbled brand snippet — render KortixLetterField as SVG background-image by @agent-kortix in https://github.com/kortix-ai/suna/pull/5555
feat(kaab): set connectors_personal from the agent-scope API (with subset pruning) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5564
chore(dev-eks): deploy dev-f9a5d420 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5566
fix(kaab): agent editor could not save any project using connectors_personal by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5565
chore(dev-eks): deploy dev-55663e3b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5568
feat(web): per-connector 'personal' toggle in the agent editor by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5567
feat(kaab): per-end-user usage metering (origin_ref on usage_events) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5569
feat(kaab): per-end-user concurrency cap + restore the lost account-active index by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5570
chore(dev-eks): deploy dev-7824a618 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5571
feat(web): per-connection IDs + tabbed connector detail by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5572
fix(permissions): surface project-rule overrides + feat(billing): per-end-user spend by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5573
chore(dev-eks): deploy dev-12da8c76 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5575
fix(web): drop iOS WebView WebKit-bridge messageHandlers noise (BS 5b94212b) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5574
fix(security): KaaB cross-end-user session access + revoked-secret re-injection by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5577
chore(dev-eks): deploy dev-f4a968f6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5580
feat(permissions): per-connection tool permissions by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5579
chore(dev-eks): deploy dev-8a344cdb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5582
fix(test): un-dark two suites (0 → 76 tests) + Permissions discoverability by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5583
chore(dev-eks): deploy dev-25051973 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5585
ops: guard final US East 2 cutover by @markokraemer in https://github.com/kortix-ai/suna/pull/5584
chore(release): merge latest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5588
feat(api): rename origin_ref → end_user_ref (origin_ref kept as permanent alias) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5586
fix(voice): keep worker bearer out of room metadata by @markokraemer in https://github.com/kortix-ai/suna/pull/5589
ops: support candidate tags in US shadow by @markokraemer in https://github.com/kortix-ai/suna/pull/5590
fix(cli,api): kortix ship pushes through the git proxy, not an unexportable token by @markokraemer in https://github.com/kortix-ai/suna/pull/5591
chore(dev-eks): deploy dev-96c8d84a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5596
fix: update staging security dependencies by @markokraemer in https://github.com/kortix-ai/suna/pull/5595
chore(release): reconcile latest main with staging hotfix by @markokraemer in https://github.com/kortix-ai/suna/pull/5593
feat(api): change a session's model mid-flight by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5592
chore(dev-eks): deploy dev-bd3ae3c1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5597
fix(test): validate every decorative landing element by @markokraemer in https://github.com/kortix-ai/suna/pull/5601
fix(test): validate every decorative landing element by @markokraemer in https://github.com/kortix-ai/suna/pull/5602
fix(sdk): preserve ACP message turn boundaries by @markokraemer in https://github.com/kortix-ai/suna/pull/5603
fix(migration): reconcile shadow credit ledger rows by @markokraemer in https://github.com/kortix-ai/suna/pull/5604
feat(whitelabel-demo): Kortix-as-a-Backend support end to end by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5599
fix: never re-queue a create whose failure was already returned to the caller by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5606
fix(migration): preserve replication backlog ownership by @markokraemer in https://github.com/kortix-ai/suna/pull/5607
fix(migration): reconcile shadow credit ledger rows by @markokraemer in https://github.com/kortix-ai/suna/pull/5605
chore(release): sync newest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5600
fix: one canonical connector alias across all three grant gates by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5609
chore(dev-eks): deploy dev-a6b3fd68 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5611
test: prove KaaB session isolation at the list leg by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5610
chore(dev-eks): deploy dev-65c707d4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5613
feat(whitelabel-demo): pick which shared connection a session runs as by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5612
fix(gateway): normalize malformed message history so strict providers accept it by @markokraemer in https://github.com/kortix-ai/suna/pull/5608
chore(dev-eks): deploy gateway dev-7b77515d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5616
chore(release): sync latest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5615
chore(release): sync newest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5617
chore(dev-eks): deploy dev-7b77515d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5618
chore(release): sync exact current main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5620
feat(sessions): add message-based rewind for REST and ACP by @markokraemer in https://github.com/kortix-ai/suna/pull/5619
chore(dev-eks): deploy dev-9e90e8ed [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5621
chore(release): sync exact latest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5622
Add Marketing Department project template by @lillyboga in https://github.com/kortix-ai/suna/pull/5578
chore(dev-eks): deploy gateway dev-e548c6a8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5625
chore(dev-eks): deploy dev-e548c6a8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5626
chore(release): sync final latest main into staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5627
fix(release): harden US cutover readiness by @markokraemer in https://github.com/kortix-ai/suna/pull/5623
chore(dev-eks): deploy gateway dev-79c208aa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5628
chore(release): include latest production cutover hardening by @markokraemer in https://github.com/kortix-ai/suna/pull/5629
docs(sdk): record deployed session rewind proof by @markokraemer in https://github.com/kortix-ai/suna/pull/5630
chore(dev-eks): deploy dev-49dc74f4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5632
fix(tests): use one Playwright runtime for US smoke by @markokraemer in https://github.com/kortix-ai/suna/pull/5631
chore(dev-eks): deploy gateway dev-83984378 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5634
chore(dev-eks): deploy dev-83984378 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5635
Fix ACP final idle state and add ?acp override by @markokraemer in https://github.com/kortix-ai/suna/pull/5636
chore(dev-eks): deploy dev-76b4cb98 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5637
fix(release): pace managed repository provisioning by @markokraemer in https://github.com/kortix-ai/suna/pull/5638
Heal corrupt git mirror cache entries by @lillyboga in https://github.com/kortix-ai/suna/pull/5641
chore(dev-eks): deploy dev-256230d1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5642
fix(release): isolate mutable IAM and session flows by @markokraemer in https://github.com/kortix-ai/suna/pull/5640
Fix CodeQL secure temporary file gate by @markokraemer in https://github.com/kortix-ai/suna/pull/5644
chore(dev-eks): deploy dev-022f666d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5645
Release candidate: promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5643
Fix release pacing unit-test environment by @markokraemer in https://github.com/kortix-ai/suna/pull/5646
Release candidate: fix release pacing test environment by @markokraemer in https://github.com/kortix-ai/suna/pull/5647
fix(sessions): sync runtime-generated titles by @markokraemer in https://github.com/kortix-ai/suna/pull/5648
chore(dev-eks): deploy dev-b8e1e75b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5649
Release candidate: include latest session title synchronization by @markokraemer in https://github.com/kortix-ai/suna/pull/5650
test(sessions): wait for web readiness in title sync flow by @markokraemer in https://github.com/kortix-ai/suna/pull/5651
Release candidate: sync test-only session title wait by @markokraemer in https://github.com/kortix-ai/suna/pull/5654
fix(worktree): stop process trees, not port listeners by @markokraemer in https://github.com/kortix-ai/suna/pull/5653
fix(api): return 404 for readRepoFile git-show path-not-found (BS a8d20288) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5652
chore(dev-eks): deploy dev-985b7db0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5655
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5656
chore(dev-eks): deploy dev-cd5f4513 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5659
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5660
test(ke2e): reuse Git fixtures and split live lanes by @markokraemer in https://github.com/kortix-ai/suna/pull/5658
chore(release): promote optimized ke2e gate to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5661
test(ke2e): honor gateway Retry-After by @markokraemer in https://github.com/kortix-ai/suna/pull/5662
chore(release): promote Retry-After gate fix to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5663
feat(runtime): add ACP CLI harness processes by @markokraemer in https://github.com/kortix-ai/suna/pull/5665
chore(dev-eks): deploy gateway dev-d87349a9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5666
chore(dev-eks): deploy dev-d87349a9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5667
docs: connectors_personal manifest field, changeModel SDK method, auth-type enum, runtimeTransport option by @agent-kortix in https://github.com/kortix-ai/suna/pull/5668
test(ke2e): bound release gate load by @markokraemer in https://github.com/kortix-ai/suna/pull/5669
chore(release): promote latest main and bounded ke2e gate by @markokraemer in https://github.com/kortix-ai/suna/pull/5670
fix(runtime): pin Pi internal dependencies by @markokraemer in https://github.com/kortix-ai/suna/pull/5671
chore(dev-eks): deploy gateway dev-1b4db8f8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5672
chore(dev-eks): deploy dev-1b4db8f8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5674
chore(release): include latest Pi runtime fix in staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5673
docs: narrow the e2e-preview-proxy failures to a harness question by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5614
fix(runtime): install Pi with npm by @markokraemer in https://github.com/kortix-ai/suna/pull/5675
chore(dev-eks): deploy gateway dev-5762bcfc [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5677
chore(dev-eks): deploy dev-5762bcfc [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5678
feat(whitelabel-demo): show what a running session can and cannot change by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5676
chore(dev-eks): deploy gateway dev-dda51b0b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5680
chore(release): final main cutoff for v0.11.0 staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5679
chore(dev-eks): deploy dev-dda51b0b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5681
docs: the apps/api suite has no CI key — proven, and my earlier fix retracted by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5682
fix(security): session sharing was exempt from the KaaB isolation narrowing by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5683
chore(dev-eks): deploy dev-cb5bb899 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5685
fix(security): bind turn-question to the sandbox token's own session by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5686
chore(dev-eks): deploy dev-8bfb1096 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5690
fix(security): never widen an agent grant on a manifest error; canonicalize the v2 default by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5687
fix(gateway): fail over stalled model streams by @markokraemer in https://github.com/kortix-ai/suna/pull/5689
chore(dev-eks): deploy gateway dev-9ac237f1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5692
chore(dev-eks): deploy dev-9ac237f1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5693
fix(security): redact session content on rows the caller cannot access by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5688
docs: correct the KaaB docs against the code, and document what shipped by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5691
fix(whitelabel-demo): make KaaB refusals reachable, and stop silent sends by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5694
fix(security): an agent must never resolve its own approval by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5684
chore(dev-eks): deploy dev-57e081c0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5696
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5695
feat(kaab): filter the session list by end_user_ref by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5697
chore(dev-eks): deploy dev-7f51c831 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5699
feat(kaab): re-mint the session token grant on a mid-session agent switch by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5698
chore(dev-eks): deploy dev-fd6fa64b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5701
fix(kaab): revoke a session's executor tokens when its sandbox is gone by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5700
fix(ke2e): reuse managed project on staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5702
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5703
feat(kaab): per-end-user spend cap by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5704
chore(dev-eks): deploy dev-0f390c6c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5706
docs: verified baseline of secret exposure inside the sandbox by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5705
fix(ke2e): bound stale-user cleanup by @markokraemer in https://github.com/kortix-ai/suna/pull/5707
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5709
perf(ke2e): query stale users directly by @markokraemer in https://github.com/kortix-ai/suna/pull/5711
fix(ke2e): require strict TLS for GC database by @markokraemer in https://github.com/kortix-ai/suna/pull/5714
content(blog): differentiate agi-ready-architecture manifest from introducing-kortix by @agent-kortix in https://github.com/kortix-ai/suna/pull/5712
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5713
fix(ke2e): preserve claimed warm-session metadata by @markokraemer in https://github.com/kortix-ai/suna/pull/5716
fix(api): preserve public-share permission status by @markokraemer in https://github.com/kortix-ai/suna/pull/5717
chore(dev-eks): deploy dev-fe9c7bfe [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5718
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5719
feat(secrets): secret delivery strategy — design + pure policy layer by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5708
fix(whitelabel-demo): refuse encoded-slash path traversal in the BFF proxy by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5710
fix(kaab): two critical regressions in my own isolation work by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5715
chore(release): promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5720
chore(dev-eks): deploy dev-b217ced8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5721
fix(kaab): gate opencode :4096 on session visibility, not just :8000 by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5722
chore(dev-eks): deploy dev-e5e934f4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5723
chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5725
feat(secrets): SDS stage 1 — schema + policy layer, one shared egress-policy type by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5724
chore(dev-eks): deploy dev-ff0e36fa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5726
fix(sandbox-proxy): release prompt dedupe claim when delivery provably failed by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5271
chore(dev-eks): deploy dev-be05b2ca [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5727
feat(whitelabel-demo): session scope controls, connector binding, and a testing guide by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5728
chore(release): freeze v0.11.0 source at 3729edc1 by @markokraemer in https://github.com/kortix-ai/suna/pull/5730
chore(release): promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5729
Release v0.11.0 — Realtime voice, session rewind, warm sessions, and Marketing Department by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5732
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.15...v0.11.0
Read the full release on GitHub →
v0.10.15 July 25, 2026 Read the full release on GitHub →
v0.10.14 July 24, 2026
Use shared Daytona and Platinum runtime images for normal session boots.
Disable automatic per-project commit-specific warm image builds.
Fix snapshot collision recovery, warm archive handling, and repository Git metadata.
Preserve sandbox URLs and reset readiness clocks across session restarts.
Add responsive Cmd+J loading feedback and clearer runtime versus accelerator status.
Remove the missing MACHINE.md failure and legacy migration eligibility request noise.
Refactor release session fixtures to reuse managed repositories, bound SESS-2 to one session, and enforce teardown.
Retry transient runtime-readiness failures without leaving failed sessions.
Enforce account concurrent-session overrides consistently across API tasks.
Correct compute pricing calculations and billing copy.
Promote verified staging source d4f665abe258513bb1f48a6606f59c48dbfac835; staging RUN-8 and SESS-2 passed 2/2.
What's Changed
chore(release): VERSION → 0.10.14 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5135
Privileged project session inventory by @markokraemer in https://github.com/kortix-ai/suna/pull/5137
chore(dev-eks): deploy dev-e01813bc [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5138
Bind owner-scoped connector profiles at session start by @markokraemer in https://github.com/kortix-ai/suna/pull/5139
chore(dev-eks): deploy dev-68cc137c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5140
fix(billing): show top-up, not the Free-plan pitch, when a Team wallet is out of credits by @markokraemer in https://github.com/kortix-ai/suna/pull/5141
chore(dev-eks): deploy dev-d99ed30c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5142
Revert owner-scoped connector profile bindings (#5139) by @markokraemer in https://github.com/kortix-ai/suna/pull/5143
chore(dev-eks): deploy dev-1d613936 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5145
fix(runtime): disable passive continuation globally by @markokraemer in https://github.com/kortix-ai/suna/pull/5148
chore(dev-eks): deploy dev-5696de72 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5150
chore(runtime): remove passive continuation residue by @markokraemer in https://github.com/kortix-ai/suna/pull/5151
chore(dev-eks): deploy dev-7acd1a04 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5153
chore(dev-eks): deploy dev-d5746cc3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5155
fix(api): harden owner-scoped connector profiles by @markokraemer in https://github.com/kortix-ai/suna/pull/5156
chore(dev-eks): deploy dev-5c02647b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5157
chore(dev-eks): deploy dev-aa78c3e4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5158
chore(dev-eks): deploy dev-2367c80d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5159
chore(dev-eks): deploy dev-527590d3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5160
chore(deps): bump github/codeql-action/upload-sarif from 4.37.0 to 4.37.1 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/5122
chore(deps): bump actions/setup-node from 4 to 7 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/5121
chore(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/5120
test(ke2e): add TRG-11/12/13 triggers edge cases (authz, validation, activation lifecycle) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5162
fix(schema): regenerate stale snapshots after WhatsApp/Meet channel work by @agent-kortix in https://github.com/kortix-ai/suna/pull/5164
chore(deps): bump pillow to 12.3.0 + regenerate embedded snapshot by @agent-kortix in https://github.com/kortix-ai/suna/pull/5161
chore(deps): bump stale security override pins (axios, hono, js-yaml, protobufjs, brace-expansion) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5163
chore(dev-eks): deploy gateway dev-2ce865cd [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5166
chore(dev-eks): deploy dev-2ce865cd [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5169
chore(deps): bump stale security override pins batch 2 (svgo, fast-uri, dompurify, @opentelemetry/propagator-jaeger) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5168
chore(dev-eks): deploy gateway dev-7c6bb92a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5170
chore(dev-eks): deploy dev-7c6bb92a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5171
seo(aeo): populate last_modified for docs + marketing in /api/ai by @agent-kortix in https://github.com/kortix-ai/suna/pull/5165
fix(web): filter Firefox Paper Shaders null-context getSupportedExtensions noise by @agent-kortix in https://github.com/kortix-ai/suna/pull/5172
fix(web): match capitalized 'Window' storage SecurityError noise (BS 89b0a8e8…/b6927c9d…) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5173
fix(web): suppress Sentry 10.x 'No error message' placeholder chunk noise (BS 141dcca3/19ee7c2f) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5174
fix(ops): stop audit_events count from 500-ing /ops/overview + index it by @agent-kortix in https://github.com/kortix-ai/suna/pull/5176
chore(dev-eks): deploy dev-b8cdbb8f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5177
fix(api): classify Daytona 429 out of Sentry across ALL call sites (ec26b248…) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5167
chore(dev-eks): deploy dev-1379e492 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5178
fix(api): classify Daytona transient 502/gateway failures out of Sentry (e98d61f1…) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5175
chore(dev-eks): deploy dev-c17ab86a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5179
chore(dev-eks): deploy dev-8d437e92 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5184
Prompt delivery reliability: durable trigger delivery, loud dead-letters that self-heal, undelivered-prompt reconciler, restart hardening by @markokraemer in https://github.com/kortix-ai/suna/pull/5180
chore(dev-eks): deploy dev-3c297bae [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5186
fix(web): filter Android WebView native-bridge postEvent noise (Java object is gone) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5181
fix(web): classify userscript-manager JSON.parse noise out of Sentry (BS 2249441898…) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5182
fix(web/sdk): classify expected no-compaction-model state out of Sentry (BS 9f72dd9a…) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5183
fix(web): filter Firefox React #327 scheduler re-entrancy noise (BS 0f03b24eb6) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5185
chore(dev-eks): deploy dev-1d002535 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5187
fix(api): normalize path-only Bun req.url from no-Host scanner probes (BS 28e9a65c…) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5188
chore(dev-eks): deploy dev-72cb5e7b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5189
chore(dev-eks): deploy dev-f72ff258 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5190
chore(dev-eks): deploy dev-4fe8c59e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5191
chore(dev-eks): deploy dev-6227dead [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5192
fix(snapshots): stop the sandbox-template rebuild storm + Daytona 429 feedback loop by @markokraemer in https://github.com/kortix-ai/suna/pull/5193
chore(dev-eks): deploy dev-359de189 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5194
docs: journey-based rebuild in controlled Simplified Technical English by @markokraemer in https://github.com/kortix-ai/suna/pull/5195
chore(dev-eks): deploy dev-89637e9b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5197
chore(dev-eks): deploy dev-1334bac5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5198
fix(web): filter Sentry non-Error undefined promise rejection noise (BS 5cfc90e5) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5200
feat(api): session origin + canOverride gate for backend-vouched sessions by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5147
chore(dev-eks): deploy dev-4a6e8fdf [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5202
fix(runtime): route explicit models through Kortix gateway by @markokraemer in https://github.com/kortix-ai/suna/pull/5208
chore(dev-eks): deploy dev-c75d3a67 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5209
chore(dev-eks): deploy dev-9db97511 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5211
feat(web): support standard LaTeX markdown delimiters by @markokraemer in https://github.com/kortix-ai/suna/pull/5213
fix(billing): out-of-credits UX — real balance, valid success URL, on-brand modal, confetti by @markokraemer in https://github.com/kortix-ai/suna/pull/5146
chore(dev-eks): deploy gateway dev-ea017504 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5217
chore(dev-eks): deploy dev-ea017504 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5219
fix: reduce dev project load latency by @markokraemer in https://github.com/kortix-ai/suna/pull/5220
chore(dev-eks): deploy dev-696a7479 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5224
Non-duplicating prompt delivery + accurate session status label by @markokraemer in https://github.com/kortix-ai/suna/pull/5222
chore(dev-eks): deploy dev-9d45d93b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5227
feat(web): publish agent discovery endpoints by @markokraemer in https://github.com/kortix-ai/suna/pull/5229
fix(security): resolve critical and high scan findings by @markokraemer in https://github.com/kortix-ai/suna/pull/5228
chore(dev-eks): deploy gateway dev-812c26ec [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5230
chore(dev-eks): deploy dev-812c26ec [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5231
fix(web): preserve agent discovery link headers by @markokraemer in https://github.com/kortix-ai/suna/pull/5234
fix(codeql): remove dead API scripts by @markokraemer in https://github.com/kortix-ai/suna/pull/5236
chore(dev-eks): deploy dev-71a5fdae [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5238
fix: make GitHub repository import bounded and explicit by @markokraemer in https://github.com/kortix-ai/suna/pull/5232
chore(dev-eks): deploy dev-c000047e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5242
fix(web): filter frameless OperationError popErrorScope rejection noise (BS 5e1aca20) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5237
fix(executor): classify optional-capability 501 as typed feature_not_supported out of Sentry (BS 1f3c4d96) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5240
chore(dev-eks): deploy dev-efe832b5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5244
fix(release): stabilize staging QA flows by @markokraemer in https://github.com/kortix-ai/suna/pull/5245
Fix remaining Checkov infrastructure gaps by @markokraemer in https://github.com/kortix-ai/suna/pull/5248
Reconcile security baseline apply by @markokraemer in https://github.com/kortix-ai/suna/pull/5249
Permit CloudTrail encrypted SNS delivery by @markokraemer in https://github.com/kortix-ai/suna/pull/5250
Update Hono node server security override by @markokraemer in https://github.com/kortix-ai/suna/pull/5251
chore(dev-eks): deploy gateway dev-f06e8d4a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5252
feat(api): per-session secrets allowlist (KaaB Phase 2) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5154
chore(dev-eks): deploy dev-a485a458 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5253
feat: complete the Kortix-as-a-Backend DX (origin_ref runtime, SDK/CLI, e2e proof, docs) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5201
chore(dev-eks): deploy dev-2cbc61a8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5257
Add SEO department marketplace project by @lillyboga in https://github.com/kortix-ai/suna/pull/5210
chore(dev-eks): deploy dev-99eab67b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5262
Fix project session inventory authorization by @markokraemer in https://github.com/kortix-ai/suna/pull/5266
chore(dev-eks): deploy dev-2bf83d35 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5268
docs: accuracy sweep — manifest defaults, SDK ensureReady polling, CLI flags, channels by @agent-kortix in https://github.com/kortix-ai/suna/pull/5264
Add SEO Department install guide by @lillyboga in https://github.com/kortix-ai/suna/pull/5276
chore(dev-eks): deploy dev-d95f48ba [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5277
test: retry transient release gate failures by @markokraemer in https://github.com/kortix-ai/suna/pull/5278
fix(git): refresh mirror after missing branch by @markokraemer in https://github.com/kortix-ai/suna/pull/5280
chore(dev-eks): deploy dev-7e1abd52 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5281
Guide SEO Department setup in the install session by @lillyboga in https://github.com/kortix-ai/suna/pull/5283
chore(dev-eks): deploy dev-93b56c08 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5284
content(blog): wire 4 orphan posts into the internal-link graph by @agent-kortix in https://github.com/kortix-ai/suna/pull/5285
test: tolerate release gate host transients by @markokraemer in https://github.com/kortix-ai/suna/pull/5286
fix(staging): cap API database pools by @markokraemer in https://github.com/kortix-ai/suna/pull/5289
fix(web): cover modern JSC Paper Shaders null-WebGL wording (BS a8754de5) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5292
Improve SEO Department install handoff by @lillyboga in https://github.com/kortix-ai/suna/pull/5293
chore(dev-eks): deploy dev-2a297163 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5294
fix(deps): upgrade PostCSS past CVE-2026-45623 by @markokraemer in https://github.com/kortix-ai/suna/pull/5296
chore(dev-eks): deploy gateway dev-05586895 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5297
chore(dev-eks): deploy dev-05586895 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5299
Fix API starter contract tests by @markokraemer in https://github.com/kortix-ai/suna/pull/5301
chore(dev-eks): deploy dev-1ecd7840 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5302
fix(github): link existing app installations by @markokraemer in https://github.com/kortix-ai/suna/pull/5300
chore(dev-eks): deploy dev-e181b0de [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5304
refactor(session): bound synchronization and persist project navigation by @markokraemer in https://github.com/kortix-ai/suna/pull/5306
chore(dev-eks): deploy dev-6ee04945 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5307
Fix release infra gate for Lambda Python 3.13 by @markokraemer in https://github.com/kortix-ai/suna/pull/5308
chore: standarzied and managed sandbox node+python runtime by @BlankParticle in https://github.com/kortix-ai/suna/pull/5206
chore(dev-eks): deploy gateway dev-4ab7d6c5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5310
chore(dev-eks): deploy dev-4ab7d6c5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5311
Fix dev session provisioning and terminal startup state by @markokraemer in https://github.com/kortix-ai/suna/pull/5314
chore(dev-eks): deploy dev-b63dfdc1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5315
fix: make session startup and shell recovery reliable by @markokraemer in https://github.com/kortix-ai/suna/pull/5316
chore(dev-eks): deploy gateway dev-cd18974b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5317
chore(dev-eks): deploy dev-cd18974b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5319
fix(sandbox): invalidate broken v31 runtime image by @markokraemer in https://github.com/kortix-ai/suna/pull/5318
chore(dev-eks): deploy gateway dev-3956467f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5320
chore(dev-eks): deploy dev-3956467f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5321
fix(sessions): preserve runtime URL on restart by @markokraemer in https://github.com/kortix-ai/suna/pull/5323
chore(dev-eks): deploy dev-228b3cde [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5324
fix(sessions): reset restart readiness clocks by @markokraemer in https://github.com/kortix-ai/suna/pull/5326
feat(provider-transition): durable prepare→verify→activate provider migration by @allenabraham999 in https://github.com/kortix-ai/suna/pull/5243
chore(dev-eks): deploy gateway dev-1a9325c0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5327
chore(dev-eks): deploy dev-1a9325c0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5328
fix(snapshots): preserve git metadata in warm build contexts by @markokraemer in https://github.com/kortix-ai/suna/pull/5329
chore(dev-eks): deploy gateway dev-493ab7d3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5330
chore(dev-eks): deploy dev-493ab7d3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5331
fix(daytona): restore warm repository Git metadata from archive by @markokraemer in https://github.com/kortix-ai/suna/pull/5332
chore(dev-eks): deploy gateway dev-47a0fdb4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5333
chore(dev-eks): deploy dev-47a0fdb4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5334
fix(daytona): tolerate immutable warm archive by @markokraemer in https://github.com/kortix-ai/suna/pull/5335
chore(dev-eks): deploy gateway dev-f78037af [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5336
chore(dev-eks): deploy dev-f78037af [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5337
fix(sandboxes): separate session runtime from project acceleration by @markokraemer in https://github.com/kortix-ai/suna/pull/5338
chore(dev-eks): deploy dev-8b0f0d01 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5339
Enforce paid access for managed models by @markokraemer in https://github.com/kortix-ai/suna/pull/5341
chore(dev-eks): deploy gateway dev-a32b2d12 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5343
chore(dev-eks): deploy dev-a32b2d12 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5345
Remove stale Auto output from agents CLI by @markokraemer in https://github.com/kortix-ai/suna/pull/5344
chore(dev-eks): deploy dev-76c12bad [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5346
fix(api): gate Teams + Slack channel writes on project.connector.write by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5105
fix(api): atomic SCIM group-park append + branch-GC forward progress by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5106
fix(api): reject replayed/consumed execution ids in the approval wait gate by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5107
chore(api): remove dead install-authz gate + fix misleading marketplace comments by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5108
fix(iam-web): surface the member-detail actions (View as / permissions) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5109
fix(iam-web): confirm role changes + use one role-descriptor source by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5110
test(api): cover tunnel-revoke, system-secret-delete guard, oauth-delete by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5112
hardening(kaab): ensureReady transient-null fix, hot-push SLACK_BOT_TOKEN scrub, tests + docs by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5259
fix(connectors): auto email binding no longer disables default fallback for other connectors by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5272
chore(dev-eks): deploy dev-6c0f3be2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5347
docs: Kortix-as-a-Backend v1 — session-start overrides, origin gate, service-account auth by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5101
fix(security): reject cross-account idempotency-key collisions (session disclosure) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5267
fix(secrets): resolve per-user secret overrides as the session owner, not the provisioner by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5275
fix(sdk): scoped runtime() cross-tenant sandbox bleed (top-level escape hatch) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5295
chore(dev-eks): deploy dev-b6aafda6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5348
docs: accuracy sweep — scoped runtime() throw, channel token injection, provider transition by @agent-kortix in https://github.com/kortix-ai/suna/pull/5350
hardening(kaab): model fail-fast + idempotency identity guards + KaaB test suite & audit by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5288
test(shared): de-flake url-autolink ReDoS perf bound (2s → 10s) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5351
chore(dev-eks): deploy gateway dev-8b7b5b2f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5352
chore(dev-eks): deploy dev-8b7b5b2f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5353
Adjust compute pricing by @markokraemer in https://github.com/kortix-ai/suna/pull/5355
chore(dev-eks): deploy dev-6abb77e4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5356
Correct model billing copy by @markokraemer in https://github.com/kortix-ai/suna/pull/5357
fix(billing): prevent machine-sub hijack from orphaning paid plan subscriptions by @agent-kortix in https://github.com/kortix-ai/suna/pull/5358
chore(dev-eks): deploy dev-2c85d2db [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5361
fix(sessions): apply project model defaults by @markokraemer in https://github.com/kortix-ai/suna/pull/5359
chore(dev-eks): deploy dev-2660e219 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5362
feat(kaab): personal connectors + inherit_unbound + Connection ID UI + public backend docs by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/5360
content(web): rename deprecated CTA labels to sanctioned "Request demo" by @agent-kortix in https://github.com/kortix-ai/suna/pull/5363
fix(ke2e): bound session release gate flows by @markokraemer in https://github.com/kortix-ai/suna/pull/5369
chore(dev-eks): deploy dev-dc0b6c47 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5371
update pricing details by @markokraemer in https://github.com/kortix-ai/suna/pull/5373
fix(api): resolve session limits across ECS tasks by @markokraemer in https://github.com/kortix-ai/suna/pull/5376
chore(dev-eks): deploy dev-4694319b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5377
fix: retry transient read transport failures by @markokraemer in https://github.com/kortix-ai/suna/pull/5382
chore(dev-eks): deploy dev-93058e0e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5384
fix(web): drop @embedpdf tiling tile-destructure noise (BS 3e579401/70272e1e) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5367
fix(web): drop Paper Shaders WebGL-unsupported noise (BS f1abf79e) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5368
fix(web): classify 25s server-processing-deadline as expected (BS a330bea1) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5375
fix(web): drop frameless bare 'network error' rejection noise (BS 2403c9ba) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5380
feat(web): restore session panel surfaces, fix show rendering, rework viewers by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5378
New Contributors
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.13...v0.10.14
Read the full release on GitHub →
v0.10.13 July 20, 2026 LLM gateway
ChatGPT / Codex models work again. Fixed the ChatGPT-subscription (codex/*) 400s end to end: restored the required store: false, stopped sending the unsupported max_output_tokens, and started surfacing the real upstream error detail instead of a bare "Bad Request".
Anthropic extended thinking now uses adaptive + effort (not the deprecated enabled + budget tokens), so non-AUTO reasoning effort no longer 400s on newer Claude models.
Reworked provider mapping into per-provider adapters typed against each SDK's own option types, with models.dev-driven capability gating — wrong wire shapes are now compile errors.
Models & providers
Model picker labels BYOK groups by their real provider (e.g. Amazon Bedrock , not "Kortix").
Model show/hide visibility is now consistent across the picker and settings.
Projects & Git
Git-provider-first project creation and management; new projects default to managed repositories.
Removed an unbuilt "Repository synchronization" placeholder from Git settings.
Marketplace
Fixed marketplace item pages returning 500 (they now render correctly, and a missing item 404s).
Identity (SCIM/IAM)
Okta group-push renames (PUT /Groups) now work; protection for IdP-synced groups; status-first Identity tab with last-sync activity and per-provider cadence.
CLI & docs
Avoids 502s on long chat turns; clearer "vision fallback" model labeling; dev CLI installer surfaced in Git settings.
New "Developing with Kortix" guide covering local instances and the CLI workflow.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.12...v0.10.13
Read the full release on GitHub →
v0.10.12 July 19, 2026 This release fixes the session-start regression behind the v0.10.11 rollback and re-ships the rebuilt LLM gateway.
Fixed
New sessions could hang at "Starting the agent" and never become ready — the in-sandbox runtime was rejecting its own model configuration. Sessions now start reliably.
Sandbox images re-downloaded the browser engine on rebuilds, which slowed session startup under load; the browser layer is now cached deterministically.
Slack channels showing "Not connected" with no connector available.
Improved
The LLM gateway is rebuilt on the Vercel AI SDK with a live models.dev catalog (re-shipped from 0.10.11).
Broader end-to-end test coverage and infrastructure monitoring.
Internal
Groundwork for an alternate managed-git backend (off by default; deployments stay on GitHub).
Secrets-management hardening.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.11...v0.10.12
Release on GitHub →
v0.10.11 July 19, 2026 LLM Gateway
Rebuilt on the Vercel AI SDK + live models.dev. The gateway now runs a single AI-SDK transport for every provider (OpenAI, Anthropic, Bedrock, OpenRouter and more), with the model catalog served verbatim from models.dev. The old per-provider transports and the LiteLLM sidecar have been removed.
Per-model generation controls. Set reasoning effort, temperature, top_p, and max output tokens per model — each control only appears when the model actually supports it (driven by the live catalog), and applies to every client (chat, SDK, and direct API).
Reasoning-effort selector in the chat composer for models that expose it (including a thinking-effort control for Claude models).
Two drop-in API surfaces: OpenAI-compatible /v1/chat/completions and Anthropic-compatible /v1/messages, plus /v1/models — all now documented in the API reference.
Provider & model manager overhaul: connect providers (incl. Bedrock via bearer token), browse models with pricing, context windows, and capabilities, verify that a key actually works, and see everything grouped under its real provider.
Anthropic extended thinking and prompt caching are applied correctly, and cost/usage are recorded accurately per request.
A gen_ai.* OpenTelemetry span is emitted per gateway call for downstream observability.
Templates
Many new business use-case templates across finance, sales, customer support, marketing, data, and recruiting — each with its own cover art.
Fixes & hardening
Sandbox proxy no longer times out healthy long reasoning/tool turns.
Blank projects can start sessions immediately (no more "agent not declared").
Project-scoped API tokens can drive their own project's sessions.
Per-project agent model pins no longer collide across projects.
Faster session/gateway paths and clearer errors on upstream failures.
Security & compliance: GuardDuty runtime monitoring, IAM baseline, root-login and patch/detection alerting, and corrected SSO/SCIM setup guides.
What's Changed
chore(release): VERSION → 0.10.11 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4890
feat(iam-web): 4 more SAML providers + change-provider confirmation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/4892
feat(iam-web): OneLogin, JumpCloud, PingOne Directory Sync (SCIM) guides by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/4894
fix(llm): Bedrock connects with bearer+region, live verbatim models.dev catalog by @markokraemer in https://github.com/kortix-ai/suna/pull/4893
chore(dev-eks): deploy gateway dev-5392ac7b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4895
chore(dev-eks): deploy dev-5392ac7b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4896
fix(compliance): close AWS patch and detection gaps by @markokraemer in https://github.com/kortix-ai/suna/pull/4897
feat(connectors): add first-class Postman ingestion by @markokraemer in https://github.com/kortix-ai/suna/pull/4898
feat(web): overhaul LLM gateway + provider/key manager UX by @markokraemer in https://github.com/kortix-ai/suna/pull/4899
chore(dev-eks): deploy gateway dev-0919c1c2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4901
chore(dev-eks): deploy dev-0919c1c2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4903
feat(llm-gateway): AI-SDK transport engine (flag-gated) behind LLM_TRANSPORT_ENGINE by @markokraemer in https://github.com/kortix-ai/suna/pull/4902
chore(dev-eks): deploy gateway dev-25b574fd [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4904
chore(dev-eks): deploy dev-25b574fd [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4905
feat(llm-gateway): gen_ai.* OTel span per gateway call by @markokraemer in https://github.com/kortix-ai/suna/pull/4906
feat(llm-gateway): Anthropic /v1/messages ingress on the gateway by @markokraemer in https://github.com/kortix-ai/suna/pull/4907
chore(dev-eks): deploy gateway dev-dad64456 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4909
feat(api): /v1/generation + /v1/usage OpenRouter-parity read endpoints by @markokraemer in https://github.com/kortix-ai/suna/pull/4908
chore(dev-eks): deploy dev-cc465f35 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4910
fix(compliance): codify EC2 CPU alarm coverage by @markokraemer in https://github.com/kortix-ai/suna/pull/4900
content: publish AGI-ready architecture blog post by @agent-kortix in https://github.com/kortix-ai/suna/pull/4911
fix(llm-gateway): AI-SDK streaming error handling + bedrock tool-loop + cost-hint parity by @markokraemer in https://github.com/kortix-ai/suna/pull/4914
chore(dev-eks): deploy gateway dev-2072d456 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4915
chore(dev-eks): deploy dev-2072d456 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4916
feat: 12 more business use-case templates (marketing, CS, data, revops) by @lillyboga in https://github.com/kortix-ai/suna/pull/4917
chore(dev-eks): deploy dev-754cf631 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4918
fix(compliance): safely adopt IAM group baseline by @markokraemer in https://github.com/kortix-ai/suna/pull/4913
feat(use-cases): cover art for the 12 new use-case templates by @lillyboga in https://github.com/kortix-ai/suna/pull/4919
feat(connectors): add unified Discover marketplace by @markokraemer in https://github.com/kortix-ai/suna/pull/4920
chore(dev-eks): deploy dev-be5dce44 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4921
feat(llm-gateway): absorb OpenAI Responses API into the ai-sdk engine by @markokraemer in https://github.com/kortix-ai/suna/pull/4924
chore(dev-eks): deploy gateway dev-760450fa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4925
feat(llm-gateway): mount Anthropic /v1/messages ingress, delete legacy /router/messages by @markokraemer in https://github.com/kortix-ai/suna/pull/4922
chore(dev-eks): deploy gateway dev-bf7de02b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4926
fix(llm-gateway): fail fast on terminal upstream auth errors instead of hanging by @markokraemer in https://github.com/kortix-ai/suna/pull/4923
chore(dev-eks): deploy gateway dev-81e47a87 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4928
feat: 20 more business use-case templates + covers (USE CASE MAX, 42→62) by @lillyboga in https://github.com/kortix-ai/suna/pull/4927
revert(connectors): move unified Discover marketplace back to draft by @markokraemer in https://github.com/kortix-ai/suna/pull/4929
chore(dev-eks): deploy dev-14e31468 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4931
fix(llm-gateway): strip Bedrock cross-region prefix for pricing lookup by @markokraemer in https://github.com/kortix-ai/suna/pull/4932
fix(llm-gateway): terminal upstream auth errors surface as non-retryable, not silent 502 by @markokraemer in https://github.com/kortix-ai/suna/pull/4933
fix(llm-gateway): ai-sdk engine parity — response_format, seed, penalties, logit_bias/logprobs/etc by @markokraemer in https://github.com/kortix-ai/suna/pull/4934
chore(dev-eks): deploy gateway dev-369cde6e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4935
chore(dev-eks): deploy dev-369cde6e [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4936
fix(llm-gateway): fail fast + clear on a descriptor with no usable baseUrl by @markokraemer in https://github.com/kortix-ai/suna/pull/4938
chore(dev-eks): deploy gateway dev-0d0bb114 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4939
chore(dev-eks): deploy dev-0d0bb114 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4940
fix(compliance): allow Drata SNS subscription inspection by @markokraemer in https://github.com/kortix-ai/suna/pull/4937
test(llm-gateway): remove unused test declarations by @markokraemer in https://github.com/kortix-ai/suna/pull/4942
chore(dev-eks): deploy gateway dev-ebf18dfa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4944
chore(dev-eks): deploy dev-ebf18dfa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4945
test(accessibility): scope decorative contrast audit by @markokraemer in https://github.com/kortix-ai/suna/pull/4946
feat(llm-gateway): make ai-sdk the sole transport engine; delete native transports + LiteLLM sidecar by @markokraemer in https://github.com/kortix-ai/suna/pull/4943
chore(dev-eks): deploy gateway dev-ba6b2364 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4948
chore(dev-eks): deploy dev-ba6b2364 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4949
Fix release QA staging environment isolation by @markokraemer in https://github.com/kortix-ai/suna/pull/4951
fix(llm-gateway): catch GatewayResolutionError in /resolve-upstream — stop "Connect Codex" spike (incident 991624588) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4953
chore(dev-eks): deploy gateway dev-22c1e4ca [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4955
chore(dev-eks): deploy dev-22c1e4ca [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4956
Fix staging release QA contracts by @markokraemer in https://github.com/kortix-ai/suna/pull/4954
chore(dev-eks): deploy dev-06332c1c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4957
Fix residual release QA contracts by @markokraemer in https://github.com/kortix-ai/suna/pull/4959
chore(dev-eks): deploy dev-3cd55231 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4960
Fix release QA runtime identities by @markokraemer in https://github.com/kortix-ai/suna/pull/4962
Preserve staging secrets during deployment by @markokraemer in https://github.com/kortix-ai/suna/pull/4964
test(release): authenticate protected metrics coverage by @markokraemer in https://github.com/kortix-ai/suna/pull/4966
fix(self-host): isolate black-box compose probes by @markokraemer in https://github.com/kortix-ai/suna/pull/4968
chore(dev-eks): deploy dev-88330aaa [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4969
fix(llm-gateway): agent-scope model pins now apply to sessions on the 'default' sentinel by @markokraemer in https://github.com/kortix-ai/suna/pull/4971
chore(dev-eks): deploy dev-c92f20b0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4972
fix(sandbox-proxy): stop 502ing healthy long reasoning/tool turns on blocking POST /session/:id/message by @markokraemer in https://github.com/kortix-ai/suna/pull/4975
fix(projects): synthesize v2 manifest w/ declared agent for blank projects by @markokraemer in https://github.com/kortix-ai/suna/pull/4974
fix(snapshots): retry Platinum template builds that never register by @markokraemer in https://github.com/kortix-ai/suna/pull/4977
fix(auth): project-scoped PATs can drive their own project's sandbox proxy by @markokraemer in https://github.com/kortix-ai/suna/pull/4973
fix(llm-gateway): scope agent-model pins per project, not per account by @markokraemer in https://github.com/kortix-ai/suna/pull/4978
chore(dev-eks): deploy dev-7722d516 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4979
fix(projects): close blank-project AGENT_NOT_DECLARED gaps #4974 left open by @markokraemer in https://github.com/kortix-ai/suna/pull/4980
chore(dev-eks): deploy dev-e05b805b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4981
feat(connectors): auto-discover source authentication by @markokraemer in https://github.com/kortix-ai/suna/pull/4982
chore(dev-eks): deploy dev-0b9f4edb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4985
docs(llm-gateway): register inference routes in OpenAPI spec by @markokraemer in https://github.com/kortix-ai/suna/pull/4986
feat(llm-gateway): Models tab in depth — pricing, capabilities, copyable ids by @markokraemer in https://github.com/kortix-ai/suna/pull/4984
feat(gateway): in-UI API reference for OpenAI/Anthropic/models endpoints by @markokraemer in https://github.com/kortix-ai/suna/pull/4983
docs(self-host): correct stale ':stable not yet published' claim by @agent-kortix in https://github.com/kortix-ai/suna/pull/4988
feat(gateway): add Playground tab for comparing models side by side by @markokraemer in https://github.com/kortix-ai/suna/pull/4989
feat(llm-gateway): verify BYOK provider keys live + disclose custom-provider gateway bypass by @markokraemer in https://github.com/kortix-ai/suna/pull/4990
docs(self-host): add Backup & DR (enterprise) subsection with RPO/RTO + restore drill by @agent-kortix in https://github.com/kortix-ai/suna/pull/4992
feat(gateway): routing availability preview + vision-model override editor by @markokraemer in https://github.com/kortix-ai/suna/pull/4991
ci(self-host): bump fast e2e per-test timeout to 30s (fix release-blocker flake) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4993
feat(llm-gateway): per-model generation controls (ingest, UI, persistence, injection) by @markokraemer in https://github.com/kortix-ai/suna/pull/4995
chore(dev-eks): deploy gateway dev-bb305e48 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4997
chore(dev-eks): deploy dev-bb305e48 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4998
fix(api): block sandbox agent tokens from account-scoped usage + gateway forensics reads by @agent-kortix in https://github.com/kortix-ai/suna/pull/4999
chore(dev-eks): deploy dev-9971614f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5001
feat(connectors): feature-flag Discover beside Easy Connect by @markokraemer in https://github.com/kortix-ai/suna/pull/5000
chore(dev-eks): deploy dev-73a5f282 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5003
feat(session): reasoning-effort selector in the chat composer by @markokraemer in https://github.com/kortix-ai/suna/pull/5002
fix(llm-catalog): only show reasoning-effort control for models with real reasoning_options by @markokraemer in https://github.com/kortix-ai/suna/pull/5004
fix(routing): routing-policy PUT 500 when defaultModel is set (missed partial-index ON CONFLICT predicate from #4978) by @markokraemer in https://github.com/kortix-ai/suna/pull/5006
fix(llm-gateway): linear-time trimTrailingSlash (CodeQL js/polynomial-redos, high) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5005
chore(dev-eks): deploy gateway dev-832d9fea [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5008
chore(dev-eks): deploy dev-832d9fea [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5009
apps/web: React Doctor cleanup — dead code purge, session hot-path perf, correctness + a11y fixes by @sutharjay1 in https://github.com/kortix-ai/suna/pull/4994
chore(dev-eks): deploy gateway dev-0823ba05 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5011
chore(dev-eks): deploy dev-0823ba05 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5012
fix(llm-gateway): full models.dev field fidelity + fix selector provider-grouping bug by @markokraemer in https://github.com/kortix-ai/suna/pull/5010
chore(dev-eks): deploy gateway dev-f4127030 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5015
chore(dev-eks): deploy dev-f4127030 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5016
test(ke2e): refresh two stale flow assertions (GW-4 modelGenerationConfig, PROJ-19 v2 blank manifest) by @markokraemer in https://github.com/kortix-ai/suna/pull/5017
chore(db): reconcile main to staging's shipped migration (main<>staging sync) by @markokraemer in https://github.com/kortix-ai/suna/pull/5020
chore(dev-eks): deploy dev-266366e9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5021
test(ke2e): cover github-app + managed-git + marketplace install-session routes → 83.8% by @agent-kortix in https://github.com/kortix-ai/suna/pull/5023
chore: remove 11 unused imports flagged by CodeQL js/unused-local-variable by @agent-kortix in https://github.com/kortix-ai/suna/pull/5025
chore(dev-eks): deploy dev-434498d0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5026
test(ke2e): cover the remaining API routes → ~100% coverage by @markokraemer in https://github.com/kortix-ai/suna/pull/5024
chore: remove 27 more unused imports (CodeQL js/unused-local-variable batch 2) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5028
chore(dev-eks): deploy dev-a3a87883 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5029
feat(git-backends): code.storage (Pierre) managed git provider, flag-gated by @markokraemer in https://github.com/kortix-ai/suna/pull/5027
chore(dev-eks): deploy dev-08787efc [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5030
docs(runbooks): add enterprise onboarding packet (customer-facing) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5031
spec(session-boot): 1-second threshold gap analysis + attack sequence by @agent-kortix in https://github.com/kortix-ai/suna/pull/5032
spec(teams): MS Teams connector Phase D scoping — backend done, CLI surface is the gap by @agent-kortix in https://github.com/kortix-ai/suna/pull/5033
feat(cli): kortix channels --platform teams (status/connect/manifest) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5034
fix(github-app): install-callback no longer 500s on a bare hit (no state) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5035
chore(dev-eks): deploy dev-bf38c80b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5037
test(ke2e): add AUD-5 audit surface edge cases (authz, pagination, SSRF, secret-once, cross-account isolation) by @agent-kortix in https://github.com/kortix-ai/suna/pull/5036
bench(session-boot): Phase 0 benchmark harness — measure create→ready P50/P95/P99 by @agent-kortix in https://github.com/kortix-ai/suna/pull/5038
chore(dev-eks): deploy dev-3f0aa945 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5039
spec(llm-gateway): routing/fallback/cost/latency/evals audit + proposal by @agent-kortix in https://github.com/kortix-ai/suna/pull/5040
seo(aeo): order /api/ai recency-first so freshest content leads by @agent-kortix in https://github.com/kortix-ai/suna/pull/4976
fix(sandbox): decouple Chromium bake from per-project warm-repo cache miss by @markokraemer in https://github.com/kortix-ai/suna/pull/5042
chore(dev-eks): deploy gateway dev-03ce16b7 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5043
chore(dev-eks): deploy dev-03ce16b7 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5045
content: publish self-hosted AI agent platforms listicle by @agent-kortix in https://github.com/kortix-ai/suna/pull/5041
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.10...v0.10.11
Read the full release on GitHub →
v0.10.10 July 17, 2026 Fixed
The workspace could get stuck shifted sideways — chat and panel cards clipped at the left edge, dead space on the right — after opening the browser or terminal in the session panel. Opening those views no longer nudges the layout, and the layout can no longer be scrolled out of place.
When the agent shares files or images in the chat, the carousel and file previews render inline again instead of collapsing to a bare one-line row. Clicking the row still opens the full viewer in the side panel.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.9...v0.10.10
Release on GitHub →
v0.10.9 July 17, 2026 Improved
The session panel's terminal now connects reliably and recovers cleanly instead of failing with "pty not found".
Browser sessions in the panel now land on a proper starting page instead of a blank view.
Tool cards in the session panel now show exactly what each tool did — no more misleading summaries.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.8...v0.10.9
Release on GitHub →
v0.10.8 July 17, 2026 This release is a focused batch of fixes.
Fixed
OpenAI-compatible models now get the correct max_tokens handling based on the model itself rather than the upstream host, so sessions on newer OpenAI models (e.g. gpt-5.6) complete their turns reliably instead of erroring.
Bring-your-own-key provider credentials are now always shared across your team — the private "Only me" option has been removed end to end, matching how the gateway actually reads keys and avoiding silent "no upstream configured" failures.
The in-terminal experience is more robust: the sandbox terminal now looks up or creates its pty on demand, so a reconnect no longer closes with "pty not found".
Approving or denying a request that has already been resolved no longer double-fires a "not found" toast.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.7...v0.10.8
Release on GitHub →
v0.10.7 July 17, 2026 This release is a top-to-bottom overhaul of the LLM gateway — the layer that carries every model request — plus a round of security hardening and sandbox tooling work.
LLM gateway
The gateway now speaks each provider's API correctly instead of approximately.
OpenAI routing and parameters. Genuine-OpenAI reasoning models that also use tools now route to the /v1/responses API, where they belong. We translate max_tokens to max_completion_tokens, correct the gpt-5.5 fallback temperature flag, and pin the playground wire shape so what you test is what you ship.
Anthropic and Bedrock. When extended thinking is on, we stop forwarding temperature/top_p (they conflict with thinking), and Bedrock request/response frames are handled correctly. Bedrock is now available as a standalone bring-your-own-key provider, with its region read from the project's own secret.
Transport correctness. Safer tool_choice handling, per-provider parameter quirks, message-role normalization, and correct streaming frames across providers.
A LiteLLM translation sidecar now sits behind the control plane as a stateless translation layer, so provider-shape differences are handled in one place.
Streaming reliability. Aborts propagate end to end, mid-stream errors surface instead of hanging, buffers are bounded, and requests carry deadlines.
Error taxonomy. Failures now come back as honest, actionable errors rather than opaque ones.
Billing correctness. Accurate usage capture, cache-write pricing, and atomic budget holds, with tests to keep them honest.
A published capability matrix documents exactly what each model and provider supports.
Security
A DNS-resolving egress guard replaces the old hostname-string regex, closing SSRF gaps.
Teams bot connector tokens can no longer leak to a caller-supplied serviceUrl.
Sessions reject client attempts to forge deletedAt/deletedBy metadata.
Preview shares enforce a view-mode method gate; the Slack file proxy is narrowed to file subdomains; GET /files/history gets the resource denier; the MFA-required setting requires an explicit boolean; and malformed AgentMail webhook bodies are rejected before acknowledgement.
Sandbox and CLI
New pre-push sandbox gate: the CLI lints your Dockerfile in validate and can build sandboxes locally with sandboxes build --local.
The Python floor is venv-isolated, custom /workspace contents are preserved, and PTY terminals compile on a supported Bun and recover across providers.
A stopped sandbox now auto-resumes on active OpenCode access, flipping the session to ready.
Web and fixes
Rebuilt session panel with Easy/Advanced modes, new file viewers, and modular tool renderers.
The project no longer reveals the resolved sandbox provider when the project's provider is set to Automatic.
Clearer CLI install guidance, corrected OpenCode proxy targeting, and "Kortix Computer is starting" renamed to "Kortix Session is starting."
Infrastructure: HTTPS-only load-balancer listeners, durable WAF ownership, restored prod gateway origin TLS, and recovered prod migrations and session uploads.
What's Changed
fix(llm-gateway): translate max_tokens -> max_completion_tokens for genuine OpenAI by @markokraemer in https://github.com/kortix-ai/suna/pull/4805
chore(dev-eks): deploy dev-e437e6c0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4807
chore(dev-eks): deploy gateway dev-e437e6c0 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4806
ci: enforce complete compliance monitor coverage by @markokraemer in https://github.com/kortix-ai/suna/pull/4786
fix(terminal): make PTY tabs recover across providers by @markokraemer in https://github.com/kortix-ai/suna/pull/4808
chore(dev-eks): deploy dev-cd096417 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4810
fix(llm): correct gpt-5.5 fallback temperature flag + pin playground wire shape by @markokraemer in https://github.com/kortix-ai/suna/pull/4809
feat(web): Easy/Advanced session panel, rebuilt file viewers, modular tool renderers by @sutharjay1 in https://github.com/kortix-ai/suna/pull/4120
chore(dev-eks): deploy gateway dev-ea1e1680 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4811
chore(dev-eks): deploy gateway dev-614010f8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4812
chore(dev-eks): deploy dev-614010f8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4813
fix(llm-gateway): transport correctness — tool_choice safety, param quirks, role normalization, bedrock frames by @markokraemer in https://github.com/kortix-ai/suna/pull/4814
chore(dev-eks): deploy gateway dev-758505c6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4818
ci: document reviewed IaC scanner exceptions by @markokraemer in https://github.com/kortix-ai/suna/pull/4816
fix(terminal): compile sandbox PTYs with supported Bun by @markokraemer in https://github.com/kortix-ai/suna/pull/4819
feat(llm-gateway): LiteLLM stateless translation sidecar behind the control plane by @markokraemer in https://github.com/kortix-ai/suna/pull/4817
chore(dev-eks): deploy gateway dev-2d706ac3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4822
fix(llm-gateway): honest, actionable error taxonomy end-to-end by @markokraemer in https://github.com/kortix-ai/suna/pull/4820
chore(dev-eks): deploy gateway dev-866ab491 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4823
chore(dev-eks): deploy dev-866ab491 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4824
fix(llm-gateway): streaming reliability — abort propagation, mid-stream error surfacing, bounded buffers, deadlines by @markokraemer in https://github.com/kortix-ai/suna/pull/4821
chore(dev-eks): deploy gateway dev-c957b0b6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4826
chore(dev-eks): deploy dev-c957b0b6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4827
test(llm-gateway): close coverage gaps + backlog hygiene (correlation id, key validation) by @markokraemer in https://github.com/kortix-ai/suna/pull/4815
chore(dev-eks): deploy gateway dev-7986e1a2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4828
chore(dev-eks): deploy dev-7986e1a2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4829
fix(llm-gateway): billing correctness — usage capture, cache-write pricing, atomic budget, tests by @markokraemer in https://github.com/kortix-ai/suna/pull/4825
chore(dev-eks): deploy gateway dev-b8e392fd [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4831
chore(deps): bump actions/cache from 4 to 6 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/4581
chore(deps): bump bridgecrewio/checkov-action from 12.3112.0 to 12.3114.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/4582
chore(deps): bump hashicorp/setup-terraform from 3.1.2 to 4.0.1 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/4583
chore(deps): bump actions/checkout from 4 to 7 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/4584
chore(deps): bump github/codeql-action/upload-sarif from 3.27.5 to 4.37.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/4585
security(teams): block bot connector token leak to caller-supplied serviceUrl (F-7) by @markokraemer in https://github.com/kortix-ai/suna/pull/4561
security(sessions): forbid client forge of metadata.deletedAt/deletedBy (SSR-7) by @markokraemer in https://github.com/kortix-ai/suna/pull/4562
security(ssrf): DNS-resolving egress guard, replacing hostname-string regex (F-1) by @markokraemer in https://github.com/kortix-ai/suna/pull/4563
security: pentest run #4 low-severity hardening (S3-2, NEW-1, MFA-1, F-5, SSR-PV1) by @markokraemer in https://github.com/kortix-ai/suna/pull/4564
fix(sdk): record hasUsableModel in the public surface snapshots by @sutharjay1 in https://github.com/kortix-ai/suna/pull/4473
fix(web): don't reveal the resolved sandbox provider when project provider is Automatic by @markokraemer in https://github.com/kortix-ai/suna/pull/4832
fix(web): 'Kortix Computer is starting' -> 'Kortix Session is starting' by @agent-kortix in https://github.com/kortix-ai/suna/pull/4750
fix(llm-gateway): route genuine-OpenAI reasoning+tools BYOK traffic to /v1/responses by @markokraemer in https://github.com/kortix-ai/suna/pull/4830
chore(release): VERSION → 0.10.7 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4803
chore(dev-eks): deploy gateway dev-cb28a245 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4834
refactor(sandbox): move the Dockerfile layer into @kortix/shared and split it by @markokraemer in https://github.com/kortix-ai/suna/pull/4799
fix(llm-gateway): stop forwarding temperature/top_p when Anthropic thinking is enabled by @markokraemer in https://github.com/kortix-ai/suna/pull/4833
Fix CLI sandbox OpenCode proxy targeting by @markokraemer in https://github.com/kortix-ai/suna/pull/4458
fix(sandbox): venv-isolate the Python floor, stop wiping custom /workspace, stop blaming users by @markokraemer in https://github.com/kortix-ai/suna/pull/4800
fix: manage regional compliance monitoring by @markokraemer in https://github.com/kortix-ai/suna/pull/4835
Fix CLI install guidance by @agent-kortix in https://github.com/kortix-ai/suna/pull/4707
docs(llm-gateway): gateway capability matrix — the flawless-gateway scorecard by @markokraemer in https://github.com/kortix-ai/suna/pull/4836
feat(cli): pre-push sandbox gate — Dockerfile lint in validate, sandboxes build --local by @markokraemer in https://github.com/kortix-ai/suna/pull/4801
chore(dev-eks): deploy dev-2456ea69 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4837
fix: enforce HTTPS-only ALB listeners by @markokraemer in https://github.com/kortix-ai/suna/pull/4838
fix: make ALB WAF ownership durable by @markokraemer in https://github.com/kortix-ai/suna/pull/4839
fix: prevent preview compliance drift by @markokraemer in https://github.com/kortix-ai/suna/pull/4841
fix: remove legacy ECS HTTP listeners by @markokraemer in https://github.com/kortix-ai/suna/pull/4842
feat(llm-gateway): Bedrock as a standalone BYOK provider by @markokraemer in https://github.com/kortix-ai/suna/pull/4843
chore(dev-eks): deploy gateway dev-eb3f28cb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4845
chore(dev-eks): deploy dev-eb3f28cb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4846
feat(cli): kortix gateway — full LLM-gateway control-plane by @markokraemer in https://github.com/kortix-ai/suna/pull/4840
chore(dev-eks): deploy dev-49a53b46 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4848
fix(compliance): codify all-region AWS controls by @markokraemer in https://github.com/kortix-ai/suna/pull/4849
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.6...v0.10.7
Read the full release on GitHub →
v0.10.6 July 16, 2026 Stamp KORTIX_VERSION in the EKS gateway Helm chart and in staging/production GitOps bumps so the standby gateway reports the exact promoted release version. This completes the gateway origin TLS recovery and restores six-endpoint version parity across ECS, EKS, and the public router.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.4...v0.10.6
Release on GitHub →
v0.10.4 July 16, 2026 Refresh the authenticated managed-model catalog when adopting warm-fork sandboxes, restarting OpenCode only when the live catalog changes. Also preserve the staging Cloudflare Worker gateway bindings so managed inference reaches the configured gateway backend.
Verified on dev and staging with fresh real sandboxes: kortix/glm-5.2 returned exactly PONG. Staging proof used a real Stripe test-mode paid subscription and cleaned up all resources.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.3...v0.10.4
Release on GitHub →
v0.10.3 July 16, 2026 Self-host hardening wave from the production-readiness audit, an experimental local-docker sandbox provider, and an auth refresh fix.
New
Experimental local-docker sandbox provider for self-host — run agent sandboxes as plain Docker containers on the same machine as your Kortix instance, with no cloud sandbox account. All sandbox-facing URLs resolve over the Docker network. Listed last in the provider picker and not recommended for production: it builds sandbox images locally and is noticeably slower than Daytona or Platinum.
Moving dev / staging / prod image tags — self-host instances can now track a channel-style tag (kortix self-host init --tag dev|staging|prod); CI re-tags the deployed build by digest, no rebuild.
Smoother SSO/SCIM setup — mint the SCIM token and paste it into your IdP on one page, live SSO verification with a resume story, complete Directory Sync and Google guide screenshots, and a visible "Use single sign-on (SSO)" entry on the sign-in page.
Improved
Self-host updater — resilient update runs with visible outcomes (kortix self-host status now shows the last update result), rotated container logs, and per-service memory limits so one service can't starve the box.
Self-host EC2 (Terraform) — the data volume now survives instance replacement (AZ pinned to the subnet, not the instance), reboot-surviving bootstrap, containerd relocated to the data volume, and CloudWatch status/disk/memory alarms.
Zero-downtime migration policy — every new database migration is linted by squawk plus deterministic mixed-version and enum-value guards in CI, with a rewritten migrations runbook.
Fixed
Silent auth refresh — sessions renew in the background; an expired token no longer leaves a dead, blank page.
Git PAT import — a saved managed-git personal access token is now recognized as a connected GitHub account, so repo import works without reconnecting.
SCIM Tenant URL is now correct on same-origin and self-hosted deployments.
Removed the legacy SANDBOX_IMAGE configuration surface from self-host.
Scoped the ECS deploy role's describe/list IAM actions to Kortix ARNs.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.2...v0.10.3
Release on GitHub →
v0.10.2 July 16, 2026 New
Unified sign-in — login and registration are now one email-first flow: enter your email and Kortix routes you to sign-in, sign-up, or your company's SSO automatically (with closed-signup and enforce-SSO support).
SSO out of the box on self-host — SAML is enabled by default, each instance generates its own SAML signing key at init, and SSO/SCIM setup is fully documented.
Identity setup wizard overhaul — reworked Entra wizard, SAML-before-SCIM ordering guidance, a provisioning health panel, an enforce-SSO toggle with clear domain consequences, and illustrated guides for all four SSO/SCIM flows.
Admin-controlled account creation on self-host — creating additional accounts is now restricted to the server admin by default (signups, teams, and SSO provisioning are unaffected), and the UI hides account creation when restricted.
Simpler self-host CLI — one env command, an uninstall command, and a friendlier init: a missing sandbox key warns instead of refusing to boot.
Enterprise license availability is now exposed on account state (API + SDK).
Fixed
Managed model provider now follows billing configuration by default , fixing managed models being unavailable on some deployments.
Self-host updater no longer fails on Docker-in-Docker mounts; the provider menu is always visible; configure records the admin email.
Non-admins no longer see a spurious Git-status error.
Behind the scenes
Production deploys are now hard-gated end to end: the release only publishes after the API and gateway deploys verify the live version.
Demo requests notify the team directly with lead-domain classification, and new signups sync to the contact list that powers onboarding emails.
Repo cleanup: self-host layout consolidated, stale roots removed, self-host docs moved under Guides.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.1...v0.10.2
Release on GitHub →
v0.10.1 July 15, 2026 Self-host hardening — everything live-verified
Agent sessions work everywhere : fixed the LLM base URL handed to cloud sandboxes and the in-API gateway path shape — BYOK model keys now carry real agent turns on local machines (Cloudflare tunnel) and VPS (domain) alike, proven end-to-end.
Guided setup, VPS-first : kortix self-host init walks domain/reachability → admin email → deployment shape → sandbox provider (Daytona/E2B/Platinum) → optional connectors → update schedule. Help text cut to a page. Auto-update on by default.
GitHub connection hardening : personal-account installs route correctly, torn configs are detected, the Git settings tab never renders blank, and 'New project' takes you to Git settings when GitHub isn't connected yet.
CLI against your self-host : kortix login opens your deployment's dashboard and the full login → projects → ship flow is verified.
kortix-selfhost/ : one-README distribution with an optional thin Terraform for AWS/EC2 — durable data volume, automatic EBS-snapshot backups (configurable cadence, keeps N), DNS via Route53 or your own provider.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.10.0...v0.10.1
Release on GitHub →
v0.10.0 July 15, 2026 Self-hosting, rebuilt
One generic Docker Compose self-host that runs the full Kortix platform on any VPS/server — kortix self-host init + start, VPS-first with a persistent domain (Caddy + automatic TLS), plus Cloudflare-tunnel and local modes for evaluation.
In-app GitHub setup — create an org-owned GitHub App from Settings → Git (manifest flow), paste an existing App, or use a scoped access token. No CLI gymnastics, no PATs required.
Self-host feature flags — single-account mode, marketing site off by default, enterprise license unlock, billing/connectors gracefully hidden when unconfigured.
Operations built in — nightly zero-downtime rolling updates on the curated stable channel (promoted via the new Promote Self-Host Stable workflow), kortix self-host secrets management, run-any-version + local-images modes, required-secret enforcement at init.
Kortix-managed models are cloud-only — self-host deployments use your own model keys (BYOK); the managed catalog is gated behind an explicit flag.
Reliability — SSE turn-stream no longer leaks connections on retry (fixes tab-wide request starvation); stale sessions self-heal instead of dead-ending on the auth screen.
New self-host e2e test suite (fast CLI-artifact tier + opt-in live tier) wired into CI.
What's Changed
chore(release): VERSION → 0.9.109 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4521
fix(web): guard non-string error message to prevent TypeError crash (t.message.includes is not a function) by @markokraemer in https://github.com/kortix-ai/suna/pull/4523
fix(web): drop expected billing-gate 402 from Sentry noise by @markokraemer in https://github.com/kortix-ai/suna/pull/4522
fix(api): stop Sentry-capturing the expected request-deadline 503 (BS 29af03…) by @markokraemer in https://github.com/kortix-ai/suna/pull/4524
chore(dev-eks): deploy dev-0022fc90 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4525
fix(web): show deterministic session switching state by @markokraemer in https://github.com/kortix-ai/suna/pull/4526
fix(api): retry transient socket-close on git proxy ref discovery (Better Stack df7a31d4) by @markokraemer in https://github.com/kortix-ai/suna/pull/4530
fix(web): survive storage-disabled in-app WebViews (null localStorage/sessionStorage) by @markokraemer in https://github.com/kortix-ai/suna/pull/4529
fix(web): suppress stale-deploy webpack-runtime 'call' TypeError noise by @markokraemer in https://github.com/kortix-ai/suna/pull/4528
fix(web): stop Sentry-capturing the expected client-side request timeout (BS b1db01e5…) by @markokraemer in https://github.com/kortix-ai/suna/pull/4531
fix(web): suppress old-WebKit lookbehind parse noise (Safari < 16.4) by @markokraemer in https://github.com/kortix-ai/suna/pull/4532
fix(desktop): restore clickable native window chrome by @markokraemer in https://github.com/kortix-ai/suna/pull/4534
feat(gateway): default to Codex GPT-5.6 with bounded GLM fallback by @markokraemer in https://github.com/kortix-ai/suna/pull/4535
chore(dev-eks): deploy gateway dev-f9887b23 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4536
chore(dev-eks): deploy dev-f9887b23 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4537
feat(channels): revive Microsoft Teams + Slack-parity feature set by @lillyboga in https://github.com/kortix-ai/suna/pull/4527
chore(dev-eks): deploy gateway dev-6456a34f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4539
fix(web): suppress old-browser minified-chunk SyntaxError parse noise by @markokraemer in https://github.com/kortix-ai/suna/pull/4538
fix(api): isolate effective:batch probe failures so a transient authorize blip degrades instead of 500-ing (BS c0e40278…) by @markokraemer in https://github.com/kortix-ai/suna/pull/4541
chore(dev-eks): deploy dev-60a70f65 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4543
fix(web): guard undefined/non-array before .filter/.map in customize agents/skills by @markokraemer in https://github.com/kortix-ai/suna/pull/4542
fix(web): suppress unactionable No-error-message chunk events by @markokraemer in https://github.com/kortix-ai/suna/pull/4540
fix(web): guard Paper Shaders null-context getSupportedExtensions crash by @markokraemer in https://github.com/kortix-ai/suna/pull/4544
fix(teams): harden tenant binding and login tokens by @markokraemer in https://github.com/kortix-ai/suna/pull/4548
chore(dev-eks): deploy dev-7a90fd7d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4549
fix(teams): loading card, /whoami, beautiful commands, widen ids by @lillyboga in https://github.com/kortix-ai/suna/pull/4547
chore(dev-eks): deploy dev-a0a26619 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4550
feat(web/teams): render Microsoft Teams as a channel table row like Slack by @lillyboga in https://github.com/kortix-ai/suna/pull/4551
fix(api/teams): Teams install never shows connected (connector-scoped secret read) by @lillyboga in https://github.com/kortix-ai/suna/pull/4552
chore(dev-eks): deploy dev-a8a49d4f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4553
feat(api/teams): true one-click org install via delegated auth-code publish by @lillyboga in https://github.com/kortix-ai/suna/pull/4554
chore(api/teams): log org-install outcome in the oauth callback by @lillyboga in https://github.com/kortix-ai/suna/pull/4556
fix(scim): group member adds stranded when the person joined via SSO JIT by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/4555
chore(dev-eks): deploy dev-b2f52c75 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4557
chore(dev-eks): deploy dev-0689722b [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4559
fix(scim): close the shadowed-invite holes (offboarding, group remove/replace/create) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/4558
chore(dev-eks): deploy dev-4a852b0a [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4560
feat(projects): add session branch environments by @markokraemer in https://github.com/kortix-ai/suna/pull/4566
chore(dev-eks): deploy dev-0a38bd7c [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4567
fix(web/channels): stop the channels table overflowing its card by @lillyboga in https://github.com/kortix-ai/suna/pull/4568
feat(self-host): add target-aware enterprise foundation by @markokraemer in https://github.com/kortix-ai/suna/pull/4569
chore(dev-eks): deploy dev-6e5f07eb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4571
content: publish secure agent tool access by @agent-kortix in https://github.com/kortix-ai/suna/pull/4293
fix(ci): isolate self-host schema bootstrap services by @markokraemer in https://github.com/kortix-ai/suna/pull/4570
chore(dev-eks): deploy dev-a0182392 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4573
refactor: remove hosted app deployment capability by @markokraemer in https://github.com/kortix-ai/suna/pull/4572
chore(dev-eks): deploy dev-0a4e9c10 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4575
content: publish Kortix vs Glean comparison by @markokraemer in https://github.com/kortix-ai/suna/pull/4574
refactor(db): drop retired hosted deployments schema by @markokraemer in https://github.com/kortix-ai/suna/pull/4576
chore(dev-eks): deploy dev-80b9e6fb [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4578
refactor(llm-gateway): move catalog and fallback policy to control plane by @markokraemer in https://github.com/kortix-ai/suna/pull/4577
chore(dev-eks): deploy gateway dev-b0768610 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4579
chore(dev-eks): deploy dev-b0768610 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4580
refactor: finish hosted app deployment stripout by @markokraemer in https://github.com/kortix-ai/suna/pull/4587
chore(dev-eks): deploy dev-efcb5ded [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4589
refactor: remove final hosted app guidance residues by @markokraemer in https://github.com/kortix-ai/suna/pull/4590
feat(infra): add enterprise VPC deployment plane by @markokraemer in https://github.com/kortix-ai/suna/pull/4586
chore(dev-eks): deploy dev-6eb580d6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4591
feat(llm-gateway): add project routing policy UI by @markokraemer in https://github.com/kortix-ai/suna/pull/4594
fix(cli): use projects route for repository linking by @markokraemer in https://github.com/kortix-ai/suna/pull/4593
chore(dev-eks): deploy dev-db83252d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4595
feat(sandboxes): add unified E2B cloud provider by @markokraemer in https://github.com/kortix-ai/suna/pull/4592
chore(dev-eks): deploy gateway dev-0d8c2cbe [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4597
feat(cli): manage enterprise AWS VPC installs by @markokraemer in https://github.com/kortix-ai/suna/pull/4596
fix(db): unblock E2B provider migration on historical managed sandboxes by @markokraemer in https://github.com/kortix-ai/suna/pull/4599
feat(projects): treat repository branches as isolated projects by @markokraemer in https://github.com/kortix-ai/suna/pull/4598
chore(dev-eks): deploy dev-034b5229 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4600
feat(projects): enable branch-isolated repository projects by @markokraemer in https://github.com/kortix-ai/suna/pull/4602
chore(dev-eks): deploy dev-d784efd5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4603
chore(dev): add E2B key to encrypted env by @markokraemer in https://github.com/kortix-ai/suna/pull/4606
fix(web): restore flat projects list by @markokraemer in https://github.com/kortix-ai/suna/pull/4608
chore(dev-eks): deploy gateway dev-42803b64 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4611
chore(dev-eks): deploy dev-42803b64 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4612
fix(platinum): classify 409 sandbox_not_running as controlled 503, not Sentry by @agent-kortix in https://github.com/kortix-ai/suna/pull/4601
fix(sessions): guard Daytona 429 on transcript + public-share reads (post-#3567) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4605
fix(sdk): retry transient 502/503/504 on idempotent reads (BS 994987…) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4609
fix(web): drop TronLink extension proxy-trap noise from Sentry by @agent-kortix in https://github.com/kortix-ai/suna/pull/4607
fix(web): filter Android WebView native-bridge postMessage noise (Java object is gone) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4610
feat(web): add machine-readable SEO surface by @agent-kortix in https://github.com/kortix-ai/suna/pull/4604
feat(llm-gateway): simplify project routing UX by @markokraemer in https://github.com/kortix-ai/suna/pull/4613
chore(dev-eks): deploy dev-fc1153f2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4614
fix(snapshots): synchronize template readiness across providers by @markokraemer in https://github.com/kortix-ai/suna/pull/4615
fix(llm-gateway): avoid stale routing policy reads by @markokraemer in https://github.com/kortix-ai/suna/pull/4616
chore(dev-eks): deploy dev-16d559de [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4617
fix(gateway): serialize routing and default model writes by @markokraemer in https://github.com/kortix-ai/suna/pull/4618
fix(snapshots): build missing Daytona templates by @markokraemer in https://github.com/kortix-ai/suna/pull/4621
feat(self-host): add signed enterprise VPC release plane by @markokraemer in https://github.com/kortix-ai/suna/pull/4619
chore(dev-eks): deploy gateway dev-4ce4a274 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4622
chore(dev-eks): deploy dev-4ce4a274 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4624
fix(enterprise): harden updater CodeQL paths by @markokraemer in https://github.com/kortix-ai/suna/pull/4623
chore(dev-eks): deploy gateway dev-8a3a09be [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4625
chore(dev-eks): deploy dev-8a3a09be [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4627
feat: bootstrap enterprise release publisher by @markokraemer in https://github.com/kortix-ai/suna/pull/4629
fix(snapshots): sync providers after template edits by @markokraemer in https://github.com/kortix-ai/suna/pull/4626
chore(dev-eks): deploy dev-e4ed32da [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4630
fix(enterprise): allow publisher repository decrypt by @markokraemer in https://github.com/kortix-ai/suna/pull/4631
fix(enterprise): bind stable to prod migration provenance by @markokraemer in https://github.com/kortix-ai/suna/pull/4632
chore(dev-eks): deploy dev-703b8a42 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4633
fix(enterprise): allow Cosign key metadata lookup by @markokraemer in https://github.com/kortix-ai/suna/pull/4634
fix(snapshots): surface sandbox provider status by @agent-kortix in https://github.com/kortix-ai/suna/pull/4628
chore(dev-eks): deploy dev-d62a3002 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4635
fix(cli): verify migrated Terraform state content by @markokraemer in https://github.com/kortix-ai/suna/pull/4636
fix(cli): recover refreshed remote Terraform state by @markokraemer in https://github.com/kortix-ai/suna/pull/4637
chore(dev-eks): deploy dev-0a2574c8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4638
fix(enterprise): normalize Route 53 zone guard by @markokraemer in https://github.com/kortix-ai/suna/pull/4639
chore(dev-eks): deploy dev-cd886ce6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4640
fix(enterprise): allow encrypted CloudTrail alerts by @markokraemer in https://github.com/kortix-ai/suna/pull/4642
chore(dev-eks): deploy dev-4105b5a9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4644
docs: refresh connector and runtime references by @agent-kortix in https://github.com/kortix-ai/suna/pull/4641
fix(enterprise): repair AWS VPC operator and host bootstrap by @markokraemer in https://github.com/kortix-ai/suna/pull/4643
chore(dev-eks): deploy dev-2b3a6a03 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4646
release(enterprise): review 0.9.108-e2 contract by @markokraemer in https://github.com/kortix-ai/suna/pull/4645
chore(dev-eks): deploy gateway dev-f23f8696 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4647
chore(dev-eks): deploy dev-f23f8696 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4649
docs: cover self-host AWS VPC and SDK retries by @agent-kortix in https://github.com/kortix-ai/suna/pull/4648
chore(dev-eks): deploy dev-6f891ef9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4650
fix(enterprise): make archive guard awk-portable by @markokraemer in https://github.com/kortix-ai/suna/pull/4651
fix(enterprise): preserve public Supabase bundle modes by @markokraemer in https://github.com/kortix-ai/suna/pull/4652
fix(enterprise): pin Supabase runtime paths by @markokraemer in https://github.com/kortix-ai/suna/pull/4653
fix(enterprise): authenticate Supabase activation health by @markokraemer in https://github.com/kortix-ai/suna/pull/4654
fix(enterprise): wait for long SSM installs by @markokraemer in https://github.com/kortix-ai/suna/pull/4655
test(enterprise): isolate SSM waiter regression by @markokraemer in https://github.com/kortix-ai/suna/pull/4656
fix(enterprise): break Supabase systemd deadlock by @markokraemer in https://github.com/kortix-ai/suna/pull/4657
fix(enterprise): allow updater to reach private EKS by @markokraemer in https://github.com/kortix-ai/suna/pull/4658
chore(dev-eks): deploy dev-e4f00dfe [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4659
fix(enterprise): allow updater to read cluster state by @markokraemer in https://github.com/kortix-ai/suna/pull/4660
chore(dev-eks): deploy dev-f2798a8f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4661
Rebuild auth consent surfaces in the /auth dialect by @sutharjay1 in https://github.com/kortix-ai/suna/pull/4662
fix(enterprise): apply external secrets after CRDs by @markokraemer in https://github.com/kortix-ai/suna/pull/4664
chore(dev-eks): deploy dev-481dc551 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4665
Revamp the accounts section UI by @sutharjay1 in https://github.com/kortix-ai/suna/pull/4663
fix(enterprise): poll external secret readiness by @markokraemer in https://github.com/kortix-ai/suna/pull/4666
fix(web): hide unavailable sandbox providers by @agent-kortix in https://github.com/kortix-ai/suna/pull/4667
fix(sessions): sessions always get their real title by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/4668
chore(dev-eks): deploy dev-89e592cf [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4671
fix(web): suppress storage-blocked SecurityError localStorage noise (BS 09b9cf65…/ac75f0d8…) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4674
docs: fix SDK namespace for repo imports — kortix.github.linkRepository by @agent-kortix in https://github.com/kortix-ai/suna/pull/4673
ECS Fargate revival — parallel EKS+ECS with unified Cloudflare router by @markokraemer in https://github.com/kortix-ai/suna/pull/4676
chore(dev-eks): deploy dev-0737c1d6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4678
fix(cli): report secret availability consistently by @agent-kortix in https://github.com/kortix-ai/suna/pull/4677
chore(dev-eks): deploy dev-b058dd57 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4680
feat(api/teams): ship the real Kortix logo in the Teams app package by @lillyboga in https://github.com/kortix-ai/suna/pull/4672
chore(dev-eks): deploy dev-df19f59d [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4681
content: refresh Introducing Kortix wording by @agent-kortix in https://github.com/kortix-ai/suna/pull/4679
Staging + Prod ECS Fargate (parallel runtime; prod flip gated) by @markokraemer in https://github.com/kortix-ai/suna/pull/4682
Flip prod api+gateway to ECS Fargate by @markokraemer in https://github.com/kortix-ai/suna/pull/4683
feat(marketplace): public project-clone marketplace + unify in-project surface by @markokraemer in https://github.com/kortix-ai/suna/pull/4493
chore(dev-eks): deploy dev-eea60a86 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4687
Enterprise VPC on ECS Fargate — full simplification (rip out EKS/Helm/StepFunctions/DynamoDB/WAL) by @markokraemer in https://github.com/kortix-ai/suna/pull/4689
chore(dev-eks): deploy dev-dff20292 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4690
docs: trigger session-strategy scope (fresh|reuse|pinned) by @markokraemer in https://github.com/kortix-ai/suna/pull/4686
feat(triggers): session strategy — fresh|reuse + pinned session picker by @markokraemer in https://github.com/kortix-ai/suna/pull/4688
chore(dev-eks): deploy dev-2eb03585 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4694
fix: make agent tunnel npx command workspace-safe by @markokraemer in https://github.com/kortix-ai/suna/pull/4693
chore(dev-eks): deploy dev-32957ade [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4695
Enterprise appliance: single-EC2, 100% Docker, self-healing + rolling updates by @markokraemer in https://github.com/kortix-ai/suna/pull/4696
chore(dev-eks): deploy gateway dev-3019dfc3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4697
chore(dev-eks): deploy dev-3019dfc3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4699
fix(enterprise-release): pass image digests to build-bundles in promote workflow by @markokraemer in https://github.com/kortix-ai/suna/pull/4698
chore(dev-eks): deploy dev-f6f61a49 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4703
fix(appliance): resolve null-passthrough breaking every deploy (instance_type + bedrock) by @markokraemer in https://github.com/kortix-ai/suna/pull/4701
self-host: rename aws-vpc→aws-ec2, two-target UX, migration-safety gate by @markokraemer in https://github.com/kortix-ai/suna/pull/4702
chore(enterprise): 0.9.108-e14 contract by @markokraemer in https://github.com/kortix-ai/suna/pull/4705
fix(appliance): gateway healthcheck hits /health not / (404) by @markokraemer in https://github.com/kortix-ai/suna/pull/4706
chore(enterprise): 0.9.108-e15 contract by @markokraemer in https://github.com/kortix-ai/suna/pull/4708
fix(api): filter bare Bun fetch TimeoutError from Sentry (BS c672fb5e) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4709
fix(web): filter EVM-wallet inpage.js addListener/emit noise (BS 17a0ce67/3a6b00dc) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4710
fix(web): filter iOS WebKit stack-overflow RangeError noise (BS 87ccbef9) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4711
docs: refresh Teams channels and CLI/SDK references by @agent-kortix in https://github.com/kortix-ai/suna/pull/4712
content: add inline money-page links to comparison posts by @agent-kortix in https://github.com/kortix-ai/suna/pull/4714
Rebuild chat minimap on HoverCard: quieter UX, less render work by @sutharjay1 in https://github.com/kortix-ai/suna/pull/4713
feat: use-case templates + conversational install via marketplace install-session by @lillyboga in https://github.com/kortix-ai/suna/pull/4719
fix(api): stop masking git mirror clone timeouts as 'Cloning into' progress noise (BS 8d0cffbb) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4717
fix(web): drop @embedpdf tiling React #185 render-loop noise (BS 366115d4) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4718
fix(web): filter EIP-1193 wallet-extension plain-object rejection noise (BS 0f78b2f8) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4720
chore(dev-eks): deploy gateway dev-d321180f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4722
chore(dev-eks): deploy dev-d321180f [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4723
fix(web): gate Shiki wasm highlighter on WebAssembly availability (BS 1604d50a) by @agent-kortix in https://github.com/kortix-ai/suna/pull/4721
fix(iam-web): auto-provision groups defaults ON for new SSO connections by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/4724
Generic Docker self-host + in-app git management by @markokraemer in https://github.com/kortix-ai/suna/pull/4725
fix(appliance): work out of the box without SMTP + gate SSO probe by @markokraemer in https://github.com/kortix-ai/suna/pull/4715
chore(dev-eks): deploy gateway dev-f942c625 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4728
chore(dev-eks): deploy dev-f942c625 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4729
feat(mfa): complete the account-wide Require MFA loop (member enroll + step-up) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/4726
chore(dev-eks): deploy dev-98079558 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4731
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.9.108...v0.10.0
Read the full release on GitHub →
v0.9.108 July 12, 2026 Fixed
Opening an idle-stopped session now wakes it on its own instead of dead-ending on "OpenCode failed to load / sandbox not ready." When a real user hits a stopped-but-resumable box, the runtime resumes in place, and the session's status flips to running without a manual refresh.
Invitation listing and acceptance no longer error — a database column the code relied on was missing and is now added.
Sessions keep their sandbox identity through recovery and reprovision cleanly after a daemon boot error.
Quieter, more reliable UI: the transient "runtime still starting" state is no longer reported as an error, and a couple of edge-case crashes (malformed links, a non-string command template) are guarded.
New
Executor connection profiles — group a connector's credentials under a named profile.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.9.107...v0.9.108
Release on GitHub →
v0.9.107 July 12, 2026 Fixed
Opening a session whose sandbox had gone idle no longer dead-ends on "OpenCode failed to load / sandbox not ready." The runtime now wakes on its own when you open the session — the same recovery a manual refresh used to do — so idle sessions just come back.
A session's status now flips to "running" in the sidebar as soon as it connects, instead of staying "stopped" until you refresh the page.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.9.106...v0.9.107
Release on GitHub →
v0.9.106 July 12, 2026 Fixed
Opening or switching sessions no longer flashes a blank screen. A brief "runtime still starting" moment during a switch is now treated as a loading state, not an error, so the session just renders in place.
A session whose sandbox had gone idle no longer dead-ends on "open a new session." It now resumes on its own, with an in-place Restart if it can't wake automatically.
Cleaned up the marketing site: removed dead Compare links from the footer, dropped Blog from the nav, and fixed the CLI footer link.
Improved
The deploy maintenance banner is clearer and on-brand, and is treated as a critical rollout signal.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.9.105...v0.9.106
Release on GitHub →
v0.9.105 July 12, 2026 Fixed
Switching between sessions no longer flashes a "Something went wrong" screen. A brief "runtime still starting" state during a session switch now shows a short loader and recovers on its own instead of surfacing as an error.
The review inbox (sidebar and Review Center) keeps loading even when one of its sources is temporarily unavailable — it now degrades gracefully instead of failing the whole panel.
Session file uploads are recoverable again after an interruption.
PDF previews now open at 100% zoom instead of 50%.
Sign-in polish on mobile: the mark is pinned top-left, gutters are wider, and the tagline is refreshed.
New and improved
Signing in now defaults to a one-time email code, with password kept as a secondary option.
Projects still on the older manifest now show a clear v1 → v2 upgrade prompt in the sidebar.
Maintenance mode: admins can bypass a full lockdown through a signed session, and deploys now raise a heads-up banner while a rollout is in progress and clear it automatically once the API is healthy.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.9.104...v0.9.105
Release on GitHub →
v0.9.104 July 12, 2026
Session uploads no longer fail at the generic 15-second proxy cutoff.\n- Failed sends preserve and restore the full prompt and attachments.\n- Legacy personal connector credentials migrate safely into member-owned profiles.\n- Restores missing runtime-context and executor-profile schema.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.9.103...v0.9.104
Release on GitHub →
v0.9.103 July 12, 2026
Promote the fully tested staging candidate to production.
Includes sandbox identity race protection and restored health deployment identity.
Includes staged authentication redesign and chat input model-state fixes.
Includes reliable Slack project default agent/model handling.
Staging artifact build and deploy passed; public staging ke2e passed 9/9.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.9.102...v0.9.103
Read the full release on GitHub →
v0.9.102 July 11, 2026 Adds slack bind-thread (bind a session to a Slack thread for approval-reply loops; #4385) plus all other pending main changes promoted through staging (v0.9.102-staging, commit 6275ff93). Enables the WRING funding-request APPROVE-in-thread flow.
What's Changed
Full Changelog : https://github.com/kortix-ai/suna/compare/v0.9.101...v0.9.102
Release on GitHub →