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

August 26, 2026

Reliable session starts, in-session connectors, and a native model picker

v0.13.6

Sessions start, resume, and stay honest

  • The session loading screen no longer shows a false "Couldn't start session" card. A wake that stalls now escalates on its own — retry, then restart — with a cooldown ladder instead of a terminal state you had to clear by hand.
  • The transcript loads instead of rendering empty while the sandbox boots, and it stays readable for stopped sessions. Transcripts are now mirrored server-side, so a session that is not running can still be read.
  • The frontend no longer falls behind the agent or shows "stopped" while a turn is running. A running session no longer flips to stopped mid-turn.
  • The prompt queue reflects delivery truth: a message is queued until the runtime accepts it, and a message the runtime cannot run is surfaced instead of silently dropped.
  • Long turns no longer stop at random. Fixes cover provider deadline read-back, the request body cap, the OpenCode auto-updater (now off), a progress-aware boot budget, a bounded turn probe, and Bun's 300 s fetch idle timeout.
  • Long sessions no longer run the sandbox out of memory: attachments are offloaded out of the transcript, a memory guard runs before the kernel does, and the reaper backs off its probes. Each sandbox exposes a daemon log and a /kortix/diag endpoint.
  • Audit writes use a single upsert and a dedicated pool, so a lock convoy on the audit table can no longer surface as a "Bad Gateway" during a session.
  • /summarize (compaction) no longer times out through the proxy; the compaction marker is minimal and the summary opens in the panel.
  • A deleted session refuses /start and /restart with 404. Quota and provider races on project creation are gone. Rotated E2B ingress tokens refresh instead of failing.
  • An untouched send skips a no-op scope round-trip, and the approval audit read drops to 100 rows — faster first send.
  • OpenCode is bumped to 1.18.23 everywhere (fixes Bedrock redacted-content streams).

Connect apps from the session (Composio)

  • A new Connect Link flow replaces the connector overlay. Composio is the managed default provider; the agent selects it on its own.
  • You can connect an app from inside the session without typing "done". A connect the human walked away from is finished later, and a stopped session is told when its connector landed.
  • Gmail managed OAuth ships with the minimum scopes. The CLI and the intake link mint a Kortix connect link, never the provider's raw URL.
  • The connector catalogue is sectioned and filterable at the source. A newly created connector keeps its detail view open.

Models and the LLM gateway

  • The LLM gateway is a per-project setting with a first-class native path when it is off: keys go to the sandbox environment and the native provider/model is used. It stays on by default.
  • Native projects get a model picker before the sandbox runtime exists. The picker defaults to the latest flagship set; search reveals all. Deprecated models are hidden; models.dev status passes through.
  • One capability source and one thinking knob for every model. The sandbox learns the project's servable model set at boot, so the picker never offers a model the runtime cannot run. The seed refreshes weekly.
  • Bedrock: inference-profile ids are preferred, a refused bare id is retried with global./us., bare pins are healed, and no bare Bedrock id is used as a default. OpenAI-on-Bedrock reasoning effort now reaches the model. Summarized Bedrock reasoning streams. A rejected reasoning parameter gets one retry with per-model memory.
  • Inline images are windowed inside the sandbox: every gateway session routes through the daemon LLM proxy.

Approvals and permissions

  • Approval and permission notices fill the composer strip. An approval you cannot decide is never rendered as decidable, an unreviewable card says what is true, an unauthorised reviewer is told so, and Approve is not offered on a row the server will reject.
  • A truncated arguments preview no longer blocks approval.

Web

  • Inline "edit from here" editor with an honest Restore control.
  • bash, write, and edit tool rows: zone layout, live counts, and a diff stat.
  • Code blocks always show a copy button. The carousel tab no longer shifts the page sideways. One sidebar opener on every headerless session surface.
  • Session previews stay loaded and both preview frames preload. An HTML file is served, never injected.
  • Triggers keep access across stale reads. The setup-links modal finalizes when it closes.

Change surfaces

  • One vocabulary and one file list for every change surface.

Under the hood

  • CI moved to Blacksmith runners with tiered sizes, a kill switch, sticky-disk Docker cache, and a portable image-digest recipe. PR test lanes run natively.
  • Secrets hygiene: prod dotenvx keys are owner-only, non-prod profiles carry no prod-reaching credential, and a separation tripwire enforces it.
  • The release pipeline refuses a version tag collision.
Release on GitHub
August 24, 2026

Faster sessions, resilient multimodal runs, and safer previews

v0.13.5

Sessions

  • Sessions start faster with OpenCode 1.18.19, leaner runtime assets, reusable Git bundles, and guarded image preparation.
  • Existing sessions recover after sleep, runtime loss, dropped streams, and interrupted connections.
  • Transcripts catch up after missed events, render long threads sooner, and load attachment bytes only when needed.
  • Unsent drafts persist per project and session. The composer can reference recent session files from the / menu.
  • Fixed duplicate prompts, stale status snapshots, malformed runtime responses, and inaccessible backend-origin sessions.

Product experience

  • Every sandbox preview port can use its own origin across cloud and self-hosted deployments.
  • ZIP archives can be browsed and extracted in the file viewer.
  • The CLI now covers models, sessions, agents, connectors, triggers, access, billing, reviews, and project settings.
  • Added ranked command-palette results, a resizable sidebar, clearer change indicators, a rebuilt Apps gallery, and a simpler Customize chooser.
  • Retired the experimental voice runtime and its unused product surfaces.

Security and reliability

  • Preview origins enforce trusted CORS, cross-site write protection, read-only shares, immediate revocation, and host-scoped cookies.
  • Sandbox credentials stay confined to their session. Connector-bound secrets receive tighter delivery boundaries.
  • Experimental network-enforced secrets support streaming bodies, Server-Sent Events, large payloads, and credential substitution in authorization and cookie headers.
  • Paid legacy subscriptions pass the wallet floor correctly and receive renewal credits based on actual payments.
  • The LLM gateway handles large image requests without repeated base64 copies and survives overload without process crashes.
  • Gateway and edge failures return structured retryable errors instead of intermediary HTML or invalid compressed bodies.
  • Audit writes no longer block API traffic. Audit reads use bounded barriers under continuous traffic.
  • Added database connection limits, secret-write coalescing, per-project session controls, safer live-turn reaping, and initial-prompt replay protection.

