PricingDocs
Get started

Run your whole company from one repo you own.

Start with one job and grow from there.

Get started

Product

  • Agent Computer
  • Company as Code
  • Connectors
  • Automations
  • Channels
  • Agents & Skills
  • Security
  • Self-hosted
  • Enterprise
  • Pricing
  • Download

Solutions

  • Sales
  • Marketing
  • Engineering
  • Product
  • Finance
  • People
  • IT
  • Data Science

Developers

  • Documentation
  • AI Operating System
  • CLI
  • SDK
  • Quickstart
  • For developers
  • Marketplace
  • GitHub

Company

  • About
  • Careers
  • Blog
  • Changelog
  • Release history
  • Use Cases
  • Brand

Connect

  • X
  • LinkedIn
  • Discord
  • Status
  • Support
  • Terms
  • Privacy
©2026 Kortix

Release history

September 30, 2026

Computers work like every connector, and the audit trail records the credential that made each call.

v0.13.44

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

  • feat(computers): computers work like every connector — generic row, Gmail-style Share, one registration per machine by @markokraemer in https://github.com/kortix-ai/suna/pull/8336
  • chore(release): VERSION → 0.13.44 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8337
  • chore(release): staging VERSION → 0.13.44 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8338
  • refactor(audit): record the authenticated credential, not a self-reported client source by @markokraemer in https://github.com/kortix-ai/suna/pull/8339
  • refactor(web): dedupe the sandbox browser chrome into one shared module (KRTX-400) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8340
  • fix(audit): bound the Via (credential_kind) filter to rows that can carry it by @markokraemer in https://github.com/kortix-ai/suna/pull/8341
  • refactor(web): unify proximity hover hit testing (KRTX-717) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8342
  • refactor(api): extract wake delivery orchestration (KRTX-264) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8343
  • fix(connectors): Slack and Teams connector reads stay inside the calling project by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8345
  • fix(tests): clear the starter scaffold before config-release fixtures assert legacy content by @markokraemer in https://github.com/kortix-ai/suna/pull/8310
  • fix(api): reject malformed member userId with 400 instead of 500 by @markokraemer in https://github.com/kortix-ai/suna/pull/8347
  • fix(tests): stale OAU-7 and MCP-5 flows on deployed targets by @markokraemer in https://github.com/kortix-ai/suna/pull/8348
  • fix(api): stop locks session before sandbox row, retries deadlock victims (40P01) by @markokraemer in https://github.com/kortix-ai/suna/pull/8349
  • fix(api): classify transient manifest git failures safely (KRTX-855) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8346
  • Promote main 2bc410de17 to staging (v0.13.44) by @markokraemer in https://github.com/kortix-ai/suna/pull/8350
  • fix(platinum): turn auto-resume off before stopping a box, not after by @markokraemer in https://github.com/kortix-ai/suna/pull/8352
  • fix(tests): type the Platinum stop-confirm fixture as a record (TS2339) by @markokraemer in https://github.com/kortix-ai/suna/pull/8356
  • Promote main f90b3d8450 to staging (v0.13.44) by @markokraemer in https://github.com/kortix-ai/suna/pull/8355
  • v0.13.44 — Computers work like every connector, and the audit trail records the credential that made each call. by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8353

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.43...v0.13.44

Release on GitHub
September 30, 2026

Every kortix CLI command over MCP, connectors as MCP tools, and US-region sessions.

