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