What's Changed

  • Release v0.9.15 — SOC 2 compliance baseline + gated release flow by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3303
  • Release v0.9.16 — Live-prove auto version-sync by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3304
  • Release v0.9.17 — Single-leader background workers, contact/demo flow, and build + env fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3305
  • Release v0.9.18 — Restore the site — fix the production render crash by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3307
  • Release v0.9.19 — Project memory, runtime feature controls, and a typed API by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3310
  • Release v0.9.20 — inject kortix llm router into sandbox by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3312
  • Release v0.9.21 — fix tier fetch by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3314
  • Release v0.9.22 — show claim button only for legacy users by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3318
  • Release v0.9.23 — stripe webhook reconciliation by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3323
  • Release v0.9.24 — Auth, billing & connector fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3324
  • Release v0.9.25 — windowed migration — latest 25 by default + offset by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3327
  • Release v0.9.26 — suna migration fix + connector fix by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3330
  • Release v0.9.27 — og suna migrations by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3332
  • Release v0.9.28 — pat authentication by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3334
  • Release v0.9.29 — rehydrate chat on migration by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3337
  • Release v0.9.30 — Platinum sandbox provider, connectors redesign, and admin provider controls by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3339
  • Release v0.9.31 — Billing tier fix, smoother account migration, and UI polish by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3342
  • Release v0.9.32 — Editable connectors, hibernating sandboxes, and sandbox-preview auth fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3348
  • Release v0.9.33 — Static-token auth for webhook triggers by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3351
  • Release v0.9.34 — Desktop app, unified channel delivery & reliability fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3362
  • Release v0.9.35 — Fix fleet-wide 30s API timeouts (DB connection-pool starvation) by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3368
  • Release v0.9.36 — bake secrets into sandbox by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3376
  • Release v0.9.37 — Mobile app v2 (account management, files, terminal) + team billing fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3379
  • Release v0.9.38 — Connector actions fixed across apps by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3380
  • Release v0.9.39 — Fix phantom shadow account members; GitOps/EKS deploy foundation by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3393
  • Release v0.9.40 — E2E Kubernetes setup with ArgoCD by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3397
  • Release v0.9.41 — Release pipeline & infra — internal, no user-facing changes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3400
  • Release v0.9.42 — Slack and scheduled sessions are now visible to the whole team by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3402
  • Release v0.9.43 — CI/CD — traffic-aware canary analysis (internal, no user-facing changes) by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3407
  • fix(eks): prod → plain rolling Deployment (drop fragile canary) by @lillyboga in https://github.com/kortix-ai/suna/pull/3410
  • Release v0.9.44 — EKS prod: rolling Deployment delivery (canary retired) by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3413
  • Release v0.9.45 — Add memory_mb to /health by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3427
  • Release v0.9.46 — Design system refresh and app router cleanup by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3437
  • Release v0.9.47 — Bring docs back by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3439
  • Release v0.9.48 — ArgoCD bug in HPAs by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3450
  • Release v0.9.49 — ChatGPT subscription login, steadier Slack, and a Skills file tree by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3457
  • Release v0.9.50 — API routing: Cloudflare Worker switch + ECS Fargate hot-standby by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3458
  • Release v0.9.51 — Reliability: bulletproof ECS hot-standby + managed-git fix by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3459
  • Release v0.9.52 — Faster, more reliable sessions + PDF/PPTX viewers + security hardening by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3465
  • Release v0.9.53 — Smoother session loading — chat input no longer jumps by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3466
  • Release v0.9.54 — Smoother, more reliable session loading by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3467
  • Release v0.9.55 — Faster, more reliable session start by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3472
  • Release v0.9.56 — Session reliability, Slack polish, and shareable previews by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3477
  • Release v0.9.57 — Slack webhook reliability and unified invocation engine by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3481
  • Release v0.9.58 — Marketing homepage refresh, compare pages, and Cloud pricing update by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3482
  • Release v0.9.59 — Redeploy by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3496
  • Release v0.9.60 — More memory headroom so the API stops restarting under load by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3499
  • Release v0.9.61 — Warm pool fast starts, live first-turn streaming, and project workspace polish by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3510
  • Release v0.9.62 — Sandbox boot time improvements, UI improvements by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3511
  • Release v0.9.63 — Instant session shell, per-agent access, and a faster colocated backend by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3514
  • Release v0.9.64 — Fix warm-pool trigger runtime auth by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3516
  • Release v0.9.65 — Fix private repo provisioning failures by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3518
  • Release v0.9.66 — Sandboxes auto-stop reliably + deterministic compute billing by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3550
  • Release v0.9.67 — Fix sandbox template snapshot builds by @markokraemer in https://github.com/kortix-ai/suna/pull/3561
  • Release v0.9.68 — Session reliability: drain stuck-active cap leak + /sessions 500 resilience + Daytona billing reaper by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3616
  • ops(prod): complete EKS cutover — restore fleet-wide crons by @markokraemer in https://github.com/kortix-ai/suna/pull/3622
  • Release v0.9.69 — Reliable scheduled triggers by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3632
  • Release v0.9.70 — Full cron coverage + correct stall detection by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3637
  • Release v0.9.71 — LLM Gateway: BYOK, managed Kortix models, and live cost observability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3641
  • Release v0.9.72 — Gateway EKS deploy in prod pipeline + correct ingress cert by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3644
  • Release v0.9.73 — Slack channel connector and stability release by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3686
  • Release v0.9.74 — LLM Gateway: Bedrock-native managed models, BYOK fallback, and streaming reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3712
  • Release v0.9.75 — Gateway improvements by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3716
  • Release v0.9.76 — Gateway improvements by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3720
  • Release v0.9.77 — Faster model responses and a fallback for blocked previews by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3727
  • revert(prod): roll back FE & BE to v0.9.68 [INCIDENT] by @markokraemer in https://github.com/kortix-ai/suna/pull/3729
  • fix(prod): keep gateway on 0.9.77 (un-wedge Argo; gateway not in 0.9.68 stack) by @markokraemer in https://github.com/kortix-ai/suna/pull/3737
  • Release v0.9.78 — Marketplace runtime, managed gateway defaults, and staging release hardening by @markokraemer in https://github.com/kortix-ai/suna/pull/3859
  • Release v0.9.79 — Production release v0.9.79 by @markokraemer in https://github.com/kortix-ai/suna/pull/3868
  • Release v0.9.80 — Connect Slack and email in place, fix inbound email, and steadier live previews by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3873
  • Release v0.9.81 — AgentMail email connect error handling by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3884
  • Release v0.9.82 — GLM 5.2 in the model picker, a cleaner Slack connect flow, and reliability fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3900
  • Release v0.9.83 — Slack identity and project session reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3934
  • Release v0.9.84 — Production hotfix: account membership repair by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3939
  • Release v0.9.85 — Release v0.9.85 — Slack identity and account bootstrap hardening by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3943
  • Release v0.9.86 — Fix false 'agent switch requires a new session' on new sessions by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3950
  • Release v0.9.87 — Allow in-session agent switching + wake-race retry + deploy self-heal by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3957
  • Release v0.9.88 — Guided onboarding, a unified Slack panel, and tool-card fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3967
  • Release v0.9.89 — Refreshed marketing site, new blog, and default-agent connector fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3976
  • Release v0.9.90 — Fix the dropped first prompt in new sessions by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/3993
  • Release v0.9.91 — Hotfix gateway Unicode trace logging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4018
  • Release v0.9.92 — Sandbox reliability fixes, per-project provider override, and gateway logging fix by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4023
  • Release v0.9.93 — Reliable LLM completions, plus sandbox and gateway fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4109
  • Release v0.9.94 — Fix GLM stream failures: pin Z.AI host + trace in-stream upstream errors by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4149
  • Release v0.9.95 — Turn auto-resume for transient provider errors by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4154
  • Release v0.9.96 — Fix session-page reconnect storm against stopped sandboxes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4161
  • Release v0.9.97 — Per-account session-limit override + session delete/provision race fix by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4203
  • Release v0.9.98 — Marketplace by default, People Search, SCIM provisioning, and session reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4263
  • Release v0.9.99 — Project-wide provider keys, marketplace fixes, and sharper project permissions by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4278
  • Release v0.9.100 — Marketplace 1-click imports, groups and custom roles for every plan, and a sandbox that recovers when a build fails by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4343
  • Release v0.9.101 — Agents now always answer your first message, plus SSO and gateway fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4364
  • Release v0.9.102 — slack bind-thread + pending main by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4392
  • Release v0.9.103 — Staging release: auth, chat input, Slack defaults, and runtime reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4476
  • Release v0.9.104 — Reliable session uploads and production migration recovery by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4485
  • Release v0.9.105 — Steadier session switching, email-code sign-in, and a batch of fixes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4490
  • Release v0.9.106 — Smoother session open and switch, plus marketing and maintenance-banner polish by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4498
  • Release v0.9.107 — Idle-stopped sessions come back on their own by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4511
  • Release v0.9.108 — Idle sessions wake on their own, invitation fix, and quieter UI by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4519
  • Release v0.10.0 — Self-hosting: one generic Docker deployment, VPS-first by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4730
  • Release v0.10.1 — Self-host: verified laptop and VPS deployments, guided setup by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4740
  • Release v0.10.2 — Self-host SSO out of the box, unified sign-in, and safer defaults by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4749
  • Release v0.10.3 — Self-host hardening, experimental local-docker sandboxes, and an auth refresh fix by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4774
  • Release v0.10.4 — Restore Kortix managed model availability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4790
  • Release v0.10.5 — Restore production EKS gateway origin TLS by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4796
  • Release v0.10.6 — Restore EKS gateway release parity by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4802
  • Release v0.10.7 — v0.10.7 by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4847
  • Release v0.10.8 — Fixes for OpenAI model routing, provider keys, terminals, and toasts by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4865
  • Release v0.10.9 — Easy panel polish: reliable terminal, browser landing, truthful tool cards by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4880
  • Release v0.10.9 — Self-host SSO sign-in fix and a Cloudflare Access setup guide by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4885
  • Release v0.10.10 — Session panel layout fix and inline file previews in chat by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/4889
  • Release v0.10.11 — The LLM Gateway, rebuilt on the Vercel AI SDK and live models.dev — per-model controls, OpenAI/Anthropic APIs, and a full UX overhaul by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5022
  • revert(prod): roll back api+gateway to v0.10.10 [ROLLBACK] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5048
  • Release v0.10.12 — Reliable session starts + re-shipped LLM gateway by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5073
  • Release v0.10.13 — Codex models fixed, gateway hardening, and a Git-first project flow by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5134
  • Release v0.10.14 — Session provisioning, sandbox runtime, and release reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5342
  • Release v0.10.15 — Scheduler reliability and webhook freshness by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5465
  • Release v0.10.16 — Independent maintenance failover by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5509
  • chore(release): promote Retry-After gate fix to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5663
  • chore(release): promote latest main and bounded ke2e gate by @markokraemer in https://github.com/kortix-ai/suna/pull/5670
  • chore(release): include latest Pi runtime fix in staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5673
  • chore(release): final main cutoff for v0.11.0 staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5679
  • chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5695
  • chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5703
  • chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5709
  • chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5713
  • chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5719
  • chore(release): promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5720
  • chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5725
  • chore(release): freeze v0.11.0 source at 3729edc1 by @markokraemer in https://github.com/kortix-ai/suna/pull/5730
  • chore(release): promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5729
  • Release v0.11.0 — Realtime voice, session rewind, warm sessions, and Marketing Department by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5732
  • fix(prod): preserve API deployment selector by @markokraemer in https://github.com/kortix-ai/suna/pull/5737
  • fix(release): carry production Supabase guard to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5750
  • chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5929
  • chore(release): promote main to staging — db-reset harness fix by @markokraemer in https://github.com/kortix-ai/suna/pull/5934
  • chore(release): promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5942
  • Merge main into staging — user menu reorder (#5941) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5945
  • chore(release): promote main to staging — v0.12.0 gate unblock by @markokraemer in https://github.com/kortix-ai/suna/pull/5950
  • chore(release): promote main to staging — final gate fixes (AUD-5, COVD-1) by @markokraemer in https://github.com/kortix-ai/suna/pull/5954
  • Release v0.12.0 — Audit log, session costs, session scope controls, and a rebuilt kortix.com by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5955
  • chore(release): promote main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/5959
  • release(staging): session list rebuild + error boundary copy details by @sutharjay1 in https://github.com/kortix-ai/suna/pull/5990
  • Promote main → staging: v0.12.1 candidate (45 commits since v0.12.0) by @markokraemer in https://github.com/kortix-ai/suna/pull/5991
  • Promote main → staging: shadow-region release-gate fix by @markokraemer in https://github.com/kortix-ai/suna/pull/5994
  • Release v0.12.1 — Connector-aware sessions, project icons, and sandbox reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/5997
  • Targeted staging fix: valid deploy-prod syntax (re-release v0.12.1) by @markokraemer in https://github.com/kortix-ai/suna/pull/6001
  • Release v0.12.1 — Connector-aware sessions, project icons, and sandbox reliability by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6004
  • chore(release): staging VERSION → 0.12.2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6012
  • hotfix(session): prevent passive reads from waking stopped sandboxes by @markokraemer in https://github.com/kortix-ai/suna/pull/6041
  • release(web): /download close button, and mobile marked coming soon by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6061
  • chore(release): promote main 86d7a634 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6064
  • chore(release): refresh staging to main f2f4f840 by @markokraemer in https://github.com/kortix-ai/suna/pull/6066
  • Release v0.12.2 — Runtime reliability, session controls, and infrastructure updates by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6068
  • chore(release): staging VERSION → 0.12.3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6071
  • fix(web,sdk): keep in-flight sends, tell the truth about tool failures, one code palette (#6058) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6105
  • fix: slow project page navigation, and upgrade to Next.js 16.2.0 (#6102) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6107
  • fix(web): give the landing code panels a keyboard tab stop by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6108
  • chore(release): promote main 7fd16e28 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6116
  • fix(qa): deflake the staging a11y gate (networkidle → element waits) by @markokraemer in https://github.com/kortix-ai/suna/pull/6117
  • Release v0.12.3 — Sandbox hardening, faster navigation, and honest sessions by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6118
  • chore(release): staging VERSION → 0.12.4 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6121
  • release(staging): /legal/terms → specific Drive file (#6123) by @markokraemer in https://github.com/kortix-ai/suna/pull/6124
  • fix(ke2e): COST-2 must compute the gap-fill count from its own window (staging) by @markokraemer in https://github.com/kortix-ai/suna/pull/6130
  • release(staging): email provider-chain transport (cherry-pick #6139) by @markokraemer in https://github.com/kortix-ai/suna/pull/6140
  • Release v0.12.4 — Email delivery that survives a provider outage by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6141
  • chore(release): staging VERSION → 0.12.5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6149
  • chore(release): promote main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6187
  • chore(release): promote main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6191
  • release: promote main c7023f12 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6193
  • release: promote main to staging after v0.12.5 gate fix by @markokraemer in https://github.com/kortix-ai/suna/pull/6196
  • Release candidate: refresh staging from main by @markokraemer in https://github.com/kortix-ai/suna/pull/6200
  • Release candidate: promote latest main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6203
  • release: refresh staging with current main by @markokraemer in https://github.com/kortix-ai/suna/pull/6211
  • release: refresh staging with current main by @markokraemer in https://github.com/kortix-ai/suna/pull/6217
  • Release candidate: main → staging (v0.12.5) by @markokraemer in https://github.com/kortix-ai/suna/pull/6229
  • Release v0.12.5 — Secret delivery controls, unified connectors, and flat credit plans by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6188
  • chore(release): staging VERSION → 0.12.6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6238
  • release candidate: main → staging for v0.12.6 by @markokraemer in https://github.com/kortix-ai/suna/pull/6256
  • Promote main (dab76851b9) to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6258
  • Release v0.12.6 — Legacy chat restore, billing correctness, and admin consoles by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6261
  • chore(release): staging VERSION → 0.12.7 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6269
  • fix(sandbox): promote agent-bound lifecycle correctness by @markokraemer in https://github.com/kortix-ai/suna/pull/6285
  • Release candidate: main @ d1ed3589 → staging for v0.12.7 by @markokraemer in https://github.com/kortix-ai/suna/pull/6331
  • Release v0.12.7 — Agent-bound sandboxes, terminal attach, and feature flags by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6345
  • chore(release): staging VERSION → 0.12.8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6351
  • Release candidate: main → staging (v0.12.8) by @markokraemer in https://github.com/kortix-ai/suna/pull/6387
  • Release candidate v0.12.8 r2: connector deny-list hardening by @markokraemer in https://github.com/kortix-ai/suna/pull/6391
  • Release v0.12.8 — Entitlement overrides, act-as support sessions, and one-call agent secret grants by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6389
  • chore(release): staging VERSION → 0.12.9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6400
  • Release candidate: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6402
  • Release candidate r2: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6405
  • Release candidate r3: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6412
  • Release candidate r4: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6416
  • Release candidate r5: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6419
  • Release candidate r6: main → staging (v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6424
  • Release candidate: main → staging (2026-08-18, v0.12.9) by @markokraemer in https://github.com/kortix-ai/suna/pull/6435
  • Release candidate: main → staging (v0.13.0, second attempt) by @markokraemer in https://github.com/kortix-ai/suna/pull/6548
  • Release candidate: main → staging (v0.13.0) + Terraform apply fix (#6549) by @markokraemer in https://github.com/kortix-ai/suna/pull/6550
  • Release candidate: main → staging (v0.13.0) + sharded-gate runtime fixes (#6552) by @markokraemer in https://github.com/kortix-ai/suna/pull/6553
  • Release candidate: main → staging (v0.13.0) + sweep-can't-skip-shards fix (#6556) by @markokraemer in https://github.com/kortix-ai/suna/pull/6557
  • Release candidate: main → staging (v0.13.0) + group-grants Strix fix (#6560) + shard fleet tuning (#6561) by @markokraemer in https://github.com/kortix-ai/suna/pull/6563
  • Release v0.13.0 — Apps goes stable, Monitors lands experimental, and a big session-reliability pass by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6564
  • chore(release): staging VERSION → 0.13.1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6568
  • chore(release): VERSION → 0.13.1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6569
  • docs(learnings): CIC under a 5s lock_timeout cannot land on live prod (v0.13.0 deploy incident) by @markokraemer in https://github.com/kortix-ai/suna/pull/6570
  • perf(sandbox): warm OpenCode instance in fast image by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6571
  • perf(sandbox): precompile fast OpenCode tools by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6572
  • infra(selfhost): bake a daily docker-prune timer into the box by @markokraemer in https://github.com/kortix-ai/suna/pull/6573
  • infra(selfhost): drop a deployment name from the prune comment by @markokraemer in https://github.com/kortix-ai/suna/pull/6574
  • perf(sandbox): align fast runtime base with Ubuntu by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6575
  • fix(slack): let another bot @-mention Kortix — the gate blocked every bot, not just us by @kubet in https://github.com/kortix-ai/suna/pull/6577
  • fix: every managed model works in every sandbox + session.error renders in place + keyboard scroll intent by @markokraemer in https://github.com/kortix-ai/suna/pull/6576
  • fix(sandbox): disable slower fast boot experiment by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6578
  • ci(release-gate): 6 api shards + serial-tail shard, 60-min cap, dry-run dispatch against staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6580
  • test(ke2e): fix tests typecheck break from #6554 (iam.flow.ts:1739) by @markokraemer in https://github.com/kortix-ai/suna/pull/6581
  • test(ke2e): preflight tolerates traffic-degraded gateway, 180s deployed flow budget, no cross-shard shared-state collisions by @markokraemer in https://github.com/kortix-ai/suna/pull/6582
  • test(e2e): harden the recurring deployed-target browser specs; quarantine the non-deterministic ones into a nightly lane by @markokraemer in https://github.com/kortix-ai/suna/pull/6584
  • ci(release-gate): E2E_EXCLUDE_TAGS='@quarantine' on the browser shards (companion to #6584) by @markokraemer in https://github.com/kortix-ai/suna/pull/6587
  • Bound the per-session audit event rate so one runaway turn cannot take the API down by @markokraemer in https://github.com/kortix-ai/suna/pull/6583
  • fix(starter): reflector + reviewer agents run without approval prompts by @markokraemer in https://github.com/kortix-ai/suna/pull/6589
  • fix(api,ke2e): account deletion stops+removes every sandbox, revoked tokens stop authenticating, gc reclaims sessions+tokens by @markokraemer in https://github.com/kortix-ai/suna/pull/6586
  • Give CONCURRENTLY migrations a lock_timeout that can actually land on live prod by @markokraemer in https://github.com/kortix-ai/suna/pull/6588
  • Release candidate: main → staging (v0.13.1): gate-green work by @markokraemer in https://github.com/kortix-ai/suna/pull/6591
  • fix(slack): a bot @-mention still did nothing — the identity gate refuses it, silently by @kubet in https://github.com/kortix-ai/suna/pull/6590
  • feat(connectors): one-click OAuth 2.1 for MCP servers (RFC 9728 + 8414 + 7591 + 8707) by @markokraemer in https://github.com/kortix-ai/suna/pull/6579
  • Canonical RBAC cutover: role_assignments is the only store — legacy tables → views, old engine + parity harnesses deleted by @markokraemer in https://github.com/kortix-ai/suna/pull/6594
  • fix(daemon): managed-model overlay never blocks the spawn; reconcile once before readiness by @markokraemer in https://github.com/kortix-ai/suna/pull/6592
  • fix(sessions): session sharing is the owner's call, not a manager's by @markokraemer in https://github.com/kortix-ai/suna/pull/6593
  • perf(sandbox): arm Platinum secrets during create by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6596
  • feat(email): one EMAIL_URL configures every email Kortix sends by @markokraemer in https://github.com/kortix-ai/suna/pull/6585
  • perf(sessions): stop paying two provider round trips to resume a stopped box by @markokraemer in https://github.com/kortix-ai/suna/pull/6595
  • fix(gateway): disable Bun idleTimeout stream-kill + Bedrock request/response fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/6599
  • fix(email): nodemailer 7.0.13 -> 9.0.5 (open advisories, incl. one high) by @markokraemer in https://github.com/kortix-ai/suna/pull/6597
  • test(ke2e): GW-1 tolerates a traffic-degraded gateway (aligns with #6582 preflight) by @markokraemer in https://github.com/kortix-ai/suna/pull/6603
  • Release candidate: main → staging (v0.13.1): RBAC-cutover code + gate round-2 fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/6604
  • docs(runbook): switching dev/staging/prod auth email onto the send-email hook by @markokraemer in https://github.com/kortix-ai/suna/pull/6601
  • fix(db): unblock dev deploys — reconcile retired role_permissions actions before the cutover's catalog-FK VALIDATE (runtime override) by @markokraemer in https://github.com/kortix-ai/suna/pull/6602
  • fix(slack): link-bot documented the one input form Slack cannot send by @kubet in https://github.com/kortix-ai/suna/pull/6606
  • docs(learnings): reconcile a retired constraint value by remapping, never deleting by @markokraemer in https://github.com/kortix-ai/suna/pull/6605
  • docs(runbook): hook-enable PATCH clears custom SMTP; promote-safety proof by @markokraemer in https://github.com/kortix-ai/suna/pull/6608
  • Never render sandbox readiness 503s as errors — waking state + retry across all surfaces by @markokraemer in https://github.com/kortix-ai/suna/pull/6610
  • refactor(gateway): AI-SDK-native /language-model path for lossless opencode passthrough (flag-gated, dormant) by @markokraemer in https://github.com/kortix-ai/suna/pull/6609
  • fix(slack): link-bot should not require owner/admin — it delegates only your own authority by @kubet in https://github.com/kortix-ai/suna/pull/6612
  • infra(staging): API 3×2vCPU/4GiB — the release gate saturates 2×1vCPU tasks by @markokraemer in https://github.com/kortix-ai/suna/pull/6613
  • Release candidate: main → staging (v0.13.1): staging API 3×2vCPU (#6613) by @markokraemer in https://github.com/kortix-ai/suna/pull/6614
  • feat(secrets): exposure/usage model — one enforcement mechanism on all providers by @markokraemer in https://github.com/kortix-ai/suna/pull/6611
  • refactor(gateway): wire API in-process gateway + session env to enable the native path (flag off) by @markokraemer in https://github.com/kortix-ai/suna/pull/6615
  • fix(slack): users.info was sent as JSON, so Slack never saw the user param by @kubet in https://github.com/kortix-ai/suna/pull/6616
  • fix(queue): forwarded prompts cannot strand, Stop cannot leak, bubbles keep one identity by @markokraemer in https://github.com/kortix-ai/suna/pull/6598
  • perf(api): take audit writes and the owner-email fan-out off the request path by @markokraemer in https://github.com/kortix-ai/suna/pull/6618
  • Release candidate: main → staging (v0.13.1): request-path latency fix (#6618) by @markokraemer in https://github.com/kortix-ai/suna/pull/6620
  • perf(ci): dev single-arch + layer cache + fix the frontend-skip by @markokraemer in https://github.com/kortix-ai/suna/pull/6619
  • perf(ci): build staging images natively per arch, with a layer cache by @markokraemer in https://github.com/kortix-ai/suna/pull/6622
  • fix(gateway): re-apply gateway-side provider shaping (codex store:false + 3 more) on the native path by @markokraemer in https://github.com/kortix-ai/suna/pull/6623
  • ci(dev): explicit Deploy Dev action instead of per-push storm by @markokraemer in https://github.com/kortix-ai/suna/pull/6621
  • fix(web): boot-time composer shows the session's real agent; panels survive boot→ready by @markokraemer in https://github.com/kortix-ai/suna/pull/6625
  • deploy-staging: Cloudflare auth failure must not freeze the staging frontend by @markokraemer in https://github.com/kortix-ai/suna/pull/6626
  • ci(dev): auto-deploy latest + cancel-stale (builds are fast now) by @markokraemer in https://github.com/kortix-ai/suna/pull/6627
  • ke2e: never replay a create through an edge-laundered 5xx (fixes all 22 release-gate failures) by @markokraemer in https://github.com/kortix-ai/suna/pull/6628
  • fix(web): boot composer reads the stashed agent pick before /start answers by @markokraemer in https://github.com/kortix-ai/suna/pull/6629
  • fix(gateway): upgrade @ai-sdk/amazon-bedrock 5.0.24→5.0.59 (parse redacted reasoning; fixes GPT-on-Bedrock 502) by @markokraemer in https://github.com/kortix-ai/suna/pull/6630
  • refactor(gateway): make the AI-SDK-native path the default everywhere (verified across all providers) by @markokraemer in https://github.com/kortix-ai/suna/pull/6631
  • Unblock the release browser gate, and stop leaking the Vercel bypass secret by @markokraemer in https://github.com/kortix-ai/suna/pull/6632
  • Promote main to staging: gate flow + browser fixes, fast builds by @markokraemer in https://github.com/kortix-ai/suna/pull/6633
  • gate: 1 api worker per shard — 19 concurrent collapsed the staging write path by @markokraemer in https://github.com/kortix-ai/suna/pull/6634
  • Promote main to staging: gate worker concurrency by @markokraemer in https://github.com/kortix-ai/suna/pull/6635
  • gate: survive a transient 503 at world bootstrap; staging API floor 6 tasks by @markokraemer in https://github.com/kortix-ai/suna/pull/6636
  • Promote main to staging: bootstrap resilience + 6-task floor by @markokraemer in https://github.com/kortix-ai/suna/pull/6637
  • gate: fix the four session residuals, and stop reruns colliding with themselves by @markokraemer in https://github.com/kortix-ai/suna/pull/6638
  • edge: laundered 503 parses as an AI-SDK error; Worker deploy survives a dead credential by @markokraemer in https://github.com/kortix-ai/suna/pull/6639
  • Promote main to staging: edge error shape + session residual fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/6640
  • staging: raise the request deadline to 55s (cross-region DB) by @markokraemer in https://github.com/kortix-ai/suna/pull/6641
  • Promote main to staging: 55s request deadline by @markokraemer in https://github.com/kortix-ai/suna/pull/6642
  • gate: boundary-asserting skips and named quarantines are legitimate --require-all outcomes by @markokraemer in https://github.com/kortix-ai/suna/pull/6643
  • Promote main to staging: skip semantics + SESS-23 quarantine by @markokraemer in https://github.com/kortix-ai/suna/pull/6644
  • gate: a one-step assert-then-skip flow counts as asserted by @markokraemer in https://github.com/kortix-ai/suna/pull/6645
  • Promote main to staging: assert-then-skip step semantics by @markokraemer in https://github.com/kortix-ai/suna/pull/6646
  • IAM-12: poll effective-permission probes through the cross-task IAM cache window by @markokraemer in https://github.com/kortix-ai/suna/pull/6648
  • Promote main to staging: IAM-12 settle poll by @markokraemer in https://github.com/kortix-ai/suna/pull/6649
  • perf(boot): remove fresh-session Git network round trips by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6647
  • perf(boot): deliver exact Git delta during sandbox creation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6650
  • docs(boot): record deployed Git timing by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6651
  • perf(boot): make Git bundle reuse durable by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6652
  • docs(boot): record durable Git cache benchmark by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6653
  • Release v0.13.1 — Release gate goes green: sharded, self-cleaning, right-sized staging by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6654
  • chore(runtime): bump OpenCode 1.17.11 -> 1.18.19 everywhere by @markokraemer in https://github.com/kortix-ai/suna/pull/6655
  • chore(release): staging VERSION → 0.13.2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6659
  • chore(release): VERSION → 0.13.2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6660
  • fix(turns): box-initiated turns get authority; busy roots are never read as terminal by @markokraemer in https://github.com/kortix-ai/suna/pull/6657
  • learnings: three rules from the v0.13.1 release-gate campaign by @markokraemer in https://github.com/kortix-ai/suna/pull/6661
  • fix(session): polish the session UX end to end by @markokraemer in https://github.com/kortix-ai/suna/pull/6663
  • refactor: stop inferring chronology from OpenCode message ids by @markokraemer in https://github.com/kortix-ai/suna/pull/6665
  • fix(turns): turn-begin relay must authenticate as the sandbox, not a PAT by @markokraemer in https://github.com/kortix-ai/suna/pull/6664
  • fix(billing): resolve entitlement from the subscription, not the stored tier by @markokraemer in https://github.com/kortix-ai/suna/pull/6662
  • perf(boot): shrink OpenCode config runtime by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6656
  • chore(billing): backfill the renewal credits zero-grant legacy tiers never gave by @markokraemer in https://github.com/kortix-ai/suna/pull/6666
  • perf(boot): bake the generic scaffold checkout by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6668
  • fix(billing): teach the entitlement invariant what a renewal now grants by @markokraemer in https://github.com/kortix-ai/suna/pull/6671
  • perf(boot): make starter Git bundles provider-portable by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6672
  • chore(billing): reconcile stripe_subscription_status drift before #6662 promotes by @markokraemer in https://github.com/kortix-ai/suna/pull/6669
  • feat(runtime): converge every sandbox onto the API it talks to by @markokraemer in https://github.com/kortix-ai/suna/pull/6673
  • fix(boot): invalidate stale scaffold images by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6674
  • fix(runtime-assets): hash the sandbox binaries at startup, not on the request by @markokraemer in https://github.com/kortix-ai/suna/pull/6676
  • docs(boot): record scaffold benchmark by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6678
  • feat(secrets): gate egress-enforced delivery behind experimental secrets_egress flag; default to environment by @markokraemer in https://github.com/kortix-ai/suna/pull/6677
  • fix(sdk): sub-agent panels stop throwing 'Invalid session id' + quieter landing hero by @markokraemer in https://github.com/kortix-ai/suna/pull/6680
  • gateway: remove the AI-SDK-native transport — OpenAI-compat only (reliability) by @markokraemer in https://github.com/kortix-ai/suna/pull/6679
  • fix(secrets): relay substitutes handles in Authorization/Cookie (egress works for Bearer auth) by @markokraemer in https://github.com/kortix-ai/suna/pull/6683
  • Serve every sandbox preview on its own origin by @markokraemer in https://github.com/kortix-ai/suna/pull/6681
  • fix(web): sub-agent row hierarchy — one rail per level, agent rows that open by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6682
  • enh(web): landing page hero scenes and marketing rebuild by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6658
  • feat(secrets): stream the relay — no body caps, SSE, truncation sentinel by @markokraemer in https://github.com/kortix-ai/suna/pull/6685
  • fix(boot): the managed-skill overlay no longer counts as the user's changes by @markokraemer in https://github.com/kortix-ai/suna/pull/6684
  • refactor(session): one source of truth for what a session changed + the tracked package.json by @markokraemer in https://github.com/kortix-ai/suna/pull/6687
  • fix(session): a finished turn stays finished by @markokraemer in https://github.com/kortix-ai/suna/pull/6688
  • perf(web): verify the session JWT in-process instead of calling GoTrue on every navigation by @markokraemer in https://github.com/kortix-ai/suna/pull/6690
  • fix(session): a retry is not the end of a turn by @markokraemer in https://github.com/kortix-ai/suna/pull/6691
  • fix(queue): the inbox owns the queue by @markokraemer in https://github.com/kortix-ai/suna/pull/6692
  • perf(sandbox): reduce cold OpenCode startup latency by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6694
  • perf(snapshots): materialize Platinum templates before activation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6695
  • Prepare active Platinum images before cold boots by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6696
  • fix(slack): an app_mention was answered by whichever project got the callback, not the bot that was mentioned by @kubet in https://github.com/kortix-ai/suna/pull/6689
  • fix(sessions): list and lifecycle answer manager standing from one predicate by @kubet in https://github.com/kortix-ai/suna/pull/6697
  • fix(api): an algorithm the local verifier cannot check is not a bad token by @markokraemer in https://github.com/kortix-ai/suna/pull/6698
  • perf(sandbox): add guarded project-image cold boot by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6700
  • fix(api): fail closed on unsafe FAST activation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6703
  • fix(api,selfhost): isolate audit writes + Caddy retry so a slow audit write can't 502 the gateway by @markokraemer in https://github.com/kortix-ai/suna/pull/6702
  • revert(queue): put the queue back the way it was by @markokraemer in https://github.com/kortix-ai/suna/pull/6699
  • fix(web): stop the session boot shell vanishing at handover by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6701
  • fix(edge): accept webhooks without User-Agent by @markokraemer in https://github.com/kortix-ai/suna/pull/6709
  • fix(gateway): bound per-request memory so the LLM path can actually autoscale by @markokraemer in https://github.com/kortix-ai/suna/pull/6708
  • fix(web): restore voice input and subordinate menu styling — main was red by @markokraemer in https://github.com/kortix-ai/suna/pull/6711
  • docs(learnings): a 'tried and reverted' comment is a decision record by @markokraemer in https://github.com/kortix-ai/suna/pull/6704
  • docs(gateway): state the in-flight budget's unit, and pin it with a test by @markokraemer in https://github.com/kortix-ai/suna/pull/6710
  • fix(dev): stop OOM-killing the dev API — 1024 MiB was a quarter of every other environment by @markokraemer in https://github.com/kortix-ai/suna/pull/6705
  • fix(gateway): size the in-flight budget from the container, not from a constant by @markokraemer in https://github.com/kortix-ai/suna/pull/6712
  • docs(learnings): a limit larger than the thing it protects is not a limit by @markokraemer in https://github.com/kortix-ai/suna/pull/6713
  • fix(triggers): stop initial prompt replay loops by @markokraemer in https://github.com/kortix-ai/suna/pull/6716
  • hotfix(webhooks): accept unsigned-agent requests and stop prompt replay by @markokraemer in https://github.com/kortix-ai/suna/pull/6717
  • Release v0.13.2 — Fix production webhook delivery and initial prompt completion by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6718
  • chore(release): VERSION → 0.13.3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6720
  • chore(release): staging VERSION → 0.13.3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6721
  • fix(reaper): stop killing live turns on a box that is merely transitioning by @markokraemer in https://github.com/kortix-ai/suna/pull/6719
  • fix(platform): storm controls — coalesced env fan-out, secret-write budget, per-project session cap by @kubet in https://github.com/kortix-ai/suna/pull/6715
  • fix(api): bound database connections during rollouts by @markokraemer in https://github.com/kortix-ai/suna/pull/6722
  • fix(prod): bound database connections during rolling deployment by @markokraemer in https://github.com/kortix-ai/suna/pull/6724
  • test(browser): await account render before retry by @markokraemer in https://github.com/kortix-ai/suna/pull/6727
  • fix(release): isolate audit writes from API database pool by @markokraemer in https://github.com/kortix-ai/suna/pull/6728
  • Release v0.13.3 — Bound database connections and isolated audit writes by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6733
  • fix(preview): make preview origins a MUST on a public domain, never a silent downgrade by @markokraemer in https://github.com/kortix-ai/suna/pull/6732
  • fix(release): bind Vercel runtime version per deployment by @markokraemer in https://github.com/kortix-ai/suna/pull/6735
  • fix(release): bind Vercel runtime version per deployment by @markokraemer in https://github.com/kortix-ai/suna/pull/6736
  • refactor(gateway): bound memory and simplify passthrough by @markokraemer in https://github.com/kortix-ai/suna/pull/6737
  • fix(gateway): wire API proxy to standalone service by @markokraemer in https://github.com/kortix-ai/suna/pull/6738
  • fix(deploy): persist gateway target in ECS revisions by @markokraemer in https://github.com/kortix-ai/suna/pull/6740
  • test(release): prove warm adoption on the target row by @markokraemer in https://github.com/kortix-ai/suna/pull/6739
  • Fix warm-session adoption release assertion by @markokraemer in https://github.com/kortix-ai/suna/pull/6741
  • feat(cli): UI→CLI parity — every operable dashboard action has a kortix command by @markokraemer in https://github.com/kortix-ai/suna/pull/6731
  • feat(composer): persist unsent drafts per project and per session by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6743
  • test(release): require Apps list after enabling flag by @markokraemer in https://github.com/kortix-ai/suna/pull/6747
  • test(release): require Apps list after enabling flag by @markokraemer in https://github.com/kortix-ai/suna/pull/6749
  • fix(session): make runtime recovery single-flight and non-destructive by @markokraemer in https://github.com/kortix-ai/suna/pull/6748
  • fix(worktree): warn at start when another stack is live on the shared DB (worker cross-talk) by @markokraemer in https://github.com/kortix-ai/suna/pull/6752
  • docs(sdk): close runtime recovery progress by @markokraemer in https://github.com/kortix-ai/suna/pull/6754
  • security: enforce the sandbox credential boundary by @markokraemer in https://github.com/kortix-ai/suna/pull/6751
  • fix(cli): replay manifest CAS 409 once; projects ls honors --host/--account by @markokraemer in https://github.com/kortix-ai/suna/pull/6753
  • fix(worktree): tunnel watchdog — rotate a dead quick tunnel and respawn the API with the new KORTIX_URL by @markokraemer in https://github.com/kortix-ai/suna/pull/6755
  • test(release): allow later session activity writes by @markokraemer in https://github.com/kortix-ai/suna/pull/6756
  • docs(learnings): never resolve a merge inside a worktree whose API runs --hot by @markokraemer in https://github.com/kortix-ai/suna/pull/6758
  • test(release): allow later session activity writes by @markokraemer in https://github.com/kortix-ai/suna/pull/6757
  • fix(worktree): run the quick tunnel over HTTP/2, not QUIC by @markokraemer in https://github.com/kortix-ai/suna/pull/6759
  • fix(api): inbox delivery converges the box before every prompt, not only with an opencodeEnv override by @markokraemer in https://github.com/kortix-ai/suna/pull/6761
  • security: enforce the sandbox credential boundary by @markokraemer in https://github.com/kortix-ai/suna/pull/6760
  • Release v0.13.4 — Bound database capacity and reliable production web deploys by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6746
  • chore(release): VERSION → 0.13.5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6762
  • chore(release): staging VERSION → 0.13.5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6763
  • fix(web): the Apps gallery goes back to 16:9, two across, with a size control by @markokraemer in https://github.com/kortix-ai/suna/pull/6764
  • fix(api,dev): instance-scoped background work on a shared local DB (KORTIX_INSTANCE_ID) by @markokraemer in https://github.com/kortix-ai/suna/pull/6765
  • fix(triggers): validate webhook secret delivery by @markokraemer in https://github.com/kortix-ai/suna/pull/6768
  • fix(web): an App card names the App, not its hostname by @markokraemer in https://github.com/kortix-ai/suna/pull/6767
  • kortixd: standalone compute-node daemon and sandbox runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6686
  • docs(learnings): a cancelled deploy-dev can advertise a SHA it never promoted by @markokraemer in https://github.com/kortix-ai/suna/pull/6769
  • fix(self-host): expose the public LLM gateway route by @markokraemer in https://github.com/kortix-ai/suna/pull/6770
  • fix(kortixd): connect through deployed WebSocket edge by @markokraemer in https://github.com/kortix-ai/suna/pull/6773
  • fix(web): the model dialog IS the Models page, not a second copy of it by @markokraemer in https://github.com/kortix-ai/suna/pull/6771
  • fix(web): trim the project settings rail, and a floating way back from the account hub by @markokraemer in https://github.com/kortix-ai/suna/pull/6772
  • feat(web): rebuild the Customize index as a chooser by @markokraemer in https://github.com/kortix-ai/suna/pull/6774
  • fix(kortixd): complete reliable sandbox relay rollout by @markokraemer in https://github.com/kortix-ai/suna/pull/6776
  • fix(relay): cross Cloudflare for PTY sockets by @markokraemer in https://github.com/kortix-ai/suna/pull/6777
  • fix(kortixd): disable node-channel compression by @markokraemer in https://github.com/kortix-ai/suna/pull/6778
  • fix(api): wait through Platinum archive restore by @markokraemer in https://github.com/kortix-ai/suna/pull/6779
  • fix(api): converge kortixd after Daytona wake by @markokraemer in https://github.com/kortix-ai/suna/pull/6780
  • fix(api): bootstrap kortixd on legacy sandboxes by @markokraemer in https://github.com/kortix-ai/suna/pull/6781
  • fix(api): restore runtime environment for legacy kortixd by @markokraemer in https://github.com/kortix-ai/suna/pull/6782
  • fix(api): serialize legacy kortixd repair by @markokraemer in https://github.com/kortix-ai/suna/pull/6783
  • fix(api): preserve legacy sandbox entrypoint by @markokraemer in https://github.com/kortix-ai/suna/pull/6784
  • fix(api): protect sandbox PID 1 by @markokraemer in https://github.com/kortix-ai/suna/pull/6785
  • fix(kortixd): adopt legacy sandbox runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6786
  • revert: restore stable sandbox relay while kortixd stays in worktree by @markokraemer in https://github.com/kortix-ai/suna/pull/6787
  • fix(deploy): complete reviewed kortixd rollback by @markokraemer in https://github.com/kortix-ai/suna/pull/6788
  • fix(sdk,web): a runtime list endpoint never hands back a non-list ('t is not iterable') by @markokraemer in https://github.com/kortix-ai/suna/pull/6790
  • docs(learnings): normalize remote list responses at the SDK seam by @markokraemer in https://github.com/kortix-ai/suna/pull/6791
  • release(staging): backport 5 web changes — sub-agent rows, landing rebuild, sidebar alerts, zip viewer, share view by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6789
  • fix(api,web,sdk): terminal attach wakes a parked sandbox instead of looping on 1006 by @markokraemer in https://github.com/kortix-ai/suna/pull/6792
  • fix(env): default managed git to github for local and dev runs by @markokraemer in https://github.com/kortix-ai/suna/pull/6793
  • docs(learnings): a websocket upgrade must obey the HTTP wake policy by @markokraemer in https://github.com/kortix-ai/suna/pull/6794
  • fix(api): retire code.storage as a provisioning target everywhere by @markokraemer in https://github.com/kortix-ai/suna/pull/6796
  • fix(web): stop path detection from turning a code fence into [object Object] by @markokraemer in https://github.com/kortix-ai/suna/pull/6795
  • fix(deploy): pin MANAGED_GIT_PROVIDER=github in the staging env bundle by @markokraemer in https://github.com/kortix-ai/suna/pull/6799
  • fix(router): accept the session PAT that every built-in tool actually presents by @markokraemer in https://github.com/kortix-ai/suna/pull/6800
  • fix(ci): run dev channel promotions after skipped surfaces by @markokraemer in https://github.com/kortix-ai/suna/pull/6798
  • Fix OpenCode resolution in generated sandbox templates by @markokraemer in https://github.com/kortix-ai/suna/pull/6801
  • fix(session): stop claiming a live session is "waking" before we have looked by @markokraemer in https://github.com/kortix-ai/suna/pull/6802
  • docs(agents): remove the dangling tdd skill and fix stale AGENTS.md facts by @markokraemer in https://github.com/kortix-ai/suna/pull/6803
  • fix(models): a connected ChatGPT subscription can be removed again by @markokraemer in https://github.com/kortix-ai/suna/pull/6804
  • Resolve native OpenCode from the installed pnpm shim by @markokraemer in https://github.com/kortix-ai/suna/pull/6805
  • fix(session,db): a finished turn stays finished; drop the reverted kortixd schema by @markokraemer in https://github.com/kortix-ai/suna/pull/6807
  • fix(session,db): finish the turn-end fix + three defects an audit found by @markokraemer in https://github.com/kortix-ai/suna/pull/6808
  • fix(sdk): a status snapshot may fill a gap, never overwrite the live stream by @markokraemer in https://github.com/kortix-ai/suna/pull/6809
  • perf(session): bound what a long thread retains by @markokraemer in https://github.com/kortix-ai/suna/pull/6810
  • fix(session): a queued prompt asks the inbox whether it survived, not the runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6811
  • Fix duplicate prompts from CLI new-session chat by @markokraemer in https://github.com/kortix-ai/suna/pull/6812
  • Files: one header row per surface, faster change-request open, calmer review panels by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6813
  • fix(session): the runtime's output is evidence, not an opinion about the runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6814
  • fix(starter): disable harness reflector by default by @kubet in https://github.com/kortix-ai/suna/pull/6806
  • fix(sdk,session): the transcript comes from the runtime, never from disk by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6819
  • A wait is not a fault: one connection answer for the session view by @markokraemer in https://github.com/kortix-ai/suna/pull/6817
  • fix(api): namespace OpenCode gateway model refs by @markokraemer in https://github.com/kortix-ai/suna/pull/6820
  • Drop a foreign key the schema declared and no database ever had by @markokraemer in https://github.com/kortix-ai/suna/pull/6818
  • The transcript must catch up — five things stopped it by @markokraemer in https://github.com/kortix-ai/suna/pull/6821
  • fix(sandbox): recover missing OpenCode runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6822
  • fix(ci): preserve frontend channel promotion by @markokraemer in https://github.com/kortix-ai/suna/pull/6823
  • The read is the liveness check — stop the session page waiting on a probe by @markokraemer in https://github.com/kortix-ai/suna/pull/6824
  • The first page is 20 messages, not 50 by @markokraemer in https://github.com/kortix-ai/suna/pull/6825
  • Take over OpenCode's own v1 page handling by @markokraemer in https://github.com/kortix-ai/suna/pull/6826
  • Wait for a sandbox to wake, not for three tries by @markokraemer in https://github.com/kortix-ai/suna/pull/6827
  • A human is not a sandbox: backend-origin sessions open again by @markokraemer in https://github.com/kortix-ai/suna/pull/6828
  • The transcript stops shipping attachment bytes by @markokraemer in https://github.com/kortix-ai/suna/pull/6829
  • Learnings: the 2026-08-24 session-open incident by @markokraemer in https://github.com/kortix-ai/suna/pull/6830
  • One read where there were three, one entry where there were two by @markokraemer in https://github.com/kortix-ai/suna/pull/6832
  • fix(gateway): zero-copy image passthrough, measured memory envelope, image window, framing headers by @markokraemer in https://github.com/kortix-ai/suna/pull/6831
  • Promote main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6834
  • perf(session): remove residual page-load contention by @markokraemer in https://github.com/kortix-ai/suna/pull/6836
  • fix(gateway): survive overload instead of dying — no OOM, no lease leak, no 502 by @markokraemer in https://github.com/kortix-ai/suna/pull/6835
  • Bound failed existing-session resume loops by @markokraemer in https://github.com/kortix-ai/suna/pull/6837
  • Fix release gate audit stalls and stale fixtures by @markokraemer in https://github.com/kortix-ai/suna/pull/6838
  • Promote current main to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6839
  • Release v0.13.5 — Faster sessions, resilient multimodal runs, and safer previews by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6842

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.0...v0.13.5

August 22, 2026

Bound database capacity and reliable production web deploys

v0.13.4

Fixed

  • Bound API database pools against the maximum rolling deployment fleet. This prevents PostgreSQL 53300 connection exhaustion.
  • Isolated audit writes on a dedicated pool. Slow audit inserts cannot starve request handlers.
  • Coalesced project environment updates, bounded secret writes, and capped concurrent project sessions to contain request storms.
  • Bound public web version metadata to each Vercel deployment. Production web deploys now complete with the correct release version.
  • Strengthened release verification for warm-session adoption.

What's Changed

  • chore(release): VERSION → 0.13.3 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6720
  • fix(reaper): stop killing live turns on a box that is merely transitioning by @markokraemer in https://github.com/kortix-ai/suna/pull/6719
  • fix(platform): storm controls — coalesced env fan-out, secret-write budget, per-project session cap by @kubet in https://github.com/kortix-ai/suna/pull/6715
  • fix(api): bound database connections during rollouts by @markokraemer in https://github.com/kortix-ai/suna/pull/6722
  • test(browser): await account render before retry by @markokraemer in https://github.com/kortix-ai/suna/pull/6727
  • fix(preview): make preview origins a MUST on a public domain, never a silent downgrade by @markokraemer in https://github.com/kortix-ai/suna/pull/6732
  • fix(release): bind Vercel runtime version per deployment by @markokraemer in https://github.com/kortix-ai/suna/pull/6735
  • refactor(gateway): bound memory and simplify passthrough by @markokraemer in https://github.com/kortix-ai/suna/pull/6737
  • fix(gateway): wire API proxy to standalone service by @markokraemer in https://github.com/kortix-ai/suna/pull/6738
  • fix(deploy): persist gateway target in ECS revisions by @markokraemer in https://github.com/kortix-ai/suna/pull/6740
  • test(release): prove warm adoption on the target row by @markokraemer in https://github.com/kortix-ai/suna/pull/6739
  • feat(cli): UI→CLI parity — every operable dashboard action has a kortix command by @markokraemer in https://github.com/kortix-ai/suna/pull/6731
  • feat(composer): persist unsent drafts per project and per session by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6743
  • test(release): require Apps list after enabling flag by @markokraemer in https://github.com/kortix-ai/suna/pull/6747
  • fix(session): make runtime recovery single-flight and non-destructive by @markokraemer in https://github.com/kortix-ai/suna/pull/6748
  • fix(worktree): warn at start when another stack is live on the shared DB (worker cross-talk) by @markokraemer in https://github.com/kortix-ai/suna/pull/6752
  • docs(sdk): close runtime recovery progress by @markokraemer in https://github.com/kortix-ai/suna/pull/6754
  • security: enforce the sandbox credential boundary by @markokraemer in https://github.com/kortix-ai/suna/pull/6751
  • fix(cli): replay manifest CAS 409 once; projects ls honors --host/--account by @markokraemer in https://github.com/kortix-ai/suna/pull/6753
  • fix(worktree): tunnel watchdog — rotate a dead quick tunnel and respawn the API with the new KORTIX_URL by @markokraemer in https://github.com/kortix-ai/suna/pull/6755
  • test(release): allow later session activity writes by @markokraemer in https://github.com/kortix-ai/suna/pull/6756
  • docs(learnings): never resolve a merge inside a worktree whose API runs --hot by @markokraemer in https://github.com/kortix-ai/suna/pull/6758
  • fix(worktree): run the quick tunnel over HTTP/2, not QUIC by @markokraemer in https://github.com/kortix-ai/suna/pull/6759
  • fix(api): inbox delivery converges the box before every prompt, not only with an opencodeEnv override by @markokraemer in https://github.com/kortix-ai/suna/pull/6761
  • security: enforce the sandbox credential boundary by @markokraemer in https://github.com/kortix-ai/suna/pull/6760

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.2...v0.13.4

August 22, 2026

Fix production webhook delivery and initial prompt completion

v0.13.2

Accept webhook requests without a User-Agent at the Cloudflare edge. Mint OpenCode-compatible initial message IDs so webhook-triggered turns complete once instead of replaying.

What's Changed

  • chore(release): VERSION → 0.13.2 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6660
  • fix(turns): box-initiated turns get authority; busy roots are never read as terminal by @markokraemer in https://github.com/kortix-ai/suna/pull/6657
  • learnings: three rules from the v0.13.1 release-gate campaign by @markokraemer in https://github.com/kortix-ai/suna/pull/6661
  • fix(session): polish the session UX end to end by @markokraemer in https://github.com/kortix-ai/suna/pull/6663
  • refactor: stop inferring chronology from OpenCode message ids by @markokraemer in https://github.com/kortix-ai/suna/pull/6665
  • fix(turns): turn-begin relay must authenticate as the sandbox, not a PAT by @markokraemer in https://github.com/kortix-ai/suna/pull/6664
  • fix(billing): resolve entitlement from the subscription, not the stored tier by @markokraemer in https://github.com/kortix-ai/suna/pull/6662
  • perf(boot): shrink OpenCode config runtime by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6656
  • chore(billing): backfill the renewal credits zero-grant legacy tiers never gave by @markokraemer in https://github.com/kortix-ai/suna/pull/6666
  • perf(boot): bake the generic scaffold checkout by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6668
  • fix(billing): teach the entitlement invariant what a renewal now grants by @markokraemer in https://github.com/kortix-ai/suna/pull/6671
  • perf(boot): make starter Git bundles provider-portable by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6672
  • chore(billing): reconcile stripe_subscription_status drift before #6662 promotes by @markokraemer in https://github.com/kortix-ai/suna/pull/6669
  • feat(runtime): converge every sandbox onto the API it talks to by @markokraemer in https://github.com/kortix-ai/suna/pull/6673
  • fix(boot): invalidate stale scaffold images by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6674
  • fix(runtime-assets): hash the sandbox binaries at startup, not on the request by @markokraemer in https://github.com/kortix-ai/suna/pull/6676
  • docs(boot): record scaffold benchmark by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6678
  • feat(secrets): gate egress-enforced delivery behind experimental secrets_egress flag; default to environment by @markokraemer in https://github.com/kortix-ai/suna/pull/6677
  • fix(sdk): sub-agent panels stop throwing 'Invalid session id' + quieter landing hero by @markokraemer in https://github.com/kortix-ai/suna/pull/6680
  • gateway: remove the AI-SDK-native transport — OpenAI-compat only (reliability) by @markokraemer in https://github.com/kortix-ai/suna/pull/6679
  • fix(secrets): relay substitutes handles in Authorization/Cookie (egress works for Bearer auth) by @markokraemer in https://github.com/kortix-ai/suna/pull/6683
  • Serve every sandbox preview on its own origin by @markokraemer in https://github.com/kortix-ai/suna/pull/6681
  • fix(web): sub-agent row hierarchy — one rail per level, agent rows that open by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6682
  • enh(web): landing page hero scenes and marketing rebuild by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6658
  • feat(secrets): stream the relay — no body caps, SSE, truncation sentinel by @markokraemer in https://github.com/kortix-ai/suna/pull/6685
  • fix(boot): the managed-skill overlay no longer counts as the user's changes by @markokraemer in https://github.com/kortix-ai/suna/pull/6684
  • refactor(session): one source of truth for what a session changed + the tracked package.json by @markokraemer in https://github.com/kortix-ai/suna/pull/6687
  • fix(session): a finished turn stays finished by @markokraemer in https://github.com/kortix-ai/suna/pull/6688
  • perf(web): verify the session JWT in-process instead of calling GoTrue on every navigation by @markokraemer in https://github.com/kortix-ai/suna/pull/6690
  • fix(session): a retry is not the end of a turn by @markokraemer in https://github.com/kortix-ai/suna/pull/6691
  • fix(queue): the inbox owns the queue by @markokraemer in https://github.com/kortix-ai/suna/pull/6692
  • perf(sandbox): reduce cold OpenCode startup latency by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6694
  • perf(snapshots): materialize Platinum templates before activation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6695
  • Prepare active Platinum images before cold boots by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6696
  • fix(slack): an app_mention was answered by whichever project got the callback, not the bot that was mentioned by @kubet in https://github.com/kortix-ai/suna/pull/6689
  • fix(sessions): list and lifecycle answer manager standing from one predicate by @kubet in https://github.com/kortix-ai/suna/pull/6697
  • fix(api): an algorithm the local verifier cannot check is not a bad token by @markokraemer in https://github.com/kortix-ai/suna/pull/6698
  • perf(sandbox): add guarded project-image cold boot by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6700
  • fix(api): fail closed on unsafe FAST activation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6703
  • fix(api,selfhost): isolate audit writes + Caddy retry so a slow audit write can't 502 the gateway by @markokraemer in https://github.com/kortix-ai/suna/pull/6702
  • revert(queue): put the queue back the way it was by @markokraemer in https://github.com/kortix-ai/suna/pull/6699
  • fix(web): stop the session boot shell vanishing at handover by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6701
  • fix(edge): accept webhooks without User-Agent by @markokraemer in https://github.com/kortix-ai/suna/pull/6709
  • fix(gateway): bound per-request memory so the LLM path can actually autoscale by @markokraemer in https://github.com/kortix-ai/suna/pull/6708
  • fix(web): restore voice input and subordinate menu styling — main was red by @markokraemer in https://github.com/kortix-ai/suna/pull/6711
  • docs(learnings): a 'tried and reverted' comment is a decision record by @markokraemer in https://github.com/kortix-ai/suna/pull/6704
  • docs(gateway): state the in-flight budget's unit, and pin it with a test by @markokraemer in https://github.com/kortix-ai/suna/pull/6710
  • fix(dev): stop OOM-killing the dev API — 1024 MiB was a quarter of every other environment by @markokraemer in https://github.com/kortix-ai/suna/pull/6705
  • fix(gateway): size the in-flight budget from the container, not from a constant by @markokraemer in https://github.com/kortix-ai/suna/pull/6712
  • docs(learnings): a limit larger than the thing it protects is not a limit by @markokraemer in https://github.com/kortix-ai/suna/pull/6713
  • fix(triggers): stop initial prompt replay loops by @markokraemer in https://github.com/kortix-ai/suna/pull/6716

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.1...v0.13.2

August 20, 2026

Release gate goes green: sharded, self-cleaning, right-sized staging

v0.13.1

New

  • One URL configures every email Kortix sends. Signup confirmations, magic links, invites and alerts all flow through the same EMAIL_URL transport with the same sender identity and templates — self-hosted installs configure email once. Supabase auth mail now goes through the same path instead of GoTrue's own SMTP.
  • One-click OAuth for MCP connectors. Connecting an MCP server that requires OAuth 2.1 now works end-to-end from the UI or via kortix connectors authorize — discovery, dynamic client registration and token exchange included.
  • Secrets get an exposure and usage model. Each secret declares how it may be exposed and which usages are assigned to it, enforced by one mechanism across every sandbox provider.
  • Session sharing is now the owner's call: managers keep lifecycle control (stop, restart), but only the session's owner can share it or mint public links.

Fixed

  • Revoked API tokens now actually stop working. A personal access token that had been revoked could still authenticate on every surface (REST, the LLM gateway, git proxy, preview proxy, connectors) because the validation query never checked the revocation timestamp. Revoked tokens are now rejected everywhere.
  • Deleting an account now stops and removes every one of its sandboxes — across every account the user owns and every non-terminal state — instead of only stopping the ones under the earliest-joined account.
  • A runaway agent turn can no longer take the API down. Each session's audit-event stream is bounded (900 events per minute); past that ceiling only the high-volume streaming-delta class is dropped while lifecycle, usage and billing events keep flowing.
  • API writes are much faster under load. Audit events are written asynchronously in batches off the request path (they were a synchronous insert into a 14-index table on every request), and the account list no longer makes one admin-API call per member to resolve owner emails. Audit reads flush the queue first, so the audit log stays read-your-writes.
  • A waking sandbox no longer looks like an error. Every surface (web, CLI, SDK) now treats the sandbox-starting state as "waking" with retry, instead of surfacing a 503. Resuming a stopped box also dropped two provider round trips.
  • Gateway reliability: long streaming turns are no longer killed at 255 seconds by a runtime idle timeout; Bedrock requests with trailing prefill or redacted reasoning no longer fail; the gateway's provider shaping now runs on the new AI-SDK-native transport path, which is the default everywhere.
  • Slack: another bot @-mentioning Kortix now works; linking the bot no longer demands owner/admin (it delegates only your own authority); user lookups were sent in a form Slack silently ignored — fixed.
  • Prompt queue and composer: forwarded prompts can no longer strand, Stop can no longer leak into the next turn, fresh sessions paint instantly in one ordered batch, and the boot-time composer shows the session's real agent.
  • Deleted sessions are no longer readable by id. Listing a project's group grants is manager-only, matching the write routes.
  • Sandboxes learn the managed model set from the API on every boot, so a model the picker offers is one the runtime knows.
  • Keyboard scrolling in a session is treated as scroll intent: Cmd+Up no longer snaps back to the end. A session.error is now attributed to the turn that failed.
  • Starter reflector and reviewer agents run without approval prompts. Self-hosted boxes get a daily Docker prune timer.
  • Session titles and conversation counts are recorded again. The per-session metadata mirror was silently never written (the internal call carried no user identity, so the sandbox rejected it) — session names and conversation counts now populate for new sessions.

Security

  • The sandbox egress pin trusts the edge-populated client IP rather than spoofable forwarding headers; the App public proxy honors a token's project/session scope; trigger-session manager visibility no longer extends to session-bound agent tokens.
  • The browser test suite was broadcasting a deployment-protection bypass secret to third-party hosts on every run; it now authenticates once via a scoped cookie and the secret reaches no third party.
  • nodemailer upgraded across two majors to clear open advisories, including one high.

Internal

  • Roles have one store. The RBAC cutover made role_assignments the only authorization store — legacy tables became views, mirror triggers were dropped, and 3,100 lines of parallel code were deleted.
  • The production release gate is now reliable and fast. It runs as 6 API shards + 3 browser shards, cleans up its own test debris, tolerates a traffic-degraded-but-serving gateway, can be rehearsed against staging without opening a release PR, and the test client never replays a non-idempotent request through an edge-laundered error. Staging was right-sized for it, and a workflow-gating bug that had silently frozen the staging frontend for a week is fixed.
  • Container image builds are ~7× faster. Staging and dev images build natively per architecture with a registry layer cache (API image: ~3 minutes, was ~20), and the arm64 frontend image is now genuinely arm64.
  • CREATE INDEX CONCURRENTLY migrations ship with a lock_timeout that can land on a live database, and CI blocks any new one that sets it too low.

What's Changed

  • chore(release): VERSION → 0.13.1 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6569
  • docs(learnings): CIC under a 5s lock_timeout cannot land on live prod (v0.13.0 deploy incident) by @markokraemer in https://github.com/kortix-ai/suna/pull/6570
  • perf(sandbox): warm OpenCode instance in fast image by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6571
  • perf(sandbox): precompile fast OpenCode tools by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6572
  • infra(selfhost): bake a daily docker-prune timer into the box by @markokraemer in https://github.com/kortix-ai/suna/pull/6573
  • infra(selfhost): drop a deployment name from the prune comment by @markokraemer in https://github.com/kortix-ai/suna/pull/6574
  • perf(sandbox): align fast runtime base with Ubuntu by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6575
  • fix(slack): let another bot @-mention Kortix — the gate blocked every bot, not just us by @kubet in https://github.com/kortix-ai/suna/pull/6577
  • fix: every managed model works in every sandbox + session.error renders in place + keyboard scroll intent by @markokraemer in https://github.com/kortix-ai/suna/pull/6576
  • fix(sandbox): disable slower fast boot experiment by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6578
  • ci(release-gate): 6 api shards + serial-tail shard, 60-min cap, dry-run dispatch against staging by @markokraemer in https://github.com/kortix-ai/suna/pull/6580
  • test(ke2e): fix tests typecheck break from #6554 (iam.flow.ts:1739) by @markokraemer in https://github.com/kortix-ai/suna/pull/6581
  • test(ke2e): preflight tolerates traffic-degraded gateway, 180s deployed flow budget, no cross-shard shared-state collisions by @markokraemer in https://github.com/kortix-ai/suna/pull/6582
  • test(e2e): harden the recurring deployed-target browser specs; quarantine the non-deterministic ones into a nightly lane by @markokraemer in https://github.com/kortix-ai/suna/pull/6584
  • ci(release-gate): E2E_EXCLUDE_TAGS='@quarantine' on the browser shards (companion to #6584) by @markokraemer in https://github.com/kortix-ai/suna/pull/6587
  • Bound the per-session audit event rate so one runaway turn cannot take the API down by @markokraemer in https://github.com/kortix-ai/suna/pull/6583
  • fix(starter): reflector + reviewer agents run without approval prompts by @markokraemer in https://github.com/kortix-ai/suna/pull/6589
  • fix(api,ke2e): account deletion stops+removes every sandbox, revoked tokens stop authenticating, gc reclaims sessions+tokens by @markokraemer in https://github.com/kortix-ai/suna/pull/6586
  • Give CONCURRENTLY migrations a lock_timeout that can actually land on live prod by @markokraemer in https://github.com/kortix-ai/suna/pull/6588
  • fix(slack): a bot @-mention still did nothing — the identity gate refuses it, silently by @kubet in https://github.com/kortix-ai/suna/pull/6590
  • feat(connectors): one-click OAuth 2.1 for MCP servers (RFC 9728 + 8414 + 7591 + 8707) by @markokraemer in https://github.com/kortix-ai/suna/pull/6579
  • Canonical RBAC cutover: role_assignments is the only store — legacy tables → views, old engine + parity harnesses deleted by @markokraemer in https://github.com/kortix-ai/suna/pull/6594
  • fix(daemon): managed-model overlay never blocks the spawn; reconcile once before readiness by @markokraemer in https://github.com/kortix-ai/suna/pull/6592
  • fix(sessions): session sharing is the owner's call, not a manager's by @markokraemer in https://github.com/kortix-ai/suna/pull/6593
  • perf(sandbox): arm Platinum secrets during create by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6596
  • feat(email): one EMAIL_URL configures every email Kortix sends by @markokraemer in https://github.com/kortix-ai/suna/pull/6585
  • perf(sessions): stop paying two provider round trips to resume a stopped box by @markokraemer in https://github.com/kortix-ai/suna/pull/6595
  • fix(gateway): disable Bun idleTimeout stream-kill + Bedrock request/response fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/6599
  • fix(email): nodemailer 7.0.13 -> 9.0.5 (open advisories, incl. one high) by @markokraemer in https://github.com/kortix-ai/suna/pull/6597
  • test(ke2e): GW-1 tolerates a traffic-degraded gateway (aligns with #6582 preflight) by @markokraemer in https://github.com/kortix-ai/suna/pull/6603
  • docs(runbook): switching dev/staging/prod auth email onto the send-email hook by @markokraemer in https://github.com/kortix-ai/suna/pull/6601
  • fix(db): unblock dev deploys — reconcile retired role_permissions actions before the cutover's catalog-FK VALIDATE (runtime override) by @markokraemer in https://github.com/kortix-ai/suna/pull/6602
  • fix(slack): link-bot documented the one input form Slack cannot send by @kubet in https://github.com/kortix-ai/suna/pull/6606
  • docs(learnings): reconcile a retired constraint value by remapping, never deleting by @markokraemer in https://github.com/kortix-ai/suna/pull/6605
  • docs(runbook): hook-enable PATCH clears custom SMTP; promote-safety proof by @markokraemer in https://github.com/kortix-ai/suna/pull/6608
  • Never render sandbox readiness 503s as errors — waking state + retry across all surfaces by @markokraemer in https://github.com/kortix-ai/suna/pull/6610
  • refactor(gateway): AI-SDK-native /language-model path for lossless opencode passthrough (flag-gated, dormant) by @markokraemer in https://github.com/kortix-ai/suna/pull/6609
  • fix(slack): link-bot should not require owner/admin — it delegates only your own authority by @kubet in https://github.com/kortix-ai/suna/pull/6612
  • infra(staging): API 3×2vCPU/4GiB — the release gate saturates 2×1vCPU tasks by @markokraemer in https://github.com/kortix-ai/suna/pull/6613
  • feat(secrets): exposure/usage model — one enforcement mechanism on all providers by @markokraemer in https://github.com/kortix-ai/suna/pull/6611
  • refactor(gateway): wire API in-process gateway + session env to enable the native path (flag off) by @markokraemer in https://github.com/kortix-ai/suna/pull/6615
  • fix(slack): users.info was sent as JSON, so Slack never saw the user param by @kubet in https://github.com/kortix-ai/suna/pull/6616
  • fix(queue): forwarded prompts cannot strand, Stop cannot leak, bubbles keep one identity by @markokraemer in https://github.com/kortix-ai/suna/pull/6598
  • perf(api): take audit writes and the owner-email fan-out off the request path by @markokraemer in https://github.com/kortix-ai/suna/pull/6618
  • perf(ci): dev single-arch + layer cache + fix the frontend-skip by @markokraemer in https://github.com/kortix-ai/suna/pull/6619
  • perf(ci): build staging images natively per arch, with a layer cache by @markokraemer in https://github.com/kortix-ai/suna/pull/6622
  • fix(gateway): re-apply gateway-side provider shaping (codex store:false + 3 more) on the native path by @markokraemer in https://github.com/kortix-ai/suna/pull/6623
  • ci(dev): explicit Deploy Dev action instead of per-push storm by @markokraemer in https://github.com/kortix-ai/suna/pull/6621
  • fix(web): boot-time composer shows the session's real agent; panels survive boot→ready by @markokraemer in https://github.com/kortix-ai/suna/pull/6625
  • deploy-staging: Cloudflare auth failure must not freeze the staging frontend by @markokraemer in https://github.com/kortix-ai/suna/pull/6626
  • ci(dev): auto-deploy latest + cancel-stale (builds are fast now) by @markokraemer in https://github.com/kortix-ai/suna/pull/6627
  • ke2e: never replay a create through an edge-laundered 5xx (fixes all 22 release-gate failures) by @markokraemer in https://github.com/kortix-ai/suna/pull/6628
  • fix(web): boot composer reads the stashed agent pick before /start answers by @markokraemer in https://github.com/kortix-ai/suna/pull/6629
  • fix(gateway): upgrade @ai-sdk/amazon-bedrock 5.0.24→5.0.59 (parse redacted reasoning; fixes GPT-on-Bedrock 502) by @markokraemer in https://github.com/kortix-ai/suna/pull/6630
  • refactor(gateway): make the AI-SDK-native path the default everywhere (verified across all providers) by @markokraemer in https://github.com/kortix-ai/suna/pull/6631
  • Unblock the release browser gate, and stop leaking the Vercel bypass secret by @markokraemer in https://github.com/kortix-ai/suna/pull/6632
  • gate: 1 api worker per shard — 19 concurrent collapsed the staging write path by @markokraemer in https://github.com/kortix-ai/suna/pull/6634
  • gate: survive a transient 503 at world bootstrap; staging API floor 6 tasks by @markokraemer in https://github.com/kortix-ai/suna/pull/6636
  • gate: fix the four session residuals, and stop reruns colliding with themselves by @markokraemer in https://github.com/kortix-ai/suna/pull/6638
  • edge: laundered 503 parses as an AI-SDK error; Worker deploy survives a dead credential by @markokraemer in https://github.com/kortix-ai/suna/pull/6639
  • staging: raise the request deadline to 55s (cross-region DB) by @markokraemer in https://github.com/kortix-ai/suna/pull/6641
  • gate: boundary-asserting skips and named quarantines are legitimate --require-all outcomes by @markokraemer in https://github.com/kortix-ai/suna/pull/6643
  • gate: a one-step assert-then-skip flow counts as asserted by @markokraemer in https://github.com/kortix-ai/suna/pull/6645
  • IAM-12: poll effective-permission probes through the cross-task IAM cache window by @markokraemer in https://github.com/kortix-ai/suna/pull/6648
  • perf(boot): remove fresh-session Git network round trips by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6647
  • perf(boot): deliver exact Git delta during sandbox creation by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6650
  • docs(boot): record deployed Git timing by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6651
  • perf(boot): make Git bundle reuse durable by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6652
  • docs(boot): record durable Git cache benchmark by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6653
  • chore(runtime): bump OpenCode 1.17.11 -> 1.18.19 everywhere by @markokraemer in https://github.com/kortix-ai/suna/pull/6655

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.0...v0.13.1

August 19, 2026

Apps goes stable, Monitors lands experimental, and a big session-reliability pass

v0.13.0

New

  • Apps is now a stable feature — it moved out of experimental status and sits in the sidebar under Customize. Apps open instantly (no more loading flash), show their desktop layout on the preview card instead of mobile, and get their own IAM permissions and per-team scoping. Non-public Apps are now usable and honest about who can access them; self-host installs can serve Apps even though they can't publish to kortix.com.
  • Invite-time project grants — inviting someone to a project now grants both the account role and project access in one step, instead of two separate actions.
  • Settings unified into one tabbed panel, and the Billing pane was rebuilt with fewer boxes and a single credits card.
  • Chat input rebuilt to stop duplicate and lost sends; triple-tapping Escape now stops the agent even while you're typing.
  • Easy panel overhaul (the non-technical-user view): memory updates are now visible and plainly labelled, skill and task calls expand with live sub-agent activity, and a connect-apps strip and context-card actions were added.
  • Session usage modal reworked for clarity and speed; the model switcher and session usage view now show the real upstream provider instead of "Kortix".
  • Monitors (experimental): a new trigger type that runs on its own provisioned box, with its own CLI command group and MCP surface.
  • Network-boundary secrets on Daytona: an in-guest egress shim scopes a secret to the sandbox it was issued to, replacing the old operator-wide env var.
  • Presentations framework at /presentations, including a diagram-led security deck.
  • Added managed models: DeepSeek V4 Pro 0813 and Grok 4.6.
  • The CLI now shows the identity behind a minted agent token instead of reporting "not logged in".

Fixed

  • A cluster of stuck-session bugs: sessions could get wedged on boot with no retry, get stuck in a runaway self-repeating turn, show phantom interrupts, or strand mid-workspace-switch. A failed direct send now lands in the failed lane instead of disappearing, and prompts no longer get lost around session hand-off.
  • Session truth now reads from a durable server-side turn ledger over HTTP, replacing several client-side guesses about whether a session is still working.
  • Self-host: Storage now hands out public URLs instead of an internal Docker host address, and updates auto-heal from unlogged-table fork corruption that used to block them.
  • The gateway reports what an LLM request actually cost, not what Kortix billed; it no longer kills slow reasoning turns at a hard 90-second timeout, drops the trailing-assistant prefill that made strict backends fail, and its body size ceiling is raised to 1 GiB (was rejecting large multimodal requests).
  • MCP catalog discovery is now authenticated, and private sessions are no longer discoverable by other connectors.
  • Creating a duplicate App slug now returns 409 instead of 500.
  • The Vercel production frontend build now pins its runtime version so it can't get stranded on a stale one.
  • Cleaned up frontend error noise from bot/automation scripts and third-party scripts on Safari.
  • The reasoning-effort icon for Auto is now visually distinct, and agent names are capitalized consistently.

Notes

This release also includes a large internal hardening pass: an in-guest network-boundary/egress-secrets system, a warm-session simplification (session pooling now reuses ordinary sessions instead of a separate warm-session concept), a large API route-file split for maintainability, and expanded test coverage across sessions, monitors, and the deployed staging gate.

Also in this release

  • Security hardening — the sandbox egress pin now trusts the edge-populated client IP rather than spoofable forwarding headers; the App public proxy honors a token's project/session scope when authorizing App access; trigger-session manager visibility no longer extends to session-bound agent tokens; a deleted session is no longer readable by id.
  • Release-pipeline reliability — the release gate is sharded into parallel jobs, cleans up its own test debris, and runs against a right-sized staging; several long-standing test-suite defects that kept the gate red were fixed.

What's Changed

  • chore(release): VERSION → 0.12.9 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6399
  • test(deployed): make the staging release gate resilient to origin load + dead email key by @markokraemer in https://github.com/kortix-ai/suna/pull/6397
  • fix(deploy-prod): pin the Vercel RUNTIME version env so the prod FE isn't stranded by @markokraemer in https://github.com/kortix-ai/suna/pull/6401
  • fix(web): de-noise three Better Stack frontend prod error classes (OneTrust JSON parse, Firefox DOM mutation, WebSocket Failed to send message) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6398
  • test(deployed): serialize staging lanes + self-heal AgentMail quota (gate stabilization r2) by @markokraemer in https://github.com/kortix-ai/suna/pull/6404
  • feat: tell the agent what the network boundary is doing by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6406
  • fix: the connectors MCP server never started; add a broker tool to it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6407
  • feat: turn the connectors MCP face on for every session by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6408
  • test(deployed): retry transient gateway errors in ALL clients (fixture clients too) by @markokraemer in https://github.com/kortix-ai/suna/pull/6411
  • fix(web): suppress bot/automation webdriver redefine + transient signal timed out noise (BS ee14e84d…, 73e683c3…) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6410
  • feat: Monitors — 24/7 watchers as a third trigger type (experimental flag) by @markokraemer in https://github.com/kortix-ai/suna/pull/6413
  • test(deployed): send Vercel SSO bypass header in the browser lane (+ weak-ETag tolerance) by @markokraemer in https://github.com/kortix-ai/suna/pull/6415
  • feat(web): unify settings into one tabbed panel by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6396
  • test(deployed): 90m timeout + cap sandbox concurrency (final gate stabilization) by @markokraemer in https://github.com/kortix-ai/suna/pull/6418
  • fix(monitors): monitor-box git-proxy access + stale-agent recycle by @markokraemer in https://github.com/kortix-ai/suna/pull/6417
  • feat(web): show when each user message was sent by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6420
  • fix(monitors): stale-agent probe uses resolveEndpoint (authed edge) by @markokraemer in https://github.com/kortix-ai/suna/pull/6421
  • test(deployed): serialize the two staging lanes (Daytona provisioning throughput) by @markokraemer in https://github.com/kortix-ai/suna/pull/6422
  • enh(web): send all queued messages on the next turn by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6423
  • docs: broker end-to-end result, and the premise it disproved by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6409
  • fix: mint the session handle row for network-boundary secrets by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6425
  • feat(web): dot-matrix busy glyphs and conversation density by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6426
  • feat(models): add managed Grok 4.6 by @markokraemer in https://github.com/kortix-ai/suna/pull/6427
  • feat(secrets): boundary delivery is a project flag, not an operator env var by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6428
  • fix(secrets): close the audit findings against the boundary-shim flag by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6430
  • feat(models): add managed DeepSeek V4 Pro 0813 by @markokraemer in https://github.com/kortix-ai/suna/pull/6432
  • test(deployed): revert serialize — RUN-* timeouts were a transient staging outage by @markokraemer in https://github.com/kortix-ai/suna/pull/6434
  • fix(self-host): auto-heal unlogged-table fork corruption that blocks updates by @markokraemer in https://github.com/kortix-ai/suna/pull/6433
  • fix(agent-tunnel): re-authorize when a saved token is rejected by @markokraemer in https://github.com/kortix-ai/suna/pull/6431
  • fix(compliance): resolve Drata IaC critical/high findings by @markokraemer in https://github.com/kortix-ai/suna/pull/6392
  • feat: keep a warm session ready while a user is present on a project by @markokraemer in https://github.com/kortix-ai/suna/pull/6437
  • fix(runtime): detect, report and survive a provider losing a session's sandbox by @markokraemer in https://github.com/kortix-ai/suna/pull/6438
  • fix(web): de-noise Safari frameless third-party 'Can't find variable' ReferenceError by @agent-kortix in https://github.com/kortix-ai/suna/pull/6429
  • fix(api): never warm into the last concurrent-session slot by @markokraemer in https://github.com/kortix-ai/suna/pull/6439
  • feat(web): presentations framework at /presentations + diagram-led security deck by @markokraemer in https://github.com/kortix-ai/suna/pull/6440
  • fix(web): end a workspace switch instead of stranding it by @markokraemer in https://github.com/kortix-ai/suna/pull/6441
  • test(e2e): cover repeated workspace switching in the browser lane by @markokraemer in https://github.com/kortix-ai/suna/pull/6442
  • fix(iam): report the constraint that actually denied a project request by @markokraemer in https://github.com/kortix-ai/suna/pull/6443
  • fix(meta): stop the per-prompt re-mint from destroying the coordinator's grant by @markokraemer in https://github.com/kortix-ai/suna/pull/6444
  • refactor(sessions): a warm session is an ordinary session (-1,446 lines) by @markokraemer in https://github.com/kortix-ai/suna/pull/6445
  • refactor(api): split r7.ts (3,499 lines) into nine focused route modules by @markokraemer in https://github.com/kortix-ai/suna/pull/6446
  • feat(sandbox): the in-guest egress shim — network boundary without Platinum by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6447
  • fix(secrets): the boundary echo guidance was lying to shim-backed agents by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6448
  • fix(sandbox): the shim CA was unusable by python — missing key identifiers by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6449
  • docs: network-boundary secrets work on Daytona — measured, not argued by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6450
  • feat(secrets): bind a session credential to the sandbox it was issued to by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6451
  • docs: the session credential is bound to its sandbox — verified on dev by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6452
  • enh: rebuild the chat input, end duplicate and lost sends by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6314
  • fix(api): never render a boot failure as a provider-side loss by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6456
  • Remove the agent-switch 409, and fix file upload end to end by @markokraemer in https://github.com/kortix-ai/suna/pull/6457
  • feat(apps): real permissions, resource controls, E2B parity and self-host hosting by @markokraemer in https://github.com/kortix-ai/suna/pull/6453
  • fix(self-host): hand out public Storage URLs, not the internal Docker host by @markokraemer in https://github.com/kortix-ai/suna/pull/6461
  • Apps: show only what you can open, and open it in place by @markokraemer in https://github.com/kortix-ai/suna/pull/6462
  • fix(apps): return 409 (not 500) on duplicate App slug by @markokraemer in https://github.com/kortix-ai/suna/pull/6465
  • fix(api): don't gate turn-stream lifecycle reports on connector.write by @markokraemer in https://github.com/kortix-ai/suna/pull/6464
  • enh(web): rework session usage modal for clarity and speed by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6459
  • fix(web): align the Apps sidebar row with the group it moved into by @markokraemer in https://github.com/kortix-ai/suna/pull/6463
  • fix(web): never land existing users on "No workspace yet" by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6460
  • feat: personalize project-home starter prompts by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6467
  • fix(cli): show the minted agent token's identity, not "not logged in" by @markokraemer in https://github.com/kortix-ai/suna/pull/6470
  • fix(apps): frame self-host App previews from the operator frontend origin by @markokraemer in https://github.com/kortix-ai/suna/pull/6471
  • enh(web): overhaul the easy panel for non-technical users by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6472
  • fix(apps): don't 500 App teardown when a runtime's provider is disabled/retired by @markokraemer in https://github.com/kortix-ai/suna/pull/6474
  • fix(gateway): stop killing slow reasoning turns at 90,000ms by @markokraemer in https://github.com/kortix-ai/suna/pull/6473
  • docs(learnings): a resource-scaled timeout moves the cliff, never removes it by @markokraemer in https://github.com/kortix-ai/suna/pull/6476
  • fix: end phantom interrupts, stop replays, slow switches by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6468
  • feat(triggers): control created session access by @markokraemer in https://github.com/kortix-ai/suna/pull/6477
  • fix(triggers): enforce private session discovery by @markokraemer in https://github.com/kortix-ai/suna/pull/6479
  • fix(sandbox): renew lifecycle from active OpenCode turns by @markokraemer in https://github.com/kortix-ai/suna/pull/6480
  • fix(sandbox): harden provider lifecycle renewal by @markokraemer in https://github.com/kortix-ai/suna/pull/6481
  • fix(sandbox): revoke turn authority on stop by @markokraemer in https://github.com/kortix-ai/suna/pull/6482
  • fix(sandbox): renew active turns on fast cadence by @markokraemer in https://github.com/kortix-ai/suna/pull/6484
  • fix: close three prompt-loss holes around session hand-off by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6486
  • fix: stop home sends landing in used warm sessions by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6485
  • fix(web): resolve react-doctor bug, security, perf findings by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6487
  • Use a minimal icon for shared sessions by @markokraemer in https://github.com/kortix-ai/suna/pull/6488
  • fix(llm-gateway): drop trailing assistant prefill so strict backends stop failing by @markokraemer in https://github.com/kortix-ai/suna/pull/6489
  • enh(web): overhaul the easy panel for non-technical users by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6475
  • fix(llm-gateway): stop 413-ing large multimodal requests; raise body ceiling to 1 GiB by @markokraemer in https://github.com/kortix-ai/suna/pull/6490
  • Apps: open an App instantly, and stop hiding Apps inside the SDK docs by @markokraemer in https://github.com/kortix-ai/suna/pull/6492
  • fix(sdk): bound the prompt busy override and un-park status reconciliation by @markokraemer in https://github.com/kortix-ai/suna/pull/6494
  • fix(gateway): report what an LLM request actually cost you, not what Kortix billed by @markokraemer in https://github.com/kortix-ai/suna/pull/6491
  • fix(web): make triple-ESC stop the agent from inside the composer by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6493
  • fix(sdk): stop pinning content-length when forwarding a request by @markokraemer in https://github.com/kortix-ai/suna/pull/6495
  • fix(manifest): refuse reserved App env names in validate, not only at deploy by @markokraemer in https://github.com/kortix-ai/suna/pull/6496
  • Connectors: no Pipedream on this deployment, no Discovery tab by @markokraemer in https://github.com/kortix-ai/suna/pull/6498
  • fix(web): drop the Apps subtitle and stop Learn more pressing the edge by @markokraemer in https://github.com/kortix-ai/suna/pull/6499
  • Apps: show the App's desktop layout on a card, not its mobile one by @markokraemer in https://github.com/kortix-ai/suna/pull/6500
  • fix(web): bring the permission-approval card onto the design system by @markokraemer in https://github.com/kortix-ai/suna/pull/6501
  • fix: adversarial-audit hardening of the stuck-session fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/6497
  • fix(web): show real upstream provider, not "Kortix", in session usage + model switcher by @markokraemer in https://github.com/kortix-ai/suna/pull/6504
  • Revamp Customize IA, permissions, and shared page shells by @markokraemer in https://github.com/kortix-ai/suna/pull/6503
  • fix(members): repair Groups/Roles links + multi-select grant dialogs by @markokraemer in https://github.com/kortix-ai/suna/pull/6505
  • fix(web): distinct Auto reasoning-effort icon + capitalize agent names by @markokraemer in https://github.com/kortix-ai/suna/pull/6508
  • fix(connectors): authenticate MCP catalog discovery by @markokraemer in https://github.com/kortix-ai/suna/pull/6507
  • feat(iam): remove duplicate Access cards, fix Customize discoverability by @markokraemer in https://github.com/kortix-ai/suna/pull/6506
  • fix: bound two stuck-runtime states — a wedged boot with no retry, and a runaway self-repeating turn by @markokraemer in https://github.com/kortix-ai/suna/pull/6509
  • feat(iam): invite-time project grants — one invite, account role + project access by @markokraemer in https://github.com/kortix-ai/suna/pull/6510
  • feat(secrets): make network-boundary parity across sandbox providers contractual by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6511
  • Server-truth M1: turn lifecycle moves to the control plane; the client stops guessing by @markokraemer in https://github.com/kortix-ai/suna/pull/6512
  • fix(web): unify "No second factor enrolled" alert tone + icon by @markokraemer in https://github.com/kortix-ai/suna/pull/6513
  • docs: the egress pin survives a stop/resume — measured on both shim providers by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6514
  • fix(web): stop the animated logo splash on account/group navigation by @markokraemer in https://github.com/kortix-ai/suna/pull/6515
  • feat(web): assign a custom role from inside a group, clarify Agent copy by @markokraemer in https://github.com/kortix-ai/suna/pull/6516
  • fix(daemon): do not arm the in-guest shim where a provider edge owns the destination by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6517
  • docs(runbook): enabling a sandbox provider is one atomic secret edit by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6518
  • enh(web): rework the public share page chrome by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6519
  • fix(api): a spawned sub-session inherits its parent's sharing, not private by @markokraemer in https://github.com/kortix-ai/suna/pull/6521
  • iam: strip Agents/Connectors/Skills/Customize from the member floor role by @markokraemer in https://github.com/kortix-ai/suna/pull/6522
  • fix(gateway): log the full request/response body, never a capped preview by @markokraemer in https://github.com/kortix-ai/suna/pull/6523
  • feat(web): unify secret Delivery + "Used by" into one Access picker by @markokraemer in https://github.com/kortix-ai/suna/pull/6525
  • Session truth M1.5: queue forwards between turns, first prompt is a durable row, dead-code sweep, sub-session integrity by @markokraemer in https://github.com/kortix-ai/suna/pull/6527
  • refactor(github): prove account-linking identity via the App's own OAuth, not Supabase by @markokraemer in https://github.com/kortix-ai/suna/pull/6526
  • Access control: one hub, one dialog, one row, one picker — agents deny-by-default, Editor removed, tokens IA by @markokraemer in https://github.com/kortix-ai/suna/pull/6531
  • feat(worktree): nuke --all with time rules for bulk teardown by @markokraemer in https://github.com/kortix-ai/suna/pull/6529
  • enh(web): bake a 110% UI scale into the default by @markokraemer in https://github.com/kortix-ai/suna/pull/6524
  • fix(desktop): answer HTTP Basic challenges instead of rendering a dead 401 by @markokraemer in https://github.com/kortix-ai/suna/pull/6455
  • chore(deps): bump pnpm/action-setup from 4 to 6 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6343
  • chore(deps): bump bridgecrewio/checkov-action from 12.3114.0 to 12.3117.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6342
  • chore(deps): bump actions/attest-build-provenance from 4.1.1 to 4.2.2 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6341
  • chore(deps): bump github/codeql-action from 4.37.4 to 4.37.7 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6340
  • chore(deps): bump github/codeql-action/upload-sarif from 4.37.4 to 4.37.7 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6339
  • chore(deps): bump golang from 1.25-bookworm to 1.26-bookworm in /apps/api by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6338
  • docs(monitors): internal shipping/verification/ops/removal record by @markokraemer in https://github.com/kortix-ai/suna/pull/6436
  • fix(billing): one grant idempotency key per subscription activation by @markokraemer in https://github.com/kortix-ai/suna/pull/6534
  • test(ke2e): GW-13 exhausts /v1/usage group_by enum, row shapes, malformed timestamps, empty window by @agent-kortix in https://github.com/kortix-ai/suna/pull/5254
  • fix: image/video show tool now wraps in ViewerFrame with toolbar actions by @agent-kortix in https://github.com/kortix-ai/suna/pull/6033
  • feat(selfhost): serve deployed Apps through the bundled Caddy ingress by @markokraemer in https://github.com/kortix-ai/suna/pull/6469
  • chore(deps): bump pypdf from 6.14.2 to 6.15.0 in /packages/starter/templates/general-knowledge-worker/.kortix/opencode/skills/presentations/scripts by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/6262
  • feat(platinum-provider): idempotent create dedup + decoupled build-size knob by @allenabraham999 in https://github.com/kortix-ai/suna/pull/5411
  • docs(learnings): correct the tests-release entry; add the half-deployed-staging rule by @markokraemer in https://github.com/kortix-ai/suna/pull/6537
  • fix(web): keep capability-tab-routes server-safe — unblocks Deploy Dev frontend build by @markokraemer in https://github.com/kortix-ai/suna/pull/6533
  • fix(worktree): create --branch checks out a remote-only branch instead of forking HEAD by @markokraemer in https://github.com/kortix-ai/suna/pull/6536
  • feat(gateway): per-project OTLP trace export + Observability tab by @markokraemer in https://github.com/kortix-ai/suna/pull/4987
  • Revert "feat(gateway): per-project OTLP trace export + Observability tab (#4987)" by @markokraemer in https://github.com/kortix-ai/suna/pull/6538
  • test(apps): APP-4 teammate is a project member (editor role removed) by @markokraemer in https://github.com/kortix-ai/suna/pull/6532
  • fix(iam): don't cache empty agent-grant maps — grants visible on all replicas immediately by @markokraemer in https://github.com/kortix-ai/suna/pull/6535
  • Queue: one prompt per turn, chained on turn end, <1s delivery, instant Enter by @markokraemer in https://github.com/kortix-ai/suna/pull/6530
  • Revert "enh(web): bake a 110% UI scale into the default (#6524)" by @markokraemer in https://github.com/kortix-ai/suna/pull/6539
  • test(release-gate): make the gate passable — drop 5 permanent todo stubs, fix 7 stale/over-strict deployed-target flows by @markokraemer in https://github.com/kortix-ai/suna/pull/6542
  • perf(ke2e): overlap the serial lane, stop retrying timeouts, fail fast on funding, backoff+breaker in the client by @markokraemer in https://github.com/kortix-ai/suna/pull/6543
  • ci(release-gate): shard into parallel api/browser jobs, sweep test debris pre/post-run, assert browser env up front by @markokraemer in https://github.com/kortix-ai/suna/pull/6545
  • infra(staging): right-size for the release gate (2 tasks, on-demand base, bigger box), record DB tier, let CI see real origin status at the edge by @markokraemer in https://github.com/kortix-ai/suna/pull/6544
  • fix(security): close 3 Strix findings — egress-pin spoofing, trigger-session manager override, App proxy token scope by @markokraemer in https://github.com/kortix-ai/suna/pull/6541
  • test(ke2e): declare daytona on 3 flows that boot a real sandbox (P1.6) by @markokraemer in https://github.com/kortix-ai/suna/pull/6546
  • test(ke2e): send the edge CI-passthrough header so the release gate sees real origin status by @markokraemer in https://github.com/kortix-ai/suna/pull/6547
  • infra(ecs-api): force_new_deployment when the capacity-provider strategy changes (fixes staging TF apply) by @markokraemer in https://github.com/kortix-ai/suna/pull/6549
  • test(ke2e): fix the two runtime defects that failed the first sharded release-gate run by @markokraemer in https://github.com/kortix-ai/suna/pull/6552
  • Canonical RBAC: one model (role_assignments), one engine (authorize), one write path (assignRole) — dual-read window by @markokraemer in https://github.com/kortix-ai/suna/pull/6554
  • ci(release-gate): the pre-run sweep can never skip the shards by @markokraemer in https://github.com/kortix-ai/suna/pull/6556
  • fix(iam): don't cache empty agent object-grant maps (canonical engine) — grants take effect on all replicas immediately by @markokraemer in https://github.com/kortix-ai/suna/pull/6558
  • fix(iam): GET /projects/:id/group-grants requires project.members.manage (Strix MEDIUM) by @markokraemer in https://github.com/kortix-ai/suna/pull/6560
  • ci(release-gate): halve the shard fleet (26→15 workers) and retry a timed-out flow once by @markokraemer in https://github.com/kortix-ai/suna/pull/6561
  • feat(sandbox): add flagged fast cold boot runtime by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6562
  • fix(sandbox): harden lazy tool dispatch by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6565
  • fix(dev): apply fast cold boot flag to ECS tasks by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6566
  • fix(api): ship fast runtime build artifacts by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6567

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.12.8...v0.13.0

August 12, 2026

Entitlement overrides, act-as support sessions, and one-call agent secret grants

v0.12.8

New

  • Act-as for support — platform admins can open a customer account for up to one hour, with a visible banner and full auditing. Anything that would outlive the hour — tokens, memberships, invites, SSO providers, public shares, tunnels, agent scope changes — is refused during the session.
  • Per-account entitlement overrides — operators grant or extend individual entitlements per account, each with an optional expiry, from a new admin override console. Expired overrides stop applying on their own.
  • One plan catalog — plans now resolve through a single catalog and resolver across API, SDK and web. The duplicate frontend tier catalogs and the "· legacy" plan label are gone.
  • Grant a secret to an agent in one call — a new API route grants an agent access to a secret, and the web app offers that grant directly from the warning that reports the missing access.
  • Session overrides in one place — the Scope panel is replaced by a single overrides popover: agent, model, sandbox and connector overrides together, labels grounded in the agent's real defaults, and a reset that is always reachable.
  • Managed model lineup refresh — Muse Spark 1.2, MiniMax M3 and GPT-5.6 Luna join GLM 5.2, and DeepSeek V4 Flash becomes the platform default.
  • Sandboxes stay current — every deploy serves its CLI and managed skills at /v1/runtime-assets, and sandboxes reconcile against it on start, restart and resume.

Improved

  • Project sessions are grouped by last activity instead of creation date.
  • Account settings are reachable from the user menu.
  • Model errors keep their upstream cause through gateway fallbacks, and context overflow is reported consistently — including after a fallback.
  • Managed-model capabilities reported by the gateway now come from real pricing data.
  • An outdated CLI now gets a clear "update your CLI" warning on the connector routes instead of a raw 404.

Fixed

  • Two ways the session message queue could stall.
  • Saving session scope without touching connectors no longer writes a connector override, and a saved agent secret selection is retained.
  • Secret delivery on Platinum sandboxes resolves replicas reliably and arms the secrecy boundary within the provider's real timing budget, without re-arming on every turn.

Security and compliance

  • The impersonation deny-list also covers agent-governance writes (agents/:name/scope, secrets/:id/grant), connector and channel management, and setup-link minting — all closed during review, before release.
  • MFA enforcement for IAM users, WAF attached to the web load balancers, load-balancer log bucket versioning, and a tightly scoped CI Terraform role.

Internal

  • Terraform for dev and prod now applies from CI behind per-environment OIDC roles, with drift detection re-registered.
  • Production deploys stamp the frontend with the release version and no longer allow mixed frontend/API states; migrations with blocking backfills are rejected at lint time.
  • Full-stack PR previews run in warm sandboxes, and the local test gates were stabilized.

What's Changed

  • chore(release): VERSION → 0.12.8 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6350
  • feat(llm-catalog): add Muse Spark 1.2, MiniMax M3, GPT-5.6 Luna; DeepSeek V4 Flash default by @markokraemer in https://github.com/kortix-ai/suna/pull/6352
  • test: run full-stack PR previews in warm sandboxes by @markokraemer in https://github.com/kortix-ai/suna/pull/6347
  • fix(ci): install Bun for preview controller by @markokraemer in https://github.com/kortix-ai/suna/pull/6354
  • fix(llm-gateway): serve real managed-model capabilities via pricingRef by @markokraemer in https://github.com/kortix-ai/suna/pull/6355
  • fix(web): remove two ways the message queue can stall by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6349
  • fix(test): separate Platinum cold and restore budgets by @markokraemer in https://github.com/kortix-ai/suna/pull/6356
  • fix(tests): scope preview idempotency to workflow run by @markokraemer in https://github.com/kortix-ai/suna/pull/6360
  • fix(web,api): session scope defaults to Project default + unified overrides popover by @markokraemer in https://github.com/kortix-ai/suna/pull/6361
  • fix(sandbox): always-latest kortix CLI + managed skills on every session start/restart by @markokraemer in https://github.com/kortix-ai/suna/pull/6359
  • feat(infra): CI-applied Terraform — reusable guarded apply, per-env OIDC roles, drift coverage by @markokraemer in https://github.com/kortix-ai/suna/pull/6358
  • fix(tests): bake Docker Compose into preview workers by @markokraemer in https://github.com/kortix-ai/suna/pull/6363
  • fix(web): group sessions by last activity, not creation by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6357
  • fix(llm): preserve upstream failure chains by @markokraemer in https://github.com/kortix-ai/suna/pull/6362
  • fix(web): ground session-override labels in system truth + quiet trigger by @markokraemer in https://github.com/kortix-ai/suna/pull/6364
  • fix(ci): force gateway in full dev deploys by @markokraemer in https://github.com/kortix-ai/suna/pull/6365
  • test(infra): align the preview runtime contract test with the sandbox-preview architecture by @markokraemer in https://github.com/kortix-ai/suna/pull/6366
  • billing: fix admin primitives — enterprise flag, expiring trial grants, monthly re-grant, member-role control by @markokraemer in https://github.com/kortix-ai/suna/pull/6367
  • fix(gateway): normalize message-only context overflow by @markokraemer in https://github.com/kortix-ai/suna/pull/6368
  • Stabilize preview and full local test gates by @markokraemer in https://github.com/kortix-ai/suna/pull/6369
  • fix(cli): suppress browser launches in CI by @markokraemer in https://github.com/kortix-ai/suna/pull/6370
  • fix(deploy-prod): gate the dead us-east-2 shadow lane behind ENABLE_US_SHADOW_DEPLOY by @markokraemer in https://github.com/kortix-ai/suna/pull/6372
  • ci(terraform): auto-apply environments/dev and environments/prod by @markokraemer in https://github.com/kortix-ai/suna/pull/6373
  • fix(web): overrides trigger icon-only, save closes panel, agent-default labels, sandbox chooser in panel by @markokraemer in https://github.com/kortix-ai/suna/pull/6371
  • billing: plan catalog + pure resolver (PR2 — zero consumers switched) by @markokraemer in https://github.com/kortix-ai/suna/pull/6375
  • fix(web): suppress Paper Shaders library-guard 'this.gl is null' noise (BS f0c8c422) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6374
  • billing: one resolved plan view everywhere — kill the '· legacy' label (PR3) by @markokraemer in https://github.com/kortix-ai/suna/pull/6376
  • fix(ci): stop the dev deploy cancelling its own API build by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6377
  • feat: grant a secret to an agent from the warning that reports it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6378
  • Keep saved agent secret selection in sync by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6379
  • billing: provider-vs-admin write ownership for credit_accounts (PR4) by @markokraemer in https://github.com/kortix-ai/suna/pull/6380
  • fix: a network-boundary secret made every agent turn fail by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6381
  • fix(secrets): give the boundary arm a budget the provider can meet by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6384
  • billing: per-account overrides with expiry + compute pricing + admin override console (PR5) by @markokraemer in https://github.com/kortix-ai/suna/pull/6383
  • fix(compliance): enforce ALB log bucket versioning (DCF-78) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6382
  • billing: kill the duplicate frontend tier catalogs (PR7) by @markokraemer in https://github.com/kortix-ai/suna/pull/6385
  • billing: act-as impersonation for platform admins (PR6) by @markokraemer in https://github.com/kortix-ai/suna/pull/6386
  • fix(api): deny agent-scope and secret-grant writes during impersonation by @markokraemer in https://github.com/kortix-ai/suna/pull/6388
  • fix(api): deny connector, channel-connect and setup-link writes during impersonation by @markokraemer in https://github.com/kortix-ai/suna/pull/6390
  • fix(ci): raise tests-release timeout to 45m so the full suite can finish by @markokraemer in https://github.com/kortix-ai/suna/pull/6393
  • fix(ci): raise tests-release timeout to 60m (measured ~47m real runtime) by @markokraemer in https://github.com/kortix-ai/suna/pull/6394

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.12.7...v0.12.8

August 10, 2026

Agent-bound sandboxes, terminal attach, and feature flags

v0.12.7

New

  • Your terminal is now a first-class way to work with an agent: kortix connect opens a session picker and attaches a full terminal UI to any running session, and can create a session and connect in one step. Bare kortix shows the landing screen again.
  • Feature flags: one gating primitive across API, web, and CLI. Disabled features answer with a clear feature_disabled error everywhere, and each project gets a dedicated Feature flags section under Customize.
  • Network-boundary secrets: secrets can now be marked for delivery only inside the sandbox network boundary, enforced per provider, configurable from web and CLI. Protected Platinum credentials sync automatically, misconfigurations are caught at save time instead of at boot, and the UI only offers delivery modes the project can honour.
  • A workspace switcher and a /new create page: switch workspaces from anywhere, reach account settings from the switcher, and create projects from one place.
  • Connector approvals are reviewed inline in the session, and connector setup finishes through one atomic path — no more half-finished connections when a webhook and a redirect race each other.
  • The starter ships a continual-harness skill: agent scaffolding that reviews its own sessions and refines itself over time.
  • Live session reload: when a session restarts, the UI now streams the reload progress instead of going quiet.

Improved

  • Sandbox lifetime is now bound to the agent. Active turns keep compute alive; finished or inactive sessions contract to a short retrieval window; every stop records why it happened. Wake billing starts only after the provider confirms the machine is actually running — concurrent and failed wakes no longer bill.
  • Session turns read in plain language, and rendering them costs far less.
  • Connector search covers the whole Pipedream catalogue, with categories filtered server-side. New sessions pick up server-resolved connector defaults.
  • Computer profiles are bound per machine, personal machines are allowed in project profiles, and the Computer Tunnel is hardened with computer-use restored.
  • Session titles converge on the runtime title everywhere — no more three names for one session.
  • Workspace file and spreadsheet reads retry during sandbox startup instead of failing on the first try.
  • Audit trails reconstruct complete session integrity chains, and runtime state survives provider restarts.

Fixed

  • A turn that is still being written can no longer be aborted mid-write, and "Interrupted" is only shown when a turn was actually interrupted.
  • The session error card no longer blinks after giving up, no longer appears while the runtime is intentionally parked, and a temporary 503 during startup is no longer treated as a failure.
  • The thinking shimmer only animates the thought the model is still writing.
  • Starter agent templates fetch managed skills through the CLI instead of assuming they are on disk.
  • A building sandbox shows a Details action instead of a broken Retry.
  • Inline content previews render again.
  • The public unauthenticated /review prototype page is gone, a connector URL parsing denial-of-service is eliminated, SES mail now runs on a task role instead of an IAM user, and production deploys refuse a mismatched Supabase auth configuration.

What's Changed

  • chore(release): VERSION → 0.12.7 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6268
  • fix(audit): make OpenCode relay spool writable by @markokraemer in https://github.com/kortix-ai/suna/pull/6270
  • fix(web): hide Apps discovery until the project enables the apps experiment by @markokraemer in https://github.com/kortix-ai/suna/pull/6271
  • fix(audit): persist runtime state outside provider tmpfs by @markokraemer in https://github.com/kortix-ai/suna/pull/6272
  • fix(runtime): parse CRLF OpenCode event frames by @markokraemer in https://github.com/kortix-ai/suna/pull/6274
  • fix(web): remove public unauthenticated /review prototype page by @markokraemer in https://github.com/kortix-ai/suna/pull/6275
  • feat(api): feature-flag core — declared enforcement + standard feature_disabled gate by @markokraemer in https://github.com/kortix-ai/suna/pull/6277
  • fix(audit): return complete session integrity chains by @markokraemer in https://github.com/kortix-ai/suna/pull/6278
  • feat(web,sdk): feature-flag surface — one gating primitive, dedicated Customize section by @markokraemer in https://github.com/kortix-ai/suna/pull/6279
  • feat(cli,tests,docs): feature_disabled everywhere — CLI message, drift pin, flags UI spec by @markokraemer in https://github.com/kortix-ai/suna/pull/6280
  • fix(sandbox): bind lifecycle and billing to agent activity by @markokraemer in https://github.com/kortix-ai/suna/pull/6281
  • feat(starter): continual harness — self-refining agent scaffolding (arXiv 2605.09998) by @markokraemer in https://github.com/kortix-ai/suna/pull/6282
  • fix(sdk): eliminate connector URL regex denial of service by @markokraemer in https://github.com/kortix-ai/suna/pull/6284
  • fix(web): select connector defaults for new sessions by @markokraemer in https://github.com/kortix-ai/suna/pull/6286
  • Refactor computers into per-machine connector profiles by @markokraemer in https://github.com/kortix-ai/suna/pull/6287
  • fix(web): keep connector defaults server-resolved by @markokraemer in https://github.com/kortix-ai/suna/pull/6288
  • fix(compliance): add MFA enforcement denial policy for IAM users (DCF-67) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6289
  • fix(web): de-noise CAPTCHA interceptor widgetId race from extension by @agent-kortix in https://github.com/kortix-ai/suna/pull/6290
  • refactor(connectors): group assigned computers in profiles by @markokraemer in https://github.com/kortix-ai/suna/pull/6292
  • fix(connectors): isolate legacy computer aggregate by @markokraemer in https://github.com/kortix-ai/suna/pull/6293
  • feat(secrets): enforce network-boundary delivery by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6297
  • feat(web,api,sdk): workspace switcher and /new create page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6276
  • fix(computers): allow personal machines in project profiles by @markokraemer in https://github.com/kortix-ai/suna/pull/6299
  • Publish agent tunnel with platform releases by @markokraemer in https://github.com/kortix-ai/suna/pull/6301
  • fix(api,sdk,web): converge session titles on the runtime title everywhere by @markokraemer in https://github.com/kortix-ai/suna/pull/6302
  • Remove agent tunnel keep-awake mode by @markokraemer in https://github.com/kortix-ai/suna/pull/6304
  • fix(web): restore preview for inline content artifacts by @agent-kortix in https://github.com/kortix-ai/suna/pull/6300
  • fix(web): building sandbox alert shows Details action instead of Retry build by @markokraemer in https://github.com/kortix-ai/suna/pull/6306
  • fix(connectors): search the whole Pipedream catalogue, filter categories server-side by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6307
  • feat(web): review connector approvals inline in the session by @markokraemer in https://github.com/kortix-ai/suna/pull/6311
  • fix(api,sdk,web): unify connector finalize into one atomic path; webhook auxiliary by @markokraemer in https://github.com/kortix-ai/suna/pull/6312
  • fix(agent-tunnel): harden Computer Tunnel and restore CUA by @markokraemer in https://github.com/kortix-ai/suna/pull/6313
  • feat(web,sdk): plain-language turn UI and a large render-cost cut by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6309
  • fix(tunnel): record signed heartbeat pongs by @markokraemer in https://github.com/kortix-ai/suna/pull/6315
  • feat(cli): bare kortix attaches the OpenCode TUI to a session (managed binary + picker) by @markokraemer in https://github.com/kortix-ai/suna/pull/6317
  • fix(web): retry all workspace file reads during sandbox startup by @agent-kortix in https://github.com/kortix-ai/suna/pull/6310
  • feat(cli): connect picker under connect (bare kortix = landing again) + create-and-connect by @markokraemer in https://github.com/kortix-ai/suna/pull/6318
  • feat(web): deploy frontend and PR previews on ECS by @markokraemer in https://github.com/kortix-ai/suna/pull/6319
  • test(ke2e): add fast local flow runner by @markokraemer in https://github.com/kortix-ai/suna/pull/6260
  • fix(compliance): replace SES IAM user with ECS task role (DCF-71) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6295
  • feat(web): expose session restart actions in command palette by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6321
  • fix(daemon): never abort a turn that is still being written by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6322
  • feat: let agents reconcile branch conflicts before reload by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6323
  • ci: run each test suite once by @markokraemer in https://github.com/kortix-ai/suna/pull/6324
  • fix(web): "Interrupted" must mean interrupted, not "the word abort appeared" by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6325
  • Show live session config reload progress by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6326
  • infra: retire unused QA report portal by @markokraemer in https://github.com/kortix-ai/suna/pull/6328
  • ci: remove completed QA teardown workflow by @markokraemer in https://github.com/kortix-ai/suna/pull/6333
  • infra: cut dev and previews over to ECS web by @markokraemer in https://github.com/kortix-ai/suna/pull/6332
  • fix(starter): route managed-skill references through kortix-cli + live kortix skills get by @markokraemer in https://github.com/kortix-ai/suna/pull/6330
  • fix: network-boundary secrets fail loudly instead of silently by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6334
  • fix(web): the session header shows the session name, not opencode's title by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6327
  • fix(infra): preserve canonical dev DNS metadata by @markokraemer in https://github.com/kortix-ai/suna/pull/6336
  • fix(compliance): associate ECS web ALBs with WAF (DCF-88) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6344
  • test: sample full-stack test report artifacts by @markokraemer in https://github.com/kortix-ai/suna/pull/6337
  • fix(release): gate prod frontend on live API; forbid blocking backfills in migrations by @markokraemer in https://github.com/kortix-ai/suna/pull/6346
  • feat(llm-catalog): slim managed lineup to GLM 5.2 + DeepSeek V4 Flash by @markokraemer in https://github.com/kortix-ai/suna/pull/6348

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.12.6...v0.12.7

August 8, 2026

Legacy chat restore, billing correctness, and admin consoles

v0.12.6

New

  • Imported legacy Suna chats are now first-class: migrated sessions show up in the session list with a restore state (instead of a misleading "Done"), and opening one restores its full conversation history into the session. Files from every imported chat live in the project repo under legacy/. (#6235, #6241, #6251)
  • Admin: an activity-analytics dashboard, a projects console, clearer tier labels, and admin-issued trials with per-account entitlement overrides. (#6244, #6249, #6250)
  • Apps: serverless app deployments are provider-neutral — any Dockerfile runtime builds and serves (including non-root images), and the first request after idle reliably wakes the app. (#6253)
  • Reloading a busy session asks before stopping the running turn, and says clearly when a turn was stopped.

Improved

  • Setup links: secret links now last 7 days, an expired link says it expired instead of "invalid", and completing one notifies the waiting session immediately. (#6240)
  • Faster navigation between projects and sessions: one cache entry per entity, and route segments are no longer discarded on the way. (#6231)
  • Browser tabs are named after the session you have open. (#6236)

Fixed

  • Billing: subscriptions activate only after the first invoice is paid; compute metering opens and closes windows atomically with precise start times; sandbox resume reconciliation is fenced so a wake race can't double-bill; a ledger row can no longer be both usage and an admin debit. (#6247, #6248)
  • The terminal stays attached when the session runtime restarts during a reload.
  • Removed noisy request-timeout toasts.
  • Firefox no longer shows a crash message from the background shader when WebGL is unavailable. (#6254)

Removed

  • The local Docker sandbox provider. Sessions run on cloud sandboxes.

What's Changed

  • chore(release): VERSION → 0.12.6 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6237
  • Fix Platinum resume billing reconciliation race by @markokraemer in https://github.com/kortix-ai/suna/pull/6239
  • fix(setup-links): 7-day secret-link TTL, expired-vs-invalid intake UX, resolve-on-set session notify by @markokraemer in https://github.com/kortix-ai/suna/pull/6240
  • fix(suna-migration): write migrated sessions as 'completed' so they list by @markokraemer in https://github.com/kortix-ai/suna/pull/6241
  • fix(billing): hold resume fence until provider runs by @markokraemer in https://github.com/kortix-ai/suna/pull/6242
  • refactor(sandbox): remove retired local Docker provider by @markokraemer in https://github.com/kortix-ai/suna/pull/6243
  • fix(billing): close compute windows atomically by @markokraemer in https://github.com/kortix-ai/suna/pull/6245
  • feat(billing): admin-issued trials + per-account entitlement overrides by @markokraemer in https://github.com/kortix-ai/suna/pull/6244
  • fix(billing): pin compute meter start precision by @markokraemer in https://github.com/kortix-ai/suna/pull/6246
  • fix(billing): activate subscriptions only after the first invoice is paid by @markokraemer in https://github.com/kortix-ai/suna/pull/6247
  • fix(billing): ledger type honesty guard + 2026-07-30 backfill + overdraft-guard regression tests by @markokraemer in https://github.com/kortix-ai/suna/pull/6248
  • feat(admin): projects console, sandboxes rename, ops removal, tier clarity by @markokraemer in https://github.com/kortix-ai/suna/pull/6249
  • feat(admin): activity + usage analytics dashboard by @markokraemer in https://github.com/kortix-ai/suna/pull/6250
  • feat(web): first-class legacy-session UX — restore language, not 'Done' by @markokraemer in https://github.com/kortix-ai/suna/pull/6251
  • feat(apps): complete provider-neutral serverless deployments by @markokraemer in https://github.com/kortix-ai/suna/pull/6253
  • fix(web): suppress Gecko/Firefox Paper Shaders null-WebGL-context crash wording (BS fd773de2) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6254
  • fix(compliance): move ino + kortix-ses-sender inline IAM policies to group-based (DCF-776) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6255
  • fix(compliance): remove hardcoded ino user from IAM groups Terraform (DCF-776) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6257
  • test(apps): make retired-provider scan deterministic by @markokraemer in https://github.com/kortix-ai/suna/pull/6259
  • Centralize complete system audit reconstruction by @markokraemer in https://github.com/kortix-ai/suna/pull/6252
  • docs(apps): centralize deployment architecture reference by @markokraemer in https://github.com/kortix-ai/suna/pull/6264
  • Fix audit v2 migration timeout on hosted data by @markokraemer in https://github.com/kortix-ai/suna/pull/6263
  • fix(connectors): refresh session grants from manifest by @markokraemer in https://github.com/kortix-ai/suna/pull/6265
  • fix(audit): drop primitive structural summaries by @markokraemer in https://github.com/kortix-ai/suna/pull/6266
  • fix(compliance): remove stale saumya@kortix.com from administrators group Terraform by @agent-kortix in https://github.com/kortix-ai/suna/pull/6267

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.12.5...v0.12.6

August 7, 2026

Secret delivery controls, unified connectors, and flat credit plans

v0.12.5

Secret delivery is now a managed control plane, connectors speak one language across the whole platform, and billing moves to flat credit plans.

New

  • Secret delivery controls. Decide exactly which secrets each agent session can use. Policies are managed from the web app and CLI, secrets reach sandboxes through an audited HTTPS broker with session-scoped handles, revoked secrets disappear from running agents, and LLM, connector, git, and subscription credentials are isolated from each other. A new kortix audit CLI command reads the account audit trail.
  • Unified connectors. One connector model across web, CLI, SDK, and API: consistent Connector and Connection terminology, a single data plane in @kortix/sdk, and connector credentials that bind to project secrets. The connector catalogue now pages through the full ~2,700-app list instead of stopping at 192.
  • Flat credit plans. Plans are priced as flat monthly credits instead of per-seat pricing. Billing also gained idempotent compute debits and accurate spend reporting.
  • Rebuilt project onboarding. A single-column, seven-step flow with a clearer Slack setup and plan selection.
  • Capability pages. Connectors, skills, and agents are browsable pages instead of a configuration overlay.
  • Use-case packs. Marketplace runbooks are grouped into installable packs, with real loading and error states and inline project creation.
  • Document conversion by default. Every new sandbox includes a convert-documents-to-markdown skill backed by a baked-in converter.
  • Serverless app deployments. Provider-neutral serverless deployments for apps, served behind a managed edge with wildcard TLS and signed public hosts.
  • Kimi K3 is available as a managed model.

Improved

  • Sessions survive interruptions. A pending agent question is parked when its sandbox dies and restored on the next boot, and a stored answer is delivered as a follow-up turn. Runtime updates boot and verify the new runtime before retiring the old one.
  • Chat UX. Instant session rename, a truthful header title, idempotent provisioning, preview verdicts, and grouped activity. In-flight sends survive navigation, and tool failures are reported honestly.
  • Session list. Rebuilt with status states, collapsible sections, and a nested filter menu.
  • Faster, calmer navigation. Project pages load faster (Next.js 16.3), and passively opening a project no longer wakes idle sandboxes.
  • Clearer errors. The LLM gateway surfaces real upstream provider errors instead of a generic Bad Gateway, and large repository branch listings are bounded.

Fixed

  • Billing: the same compute window can no longer be charged twice, "spend this period" reports the correct window, the paid seat is released when SCIM deprovisions a member, BYOK failover respects the managed-model entitlement, and the UI shows the concurrency limit the server actually enforces.
  • Agent workspaces are strictly enforced across repository, git, and clone APIs.
  • Approvals require a full review of each call, and the daemon no longer auto-answers questions outside a channel session.
  • The Terms of Service link opens the document directly.
  • Desktop: the title bar aligns with the OS window controls.
  • Production API recovery is hardened: migration-safe restarts and better behavior under memory pressure.

What's Changed

  • chore(release): VERSION → 0.12.5 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/6148
  • Billing correctness + park-and-restore for blocked turns by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6145
  • fix(db): generated migrations get the safety header, unblock the squawk gate by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6150
  • chore(web): upgrade Next.js to 16.3.0 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6151
  • Rework connectors, skills and commands into browsable capability pages by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6054
  • fix(daemon): stop auto-answering questions outside a channel session by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6153
  • feat(secrets): complete secure delivery controls by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6134
  • feat(web): session list — status states, collapsible sections, and a nested filter menu by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6142
  • fix(approvals): require full one-call review by @markokraemer in https://github.com/kortix-ai/suna/pull/6154
  • fix(web): keep standalone output off Vercel by @markokraemer in https://github.com/kortix-ai/suna/pull/6155
  • fix: attribute CLI actions in centralized audit logs by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6156
  • fix(billing): stop quoting the wrong seat grant and seat price by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6157
  • feat(secrets): bind project secrets to connectors by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6158
  • fix(web): align approval indicator with design system by @markokraemer in https://github.com/kortix-ai/suna/pull/6159
  • fix(web,api,sdk): chat UX — header title, instant rename, provision idempotency, preview verdicts, activity grouping by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6136
  • feat(billing): flat credit plans replace seats, no included managed LLM by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6160
  • feat(web): update secrets optimistically by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6164
  • fix(api): support pinned secret broker requests on Bun 1.2 by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6167
  • fix(web): guard tool-outcome parsing against null JSON output (session page crash) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6163
  • fix(web): de-noise old-browser DOM null-deref on marketing homepage (scrollLeft / appendChild) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6161
  • fix(web): de-noise model_not_servable unhandled rejection (BS 9784f440) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6162
  • fix(web): hide the regressed capability pages behind a flag by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6168
  • refactor: unify CLI connector and connection terminology by @markokraemer in https://github.com/kortix-ai/suna/pull/6165
  • feat(sandbox): bake @firecrawl/anydoc + default convert-documents-to-markdown skill by @markokraemer in https://github.com/kortix-ai/suna/pull/6170
  • fix(marketplace): stop listing use-case pack skills as Kortix Starter contents by @markokraemer in https://github.com/kortix-ai/suna/pull/6171
  • Remove standalone Commands capability page by @agent-kortix in https://github.com/kortix-ai/suna/pull/6169
  • test(marketplace): add convert-documents-to-markdown to the pinned starter floor by @markokraemer in https://github.com/kortix-ai/suna/pull/6172
  • refactor(db): cut over connector physical identifiers by @markokraemer in https://github.com/kortix-ai/suna/pull/6173
  • feat(marketplace): group use-case runbooks under a browsable Use-case pack project by @markokraemer in https://github.com/kortix-ai/suna/pull/6174
  • fix(web): use-case install dialog — real load/error states + inline project creation by @markokraemer in https://github.com/kortix-ai/suna/pull/6175
  • refactor(connectors): remove executor and profile compatibility by @markokraemer in https://github.com/kortix-ai/suna/pull/6176
  • fix(desktop): pin the title-bar band to the OS window controls by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6178
  • feat(web): adopt smooth shadow system by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6179
  • refactor(sdk): unify Connector data plane by @markokraemer in https://github.com/kortix-ai/suna/pull/6180
  • feat(web): add standalone Agents capability page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6177
  • feat(worktree): multi-name nuke with per-worktree confirmation by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6181
  • feat(web,api,sdk): a calmer, more personal onboarding experience by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6111
  • fix(prod): harden API recovery after OOM incident by @markokraemer in https://github.com/kortix-ai/suna/pull/6182
  • fix(prod): enforce migration-safe ECS recovery by @markokraemer in https://github.com/kortix-ai/suna/pull/6183
  • fix(secrets): verify sandbox env delivery end to end by @markokraemer in https://github.com/kortix-ai/suna/pull/6184
  • fix(web): filter Supabase gotrue OTP-expired Object-Not-Found rejection noise by @agent-kortix in https://github.com/kortix-ai/suna/pull/6189
  • fix(ke2e): align release flows with current contracts by @markokraemer in https://github.com/kortix-ai/suna/pull/6190
  • fix(release): retry transient flow and trigger conflicts by @markokraemer in https://github.com/kortix-ai/suna/pull/6192
  • fix(release): bound and expose full gate progress by @markokraemer in https://github.com/kortix-ai/suna/pull/6194
  • feat: teach agents how to use scoped secrets safely by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6195
  • fix: clear revoked secrets from new sandbox processes by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6198
  • feat(apps): add provider-neutral serverless deployments by @markokraemer in https://github.com/kortix-ai/suna/pull/6197
  • fix(ci): clear v0.12.5 security findings by @markokraemer in https://github.com/kortix-ai/suna/pull/6199
  • fix: keep agent config freshness safe and unobtrusive by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6202
  • ci(apps): provision wildcard edge DNS by @markokraemer in https://github.com/kortix-ai/suna/pull/6201
  • fix(ci): use supported Wrangler secret-list format by @markokraemer in https://github.com/kortix-ai/suna/pull/6204
  • fix(apps): honor managed storage upload limit by @markokraemer in https://github.com/kortix-ai/suna/pull/6205
  • fix(apps,connectors): repair edge routing and long sync calls by @markokraemer in https://github.com/kortix-ai/suna/pull/6206
  • fix(apps): update Caddy security release by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6208
  • fix(apps): build patched Caddy in API image by @markokraemer in https://github.com/kortix-ai/suna/pull/6209
  • fix(apps): build static Caddy runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6212
  • fix(apps): make Caddy cross-build reproducible by @markokraemer in https://github.com/kortix-ai/suna/pull/6214
  • feat(daemon): verified opencode reload — boot the new one, then retire the old by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6213
  • feat(api): materialize restricted agent environments by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6126
  • fix(ci): resolve staging scanner findings by @markokraemer in https://github.com/kortix-ai/suna/pull/6218
  • test(daemon): make the reload decline path provable on a real box by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6219
  • fix(apps): preserve runtime billing through idle lifecycle by @markokraemer in https://github.com/kortix-ai/suna/pull/6220
  • ci(apps): provision nested wildcard certificate by @markokraemer in https://github.com/kortix-ai/suna/pull/6207
  • fix(ci): make Rekor signing retries idempotent by @markokraemer in https://github.com/kortix-ai/suna/pull/6221
  • fix: promote verified agent config replacements by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6223
  • fix(ci): checkout signing helper in supply-chain job by @markokraemer in https://github.com/kortix-ai/suna/pull/6224
  • fix(ci): scope Apps edge certificate token by @markokraemer in https://github.com/kortix-ai/suna/pull/6222
  • fix(web): de-noise Canvas getImageData OOM on marketing homepage (BS b4b43847) by @agent-kortix in https://github.com/kortix-ai/suna/pull/6225
  • fix(apps): gate projects and bootstrap Platinum runtime by @markokraemer in https://github.com/kortix-ai/suna/pull/6226
  • fix(web): connector catalogue stops at 192 of ~2,700 apps — restore paging, add infinite scroll by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6228
  • feat(reload): say the turn was stopped, and ask before stopping it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6230
  • fix(proxy): the opencode PTY must follow opencode across a reload swap by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/6233
  • perf(web,sdk): one cache entry per entity, and stop discarding route segments by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6231
  • fix: suppress request deadline toasts by @markokraemer in https://github.com/kortix-ai/suna/pull/6234
  • fix(projects): re-land legacy-migration chat rehydrate on session open by @markokraemer in https://github.com/kortix-ai/suna/pull/6235
  • fix(apps): make cold wake and Dockerfile runtimes reliable by @markokraemer in https://github.com/kortix-ai/suna/pull/6227
  • fix(web): name the session browser tab, owned by route metadata by @sutharjay1 in https://github.com/kortix-ai/suna/pull/6236

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.12.4...v0.12.5

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