v0.13.43

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

  • feat(platinum): us_region project flag — run a project's sessions in Platinum's US East region by @kubet in https://github.com/kortix-ai/suna/pull/8291
  • refactor(web): reuse SDK billing transaction types (KRTX-721) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8298
  • fix(channels): Teams and Slack permissions — roles, identity links, join policies, own-bot scope by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8302
  • feat(gateway): fail GLM 5.3 Flash over to OpenCode Zen when the OpenRouter pool is busy by @markokraemer in https://github.com/kortix-ai/suna/pull/8303
  • fix(compliance): clear Drata test 8003 and 28 IaC findings; delete the dead ECS preview root by @markokraemer in https://github.com/kortix-ai/suna/pull/8304
  • refactor(web): delete dead attachment-tiles-logic module (KRTX-382) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8301
  • refactor(web): delete unused tab-strip actions and dead stacks in tab-store (KRTX-705) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8308
  • docs(compliance): record Drata test 225 risk acceptance by @markokraemer in https://github.com/kortix-ai/suna/pull/8309
  • chore(release): staging VERSION → 0.13.43 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8311
  • chore(release): VERSION → 0.13.43 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8312
  • docs(release): promote current main is the default; staging PR is the gate by @markokraemer in https://github.com/kortix-ai/suna/pull/8279
  • feat(gateway): serve GLM 5.3 Flash from OpenCode Zen first, OpenRouter pool as fallback by @markokraemer in https://github.com/kortix-ai/suna/pull/8313
  • feat(mcp): connectors as first-class MCP tools; OAuth refresh grace, sweeper, code-reuse revoke; fresh reads after push by @markokraemer in https://github.com/kortix-ai/suna/pull/8314
  • feat(legal): GDPR-complete privacy policy and /legal/subprocessors page by @markokraemer in https://github.com/kortix-ai/suna/pull/8315
  • ci(compliance): make the Drata IaC gate blocking again by @markokraemer in https://github.com/kortix-ai/suna/pull/8316
  • feat(mcp): complete kortix CLI parity via a sandboxed kortix tool; project skills; Slack channel defaults by @markokraemer in https://github.com/kortix-ai/suna/pull/8317
  • fix(auth): revoke a user's credentials when the auth user is deleted by @markokraemer in https://github.com/kortix-ai/suna/pull/8318
  • Promote main 88c1791dbf to staging (v0.13.43) by @markokraemer in https://github.com/kortix-ai/suna/pull/8319
  • fix(tests): OAuth refresh rotation leaves the old access token live (#8314) by @markokraemer in https://github.com/kortix-ai/suna/pull/8320
  • fix(runtime): resume the pinned OpenCode root when the box lost its pin file by @markokraemer in https://github.com/kortix-ai/suna/pull/8322
  • docs(learnings): OpenCode root resolves from the control plane's pin by @markokraemer in https://github.com/kortix-ai/suna/pull/8324
  • refactor(web): extract file viewer header and JSON tree (KRTX-399) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8321
  • fix(api): distinguish observed admission refusal from replacement (KRTX-822) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8323
  • fix(pi): end silent model stalls with a visible timeout (KRTX-835) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8328
  • fix(runtime): never sever an accepted turn on a restart; relay every turn end by identity by @markokraemer in https://github.com/kortix-ai/suna/pull/8329
  • docs(learnings): a runtime restart must never kill an accepted turn by @markokraemer in https://github.com/kortix-ai/suna/pull/8330
  • fix(web): exempt the English-only legal texts from the hardcoded UI audit by @markokraemer in https://github.com/kortix-ai/suna/pull/8331
  • fix(session): a live session never goes to sleep on an ingress blip by @markokraemer in https://github.com/kortix-ai/suna/pull/8332
  • Promote main 20732efa66 to staging (v0.13.43) by @markokraemer in https://github.com/kortix-ai/suna/pull/8333
  • v0.13.43 — Every kortix CLI command over MCP, connectors as MCP tools, and US-region sessions. by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8334

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.42...v0.13.43

September 29, 2026

Connect your own computer from the desktop app, Teams at Slack parity, and saved history that is always on.

v0.13.42

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

September 29, 2026

Kortix as an MCP server

v0.13.41

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

September 28, 2026

Stuck sandboxes recover

v0.13.40

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

  • fix(sandbox): extend a parked prompt's box deadline through the retry ladder by @markokraemer in https://github.com/kortix-ai/suna/pull/7860
  • fix(web): drop the Firefox cross-compartment onerror-chain failure by @markokraemer in https://github.com/kortix-ai/suna/pull/7862
  • chore(release): staging VERSION → 0.13.40 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7863
  • chore(release): VERSION → 0.13.40 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7864
  • fix(reaper): auto-repair a stale runtime at session-open, not just in the background by @markokraemer in https://github.com/kortix-ai/suna/pull/7859
  • fix(platinum): advance the dedup attempt on a persistent name_taken 409 by @markokraemer in https://github.com/kortix-ai/suna/pull/7866
  • Promote main 651ac3e7b4 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/7868
  • Release v0.13.40 — Stuck sandboxes recover by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7871

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.39...v0.13.40

September 27, 2026

Sessions ride through outages

v0.13.39

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

September 27, 2026

Reliable image builds, and session oversight that turns off everywhere

v0.13.38

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

  • chore(release): staging VERSION → 0.13.37 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7822
  • chore(release): VERSION → 0.13.37 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7823
  • perf(web): load the Settings panel body and the icon pickers on demand by @markokraemer in https://github.com/kortix-ai/suna/pull/7820
  • chore(release): VERSION → 0.13.38 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7825
  • chore(release): staging VERSION → 0.13.38 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7826
  • fix(tests): remove three false-fail traps from the release gate by @markokraemer in https://github.com/kortix-ai/suna/pull/7827
  • fix(iam): close the session-oversight fail-open cache window across replicas by @markokraemer in https://github.com/kortix-ai/suna/pull/7829
  • feat(gateway): split each request's latency into admission and upstream wait by @markokraemer in https://github.com/kortix-ai/suna/pull/7830
  • fix(snapshots): reap dead App-deployment images in Daytona quota GC by @markokraemer in https://github.com/kortix-ai/suna/pull/7828
  • Promote main ed3e30b4c8 to staging (v0.13.38) by @markokraemer in https://github.com/kortix-ai/suna/pull/7831
  • Release v0.13.38 — Reliable image builds, and session oversight that turns off everywhere by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7832

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.37...v0.13.38

September 27, 2026

Deploys without connection errors, and a faster app

v0.13.37

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

  • perf(api): recent branch listing for views; stale-while-revalidate Composio auth configs by @markokraemer in https://github.com/kortix-ai/suna/pull/7811
  • chore(release): VERSION → 0.13.36 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7814
  • chore(release): staging VERSION → 0.13.36 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7815
  • fix(db): count the base-move LISTEN connection in the rollout DB budget by @markokraemer in https://github.com/kortix-ai/suna/pull/7817
  • perf(web): draw avatar glyphs from generated paths, not the 202-icon registry by @markokraemer in https://github.com/kortix-ai/suna/pull/7812
  • perf(api): resolve the connector catalog's connectors concurrently by @markokraemer in https://github.com/kortix-ai/suna/pull/7818
  • Promote main 44b17cbc2d to staging (v0.13.37) by @markokraemer in https://github.com/kortix-ai/suna/pull/7821
  • Release v0.13.37 — Deploys without connection errors, and a faster app by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7824

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.36...v0.13.37

September 27, 2026

A reliable admin accounts list and faster connector resolution

v0.13.36

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

  • perf(api): batch the session scope connector resolution; stale-while-revalidate Composio discovery by @markokraemer in https://github.com/kortix-ai/suna/pull/7801
  • fix(admin): index the accounts-list join, typed 503 on its statement_timeout by @markokraemer in https://github.com/kortix-ai/suna/pull/7800
  • Promote main acf813fc7c to staging (v0.13.36) by @markokraemer in https://github.com/kortix-ai/suna/pull/7813
  • Release v0.13.36 — A reliable admin accounts list and faster connector resolution by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7816

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.35...v0.13.36

September 27, 2026

Audit events are never lost, and stuck session starts stop retrying

v0.13.35

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

  • chore(release): VERSION → 0.13.35 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7798
  • chore(release): staging VERSION → 0.13.35 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7799
  • perf: latency sweep — git read cache, edge CORS preflights, N+1s, payloads, waterfalls by @markokraemer in https://github.com/kortix-ai/suna/pull/7796
  • fix(audit): requeue contended writes instead of dropping them by @markokraemer in https://github.com/kortix-ai/suna/pull/7805
  • fix(api): create_session drain finalizes a throw instead of retrying forever by @markokraemer in https://github.com/kortix-ai/suna/pull/7803
  • Promote main eed7a41d3c to staging (v0.13.35) by @markokraemer in https://github.com/kortix-ai/suna/pull/7809
  • Release v0.13.35 — Audit events are never lost, and stuck session starts stop retrying by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7810

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.34...v0.13.35

Release on GitHub
Read the full release on GitHub
Read the full release on GitHub
Release on GitHub
Read the full release on GitHub
Release on GitHub
Release on GitHub
Release on GitHub
Release on GitHub
Previous
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
Next