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
  • Use Cases
  • Brand

Connect

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

Changelog

September 15, 2026

Signed-in previews open again

v0.13.17

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

  • chore(release): staging VERSION → 0.13.16 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7248
  • chore(release): staging VERSION → 0.13.17 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7252
  • test(release): quarantine TUN-6 — Bun WebSocket handshake has no User-Agent, WAF 403s it on staging/prod by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7255
  • hotfix(preview): a legacy HS256 session opens preview origins again by @markokraemer in https://github.com/kortix-ai/suna/pull/7259
  • Release v0.13.17 — Signed-in previews open again by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7261

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.16...v0.13.17

Release on GitHub
September 15, 2026

Project model access controls, GPT-6 Astra, and a desktop app you can always leave

v0.13.16

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

  • feat(web): route connector connection flows by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7074
  • feat: S3 project-snapshot config provider v2 — blob-less boot object + hydrated blob pack, Git fallback (local-verified; AWS/staging deferred) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7221
  • fix(infra): project-snapshot grant count known at plan time (unblocks Deploy Dev) by @markokraemer in https://github.com/kortix-ai/suna/pull/7232
  • Revert "feat(web): route connector connection flows" (#7074) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7235
  • fix(infra): project-snapshot task role gets s3:ListBucket (dev producer 403) by @markokraemer in https://github.com/kortix-ai/suna/pull/7237
  • fix(web): one noun — project — and a way to create one in a specific account by @markokraemer in https://github.com/kortix-ai/suna/pull/7229
  • fix(web): SSO and SCIM setup wizards advance past the provider picker again by @markokraemer in https://github.com/kortix-ai/suna/pull/7239
  • fix(tunnel): verify binary file delivery and permission decisions by @markokraemer in https://github.com/kortix-ai/suna/pull/7241
  • Add project provider and model access controls by @markokraemer in https://github.com/kortix-ai/suna/pull/7233
  • feat(models): add GPT-6 Astra to Kortix by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7245
  • fix(desktop): remove desktop soft locks — Close, Go Back/Home, crash recovery by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7246
  • Release main to staging — September 15 candidate by @markokraemer in https://github.com/kortix-ai/suna/pull/7244
  • Release v0.13.16 — Project model access controls, GPT-6 Astra, and a desktop app you can always leave by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7250

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.15...v0.13.16

September 15, 2026

Account creation you can find, Review Center for everyone, and a steadier session view

v0.13.15

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

  • feat(apps): a public App can recognise you without shutting anyone else out by @markokraemer in https://github.com/kortix-ai/suna/pull/7197
  • chore(release): staging VERSION → 0.13.15 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7211
  • chore(release): VERSION → 0.13.15 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7212
  • fix(web): stack modals opened over open modals; Switch hover contrast by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7213
  • fix(web): anchor every session hover card at the same edge by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7214
  • ci(deploy-staging): main must assert the host-only access cookie, like staging already does by @markokraemer in https://github.com/kortix-ai/suna/pull/7209
  • chore: back-merge staging into main — 12 commits that are in production but not on the trunk by @markokraemer in https://github.com/kortix-ai/suna/pull/7217
  • feat: graduate Review Center out of the feature-flag system by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7216
  • fix(connectors): show true category sizes in the Connectors catalogue by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7215
  • fix(tests): a forced exit must raise an annotation, not a line nobody reads by @markokraemer in https://github.com/kortix-ai/suna/pull/7218
  • fix(audit): say WHY a dropped audit batch failed, and stop logging its payload by @markokraemer in https://github.com/kortix-ai/suna/pull/7222
  • fix(api): a 4xx denial is a warning, not an error by @markokraemer in https://github.com/kortix-ai/suna/pull/7223
  • fix(session): sending a message moves the transcript once, not twice by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7225
  • fix(web): make account creation reachable, and land in the account you created by @markokraemer in https://github.com/kortix-ai/suna/pull/7224
  • release: main → staging (v0.13.15 candidate) by @markokraemer in https://github.com/kortix-ai/suna/pull/7226
  • Release v0.13.15 — Account creation you can find, Review Center for everyone, and a steadier session view by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7227

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.14...v0.13.15

September 11, 2026

Wedged sandboxes are reclaimed, and database contention no longer looks like a server fault

v0.13.14

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

  • fix(markdown): size ordered-list gutter to the widest marker by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7191
  • fix(billing): one upgrade dialog per page, so the accessibility tree can see it by @markokraemer in https://github.com/kortix-ai/suna/pull/7193
  • feat(desktop): ask for the Kortix URL on first launch by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7199
  • fix(tests): a failed Turbopack cache restore must not take the browser shard with it by @markokraemer in https://github.com/kortix-ai/suna/pull/7201
  • fix(desktop): Back control on auth frames, centred on the traffic lights by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7200
  • fix(reaper,auth,audit): kill the two biggest prod error classes at the source by @markokraemer in https://github.com/kortix-ai/suna/pull/7194
  • chore(release): staging VERSION → 0.13.14 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7206
  • chore(release): VERSION → 0.13.14 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7207
  • fix(tests): a finished run must leave, even when something forgot to close by @markokraemer in https://github.com/kortix-ai/suna/pull/7203
  • fix(billing): keep one upgrade-dialog implementation, the depth-aware one by @markokraemer in https://github.com/kortix-ai/suna/pull/7205
  • release: main → staging (prod error sweep, one upgrade-dialog implementation, test-runner reliability) by @markokraemer in https://github.com/kortix-ai/suna/pull/7208
  • Release v0.13.14 — Wedged sandboxes are reclaimed, and database contention no longer looks like a server fault by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7210

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.13...v0.13.14

September 10, 2026

Reliable connector access, account settings, and session Git permissions

v0.13.13

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

September 8, 2026

Project creation restored, complete localization, and headless auth

v0.13.12

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

  • fix(slack,teams): a live run lost its thread after 15 quiet minutes by @kubet in https://github.com/kortix-ai/suna/pull/7127
  • fix(ci): forward all preview runtime secrets by @markokraemer in https://github.com/kortix-ai/suna/pull/7132
  • infra(pi-js-router): open_access is the operator's override by @kubet in https://github.com/kortix-ai/suna/pull/7134
  • fix(preview): raise Node engine floor and recover provider caches by @markokraemer in https://github.com/kortix-ai/suna/pull/7135
  • Repair Node in persistent preview sandboxes by @markokraemer in https://github.com/kortix-ai/suna/pull/7136
  • feat(web): complete app localization and add Serbian by @markokraemer in https://github.com/kortix-ai/suna/pull/7109
  • chore(release): VERSION → 0.13.12 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7142
  • chore(release): staging VERSION → 0.13.12 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7143
  • fix(web): make session attachments reliable by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7084
  • fix(triggers): treat billing-rejected fires as terminal, preserve reason code by @agent-kortix in https://github.com/kortix-ai/suna/pull/7146
  • fix(web): correct panel padding and search by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7149
  • fix(web): restore queued prompt removal toast copy by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7150
  • feat(web): add session brief hover card by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7151
  • fix(web): render real text for 241 broken i18nComplete entries by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7160
  • feat(api,sdk): complete the headless auth surface — 16/16 Supabase auth operations now have a Kortix equivalent by @markokraemer in https://github.com/kortix-ai/suna/pull/7085
  • fix(connectors): support one-letter catalogue searches by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7156
  • fix(api): loud provision/connector failures + deploy the prod API router Worker from deploy-prod by @markokraemer in https://github.com/kortix-ai/suna/pull/7161
  • release: main → staging (2026-09-07, provisioning fix + i18n + headless auth) by @markokraemer in https://github.com/kortix-ai/suna/pull/7163
  • hotfix(staging): template OG image route on Node runtime (unblocks 0.13.12 frontend deploy) by @markokraemer in https://github.com/kortix-ai/suna/pull/7166
  • test(release-gate): spec 23 ignores the CORS preflight; quarantine spec 26's staging-only timeouts (0.13.12) by @markokraemer in https://github.com/kortix-ai/suna/pull/7169
  • Release v0.13.12 — Project creation restored, complete localization, and headless auth by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7167

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.11...v0.13.12

September 6, 2026

Billing wallet floor, scoped git push, and an agent-centric Customize

v0.13.11

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

  • @DimitrijeGlibic made their first contribution in https://github.com/kortix-ai/suna/pull/7061

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.10...v0.13.11

September 2, 2026

Fixes false "temporarily unavailable" errors

v0.13.10

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

  • chore(release): staging VERSION → 0.13.10 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7058
  • release: maintenance fail-open (prod ApiError flood) by @kubet in https://github.com/kortix-ai/suna/pull/7097
  • Release v0.13.10 — Fixes false "temporarily unavailable" errors by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7098

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.9...v0.13.10

August 30, 2026

SDK React import and release reliability

v0.13.9

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

  • fix(api,web): stop offering the managed org as an import source by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7040
  • chore(release): staging VERSION → 0.13.8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7043
  • chore(release): VERSION → 0.13.8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7044
  • secrets: arm the pre-commit hook automatically, close the gitleaks allowlist hole by @markokraemer in https://github.com/kortix-ai/suna/pull/7042
  • fix(sdk): make packed React entry importable by @markokraemer in https://github.com/kortix-ai/suna/pull/7045
  • Release candidate: SDK React package import fix by @markokraemer in https://github.com/kortix-ai/suna/pull/7046
  • Release v0.13.8 — SDK React package import fix by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7048
  • fix(release): declare llm catalog build tool by @markokraemer in https://github.com/kortix-ai/suna/pull/7050
  • Promote npm publish hotfix to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/7051
  • fix(triggers): refresh replica mirror before fire miss by @markokraemer in https://github.com/kortix-ai/suna/pull/7053
  • fix(triggers): bound forced mirror refreshes by @markokraemer in https://github.com/kortix-ai/suna/pull/7055
  • Promote trigger mirror convergence fix to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/7054
  • Release v0.13.9 — SDK React import and release reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7056

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.7...v0.13.9

August 29, 2026

Faster sessions, Sign in with Kortix, and organization branding

v0.13.7

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

  • @ArtemShatokhin made their first contribution in https://github.com/kortix-ai/suna/pull/6961

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.6...v0.13.7

Release on GitHub
Release on GitHub
Release on GitHub
Read the full release on GitHub
Release on GitHub
Read the full release on GitHub
Release on GitHub
Release on GitHub
Read the full 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