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

October 1, 2026

Microsoft Teams for every project, secrets you can share with an agent, failed-trigger alerts, and immediate sign-out

v0.13.47

Microsoft Teams for every project, secrets you can share with an agent, failed-trigger alerts, and immediate sign-out

New

  • Microsoft Teams is on for every project. There is no feature flag to turn on: connect Teams from the project's Connectors → Channels page. A tenant admin consents once, or the project brings its own bot. A project that connected Teams while it was a flag keeps its install. @kortix/sdk keeps teams as a deprecated flag key that always reports enabled. (#8601, #8603)

  • What Kortix says to one person in Teams stays with that person. In a channel or group chat, only that person sees:

    • the prompt to connect an account or request access, with the connect button right in the thread;
    • command replies;
    • why a message did not run;
    • approval requests and decisions.

    Teams marks these "Only you can see this message", as Slack does. The shared "Working on it…" card appears only when the message can run. (#8609)

  • Kortix shows when your Teams app is out of date. When your organization's Teams catalog has an older Kortix app, the Channels page and kortix channels status say so and name the two steps: a Teams admin publishes the update, then a team owner updates the app in each team where Teams offers it. A Teams thread that the agent may not read now comes back with who fixes it, instead of Microsoft's error alone. The Teams app moves to version 1.6.1. (#8624)

  • A failing trigger is no longer silent. When a trigger's run fails, the Schedule page shows the trigger as failed with the reason, and the account owner gets one push when a failure streak starts, not one per fire. The next run that finishes clears it. A reused session that grew too large to compact is retired, so the next fire starts a fresh one. (#8586, #8588)

  • Human Messaging reaches every agent surface (projects with the Human Messaging feature on). Agents in sessions, Slack, Teams and the hosted MCP server know how to ask a person and answer back, and the mobile app groups what people asked you under "Asked you". An ask from a session runs the asking session's own agent. (#8622, #8623)

  • Share a secret or a connector account with an agent. "Who can use it" now offers agents next to people and groups. A value shared with an agent reaches every session of that agent, triggers and schedules included; running the agent stays gated by its own access. A secret link can keep the value to the person who asked. kortix secrets share --agent <name> does the same from the CLI. (#8635, #8638)

  • Approve or deny a connector call from the Review Center header, next to Back, as for a change request. Deny takes an optional note that reaches the agent. Long parameter values collapse behind Show more. (#8641)

  • An agent's ask names the agent, not the session title, in "Asked you" (Human Messaging projects). With the Human Messaging feature off, it no longer appears anywhere. (#8626, #8637)

Security

  • Sharing a session cannot leak a personal value. Making a session project-visible or creating a public share is refused (409 PERSONAL_SECRET_REQUIRES_PRIVATE_SESSION) while the session holds a value shared only with its owner. (#8635)
  • Permissions follow the capability. A rule on bash also covers the terminal tools, websearch covers web and image search, and webfetch covers page scraping. Unknown tools fail closed. (#8553)

Fixed

  • Slack and Teams sign-in links open again. Since 2026-09-24 the link to connect a chat account answered "page not found". (#8611)
  • Accounts that require MFA work after the code is verified. Linking Slack or Teams, and some API routes such as connectors, asked for the second factor again even after it passed. Connecting a chat account now continues by itself after the code. (#8611) Members' sessions in such an account now reach shared provider keys, including a ChatGPT login shared with the project, and changing a shared key still needs the second factor. (#8618, #8620)
  • A Slack or Teams conversation runs the model it shows. A message without a /model change could run on the model of an earlier message instead of the conversation's model. (#8618)
  • Signup asks you to open the emailed link. The confirmation screen no longer asks for a six-digit code that the email does not contain. (#8608)
  • Signing out takes effect on every route at once. A logged-out, banned or revoked access token is rejected everywhere. Before, it stayed valid until it expired, up to an hour, on routes outside the account session check. (#8594)
  • Migrated sessions start again. A session moved from the previous platform could hold a sign-in token that the move had revoked, and never finished starting. Opening it now restores that one token, only for the session's own box. (#8636)
  • Audit ingestion wastes fewer retries. After a database timeout, a retry sends half the rows instead of the same statement again, and a small batch gives up after one try. (#8599)
  • Email connections survive a failed inbox listing. When the inbox listing failed, Kortix treated it as an empty list and removed the project's email connections. It now keeps them and reports the error. (#8607)
  • The bring-your-own Teams webhook answers 404, not 503, for a project that has no bot of its own. (#8603)
  • The Kortix icon is the same everywhere again. The favicon, app icons and home-screen icon all show the light tile with the dark mark, in light and dark mode. (#8647)
  • Translated pages are translated again. Blog titles and descriptions, SEO descriptions, the site description and the open-source headline show in all eight non-English languages. The brand kit had left them in English. (#8587)

Behind the scenes

  • Sandbox boot is split into session setup, prompt delivery and turn relays, with no change in behavior (#8600); its boot-order guards follow the moved code (#8627). The SDK's server entrypoint no longer imports itself in a cycle (#8591).
  • Test repairs for mobile, the CLI and self-hosted Supabase, and the Stop flow (#8575, #8578, #8584, #8590). A flaky kortixd test resets its shared cooldown (#8598). A synthetic test token no longer trips the secret scanner (#8614, #8616). Learnings entries on translating changed copy and on Teams app updates (#8593, #8624).
  • The runtime protocol is Kortix-owned: transcripts are versioned as kortix.transcript.v1, both agent harnesses serve Kortix turn routes, and @kortix/sdk no longer depends on @opencode-ai/sdk. (#8553)
  • SDK and host refactors with no change in behavior (#8246, #8398, #8449, #8581, #8632), billing provider handlers split out (#8628), an engineers IAM group for MFA-gated day-to-day AWS access (#8633), and release-gate fixes (#8643, #8645, #8646, #8648, #8650, #8652). Message ids now use the platform's secure random source. (#8646, #8648)
  • One migration: a nullable run_failing_since column on trigger runtime state (#8588).

Release source: staging 40de384e4f517dacea723221cb430ef45ffe8b00 (promotion #8642; supersedes the earlier candidate 4defc4c213).

What's Changed

  • fix(mobile): repair main after 5ac201f (KRTX-899) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8578
  • fix(cli,tests): repair main after f605a96 (KRTX-910) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8584
  • feat(triggers): a failed trigger run shows on the trigger and pushes the account owner by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8586
  • fix(triggers): a failed run stays failed across later fires and pushes once per streak by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8588
  • fix(web): repair main after 7e5e373 — localize the brand-kit copy, fix the tone assertion by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8587
  • test(flows): accept the /stop "stopping" answer and wait for the stop to land by @markokraemer in https://github.com/kortix-ai/suna/pull/8590
  • docs(learnings): changed English copy needs a new hashed key in every catalog by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8593
  • fix(auth): reject logged-out ES256 access tokens on every route by @markokraemer in https://github.com/kortix-ai/suna/pull/8594
  • chore(release): staging VERSION → 0.13.47 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8596
  • chore(release): VERSION → 0.13.47 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8597
  • fix(kortixd): reset the reconcile cooldown before the refresh convergence rows by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8598
  • fix(audit): never re-send an identical audit ingest statement after a timeout by @markokraemer in https://github.com/kortix-ai/suna/pull/8599
  • Promote main 13a995e7aa to staging by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8595
  • feat(teams): Microsoft Teams is on for every project — graduate the teams flag by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8601
  • fix(teams): the bring-your-own webhook answers 404 for a project with no bot of its own by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8603
  • fix(mobile): repair main after f256929 (KRTX-398) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8575
  • Promote main c259040683 to staging by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8604
  • fix(teams): what the bot says to one person in a channel or group chat only that person sees by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8609
  • fix(channels): chat sign-in links open and complete by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8611
  • test(web): a synthetic sign-in token that gitleaks does not flag by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8614
  • chore(security): ignore the reviewed synthetic sign-in token in 127d878b9b by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8616
  • fix(auth): align signup prompt with email link (KRTX-937) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8608
  • fix(channels): a channel turn runs the model Kortix shows; MFA accounts reach shared keys by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8618
  • refactor(sandbox): separate session and relay from boot (KRTX-930) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8600
  • fix(secrets): a caller's own key changes keep their MFA level by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8620
  • feat(messaging): teach every agent surface to message people; mobile Asked you by @markokraemer in https://github.com/kortix-ai/suna/pull/8622
  • fix(sessions): an ask from a session runs the asking session's agent by @markokraemer in https://github.com/kortix-ai/suna/pull/8623
  • refactor(sdk): remove server entrypoint back edges (KRTX-927) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8591
  • fix(teams): show a tenant's outdated Teams app and say who updates it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8624
  • fix(api): preserve email connections when install listing fails (KRTX-935) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8607
  • test(kortixd): repair main after 986ffa6 (KRTX-930) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8627
  • docs(learnings): moving a function breaks the source guards that read its old file by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8630
  • feat(messaging): human_messaging off = invisible everywhere; pi honours noReply; asks name their asker by @markokraemer in https://github.com/kortix-ai/suna/pull/8626
  • Promote main 022eb6f264 to staging by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8629
  • refactor(sdk): dedupe the audit querystring builder across audit and host-boundary (KRTX-413) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8398
  • refactor(sdk): share workspace search core and prepare injected client (KRTX-392) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8449
  • refactor(sdk): split event dispatch and stream hydration (KRTX-921) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8581
  • feat(iam): engineers group for MFA-gated PowerUser access by @markokraemer in https://github.com/kortix-ai/suna/pull/8633
  • refactor(sdk): move gateway query hooks behind web shim (KRTX-716) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8246
  • feat(secrets): agents as principals, session-share guard, secret-link audience by @markokraemer in https://github.com/kortix-ai/suna/pull/8635
  • fix(sessions): a box's own superseded session token heals on start instead of locking the session out by @markokraemer in https://github.com/kortix-ai/suna/pull/8636
  • refactor(billing): separate provider handlers and wallet orchestration (KRTX-944) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8628
  • feat(messaging): an agent's ask names the agent, not the session title by @markokraemer in https://github.com/kortix-ai/suna/pull/8637
  • fix(secrets): agent object grants never activate an agent; agent values at first boot; link values are fresh by @markokraemer in https://github.com/kortix-ai/suna/pull/8638
  • docs(learnings): an object grant never activates an agent service account by @markokraemer in https://github.com/kortix-ai/suna/pull/8639
  • refactor(search): use shared workspace search client in hosts (KRTX-393) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8632
  • feat(review-center): approval decides from the header; long parameter values collapse by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8641
  • fix: green main — heal module import, billing-gate mock, agent-identities query key by @markokraemer in https://github.com/kortix-ai/suna/pull/8643
  • feat: OpenCode decoupling W5 — Kortix-owned contract (kortix.transcript.v1 emitted by pi, Kortix turn verbs, @kortix/sdk without @opencode-ai/sdk) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8553
  • fix: clear the staging gate — CodeQL ReDoS + fs race, journey 23 label by @markokraemer in https://github.com/kortix-ai/suna/pull/8645
  • fix(sdk): clear CodeQL high alerts — crypto id suffix, no backtracking slash trim by @markokraemer in https://github.com/kortix-ai/suna/pull/8646
  • fix(web): every app icon and favicon renders the favicon.svg art by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8647
  • fix(sdk): wire message id tail defaults to crypto random by @markokraemer in https://github.com/kortix-ai/suna/pull/8648
  • test(kortixd): wait for the note file, not just a running tool (W5 E4 race) by @markokraemer in https://github.com/kortix-ai/suna/pull/8650
  • test(web): give flag-gated session surfaces a query client (human_messaging, #8626) by @markokraemer in https://github.com/kortix-ai/suna/pull/8652
  • fix(audit): the project agent-identities route gets its own audit action by @markokraemer in https://github.com/kortix-ai/suna/pull/8654
  • fix(sdk): unbiased crypto tail for wire message ids by @markokraemer in https://github.com/kortix-ai/suna/pull/8655
  • fix(email): never relay mail to reserved test domains by @markokraemer in https://github.com/kortix-ai/suna/pull/8656
  • test(agent-tunnel): keep the runner's AGENT_TUNNEL_HOME out of the CLI tests by @markokraemer in https://github.com/kortix-ai/suna/pull/8657
  • refactor(slack): separate thread routing and session launch (KRTX-939) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8613
  • test(api): notification emails go to a relayable recipient domain by @markokraemer in https://github.com/kortix-ai/suna/pull/8658
  • Promote main 1bf48b514c to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/8642
  • Release v0.13.47 — Microsoft Teams for every project, secrets you can share with an agent, failed-trigger alerts, and immediate sign-out by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8605

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.46...v0.13.47

Read the full release on GitHub
October 1, 2026

An agent permission fix, refresh-token replay protection, prompt authorship, and agents that can ask people (behind a flag).

v0.13.46

An agent permission fix, refresh-token replay protection, prompt authorship, and agents that can ask people (behind a flag).

New

  • Every prompt records who wrote it, and the transcript shows the author.
  • Agents can ask a person a question or start a group conversation with people, behind the human_messaging project flag (off by default).

Security

  • An agent whose policy denies bash or edit can no longer open a shell through the terminal tools or write files through the memory tool.
  • A refresh token cannot be replayed, and logging out revokes the session.

Fixed

  • Chat stays available while a connector waits for approval.
  • The advanced panel preference keeps the panels you open.
  • The cost explorer shows a loading state until usage arrives.
  • Mobile renders model reasoning as a thinking row.
  • Deleting an account no longer reports its sandboxes as lost work.
  • A conversation with people is named at a word boundary.

What's Changed

  • refactor(web): consolidate square dot matrix scaffolds (KRTX-655) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8158
  • fix(web): show cost explorer loading state until usage arrives (KRTX-791) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8351
  • fix(api): park test no longer leaks a session-worker process per run by @markokraemer in https://github.com/kortix-ai/suna/pull/8557
  • refactor(web): extract sidebar panel components (KRTX-652) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8556
  • fix(mobile): render reasoning as a thinking row (KRTX-896) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8540
  • fix(web): keep chat available during connector approval (KRTX-911) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8562
  • fix(web): preserve advanced-preference panel opens (KRTX-398) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8162
  • feat(sessions): agents message people — asks, group chats, message authors (human_messaging) by @markokraemer in https://github.com/kortix-ai/suna/pull/8560
  • fix(web): repair main after 0e82ff4 (KRTX-398) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8564
  • fix(tests): mode-gate test sets the panel mode through patchPreferences (#8162) by @markokraemer in https://github.com/kortix-ai/suna/pull/8566
  • chore(release): staging VERSION → 0.13.46 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8568
  • chore(release): VERSION → 0.13.46 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8569
  • feat(brand): one agentic brand kit — router, verbal + visual rules, visual-system.json generates the tokens — and every surface on it by @markokraemer in https://github.com/kortix-ai/suna/pull/8567
  • fix(sessions): name a conversation with people at a word boundary by @markokraemer in https://github.com/kortix-ai/suna/pull/8570
  • feat(brand): close fresh-agent QA round 3 gaps; deck captions follow claims.md by @markokraemer in https://github.com/kortix-ai/suna/pull/8571
  • fix(docs): quote the docs index description; test docs frontmatter YAML by @markokraemer in https://github.com/kortix-ai/suna/pull/8572
  • docs(learnings): quote docs frontmatter values that contain a colon by @markokraemer in https://github.com/kortix-ai/suna/pull/8573
  • Promote main da2c3cbef6 to staging (v0.13.46) by @markokraemer in https://github.com/kortix-ai/suna/pull/8565
  • refactor(composer): unify navigation and context usage (KRTX-899) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8544
  • fix(auth): prevent refresh replay and revoke logout session (KRTX-910) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8559
  • refactor(email): share consumer domain classification (KRTX-918) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8576
  • fix(api): Kortix-initiated sandbox removal is not a runtime.lost error by @markokraemer in https://github.com/kortix-ai/suna/pull/8580
  • fix(tests): repair main after f605a96 (KRTX-910) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8579
  • fix(agents): a denied bash or edit also denies pty_* and memory (RUN-10) by @markokraemer in https://github.com/kortix-ai/suna/pull/8582
  • Promote main 5f7b0bd047 to staging (v0.13.46, security fix) by @markokraemer in https://github.com/kortix-ai/suna/pull/8583
  • v0.13.46 — An agent permission fix, refresh-token replay protection, prompt authorship, and agents that can ask people (behind a flag). by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8574

Full Changelog: https://github.com/kortix-ai/suna/compare/v0.13.45...v0.13.46

October 1, 2026

Session labels, a redesigned approval flow, and long sessions that compact instead of failing.

v0.13.45

Session labels, a redesigned approval flow, and long sessions that compact instead of failing.

New

  • Sessions carry writable labels and metadata across the API, SDK, CLI, MCP and web, and the session list filters by label.
  • Redesigned approval, preview and install consent screens.
  • A split "Connect your computer" dialog with one-click CLI copy.
  • Recent session views stay open across project navigation; the command palette finds sessions by ID.
  • The desktop app copies the current session URL from the Go menu and reports sanitized crash telemetry.
  • Push notifications route by browser presence: a session open in a tab does not also push.
  • Project-bound agents get their own cost rollups.
  • kortix apps access --viewer, and the CLI lints manifest wiring references.
  • The pi harness loads repository-native Pi configuration and supports config releases.
  • Each agent's OpenCode plugins load in isolation.
  • Sign in to OpenCode Go with your OpenCode account from a sign-in card, instead of pasting a key; each provider now has its own key name.
  • Connector discovery is on by default for every project.
  • Choose who can use a secret's value: only you, everyone, or chosen people and groups.
  • Manifest v3: agents boot from kortix.yaml.

Improved

  • Managed models can write up to 65,536 output tokens; the ChatGPT lineup and provider defaults come from live data.
  • A session whose sandbox lacks the model a turn asks for is repaired, for any provider.
  • Audit reconciliation is incremental, which cuts database load.
  • Session pages prefetch on intent, and a revived stream rehydrates the transcript.
  • Long managed sessions compact instead of failing at the model's context window; new sessions boot with the current managed context limit.
  • The session scope view reads the cached repository instead of waiting for a git fetch.
  • Stop answers within the request deadline and reports stopping while the sandbox finishes shutting down.
  • Creating a project retries the first push while GitHub finishes creating the repository, instead of rolling back.
  • Agent config from the base branch reaches a session on reload, even without config releases.
  • A session restored from an archived sandbox gets up to 12 minutes to wake instead of failing at 8.
  • Mobile queues prompts in the server inbox, and a turn that ended while the stream was down goes idle.
  • New users land on the project selector.
  • Neutral runtime names across the API, SDK and CLI (OpenCode decoupling).

Security

  • Dependency updates close a critical Next.js vulnerability and eight high-severity ones (axios, undici, fast-uri, js-yaml, brace-expansion, @xmldom/xmldom, path-to-regexp, @grpc/grpc-js).

Fixed

  • A malformed access request answers 400 instead of 500.
  • Reminder trigger sessions open themselves, with atomic caps.
  • App viewer tokens no longer fail with 401 after an access-policy save, and no longer appear in App logs.
  • Account API keys are refused before session daemon access; the session token acts as the person who starts each turn.
  • Slack replies to a bound session return to the thread they came from; Slack writes stay inside the calling project's channels and threads; an unavailable model stops before a Slack thread starts.
  • Listing or sharing connectors, or disconnecting a computer, no longer fails with 500 on a database deadlock.
  • An agent cannot be switched while its session is running; overlapping turns keep the running state.
  • A failed secret save keeps the form's contents.
  • Sessions on a sandbox owned by another API instance refuse prompts instead of racing it.
  • Agent .md model references resolve through the Kortix provider in gateway mode.

What's Changed

  • fix(sandbox): agent .md model refs resolve through the kortix provider in gateway mode by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8358
  • fix(connectors): keep Slack writes out of other projects' channels and threads by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8359
  • fix(api): refuse prompts and warm sessions for sandboxes another API instance owns by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8354
  • feat(mobile): render connect links as cards and keep their connected state by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8370
  • fix(api): lock tunnel rows when attaching computers on connector list (23503) by @markokraemer in https://github.com/kortix-ai/suna/pull/8383
  • fix(connectors): one key-share lock in the shared computer attach; the share route stops answering 500 by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8396
  • feat: OpenCode decoupling W3 — kortixd speaks Kortix (neutral wire, one host relay, closed health block, runtime capabilities) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8306
  • fix(sdk): closing frames no longer count as session activity by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8357
  • fix(web): drive session loader restarts through the canonical hook (KRTX-456) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8091
  • fix(web): clarify queued chat delivery states (KRTX-494) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8164
  • fix(mobile): lighter inline code chip, surface-colored Kortix tile in the connector handshake by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8414
  • fix(sdk): keep first session stream connected (KRTX-432) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8165
  • feat(usage): grant project-bound agents their own cost rollups (KRTX-204) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8167
  • feat(sessions): route push by browser presence (KRTX-588) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8227
  • fix(web): find sessions by ID in command palette (KRTX-794) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8268
  • fix(session): prevent switching agents in running sessions (KRTX-805) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8288
  • feat(desktop): copy the current session URL from the Go menu (KRTX-801) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8307
  • feat(web): add browser dictation to chat composer (KRTX-830) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8325
  • feat(web): retain recent session views across project navigation (KRTX-838) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8335
  • refactor(sdk): add pure workspace search core (KRTX-391) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8344
  • feat(tests): add Platinum workload benchmark (KRTX-465) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8360
  • fix(api): reject unregistered runtime agents (KRTX-175) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8361
  • fix(sandbox): warn on harness MCP declarations (KRTX-182) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8362
  • docs(daemon): guide config change requests through source checkout (KRTX-173) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8363
  • test(api): pin source checkout change-request round-trip (KRTX-170) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8365
  • feat(cli): lint manifest wiring references (KRTX-174) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8367
  • feat(pi): load repository-native Pi configuration (KRTX-166) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8368
  • fix(api): detect speculative warm sessions from actual marker (KRTX-177) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8369
  • perf(api): measure prompt queue delivery latency (KRTX-179) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8371
  • refactor(web): register session tools at app entry (KRTX-485) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8373
  • feat(sdk): retain catalog free flag in flattened models (KRTX-453) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8375
  • refactor(sdk): split IAM client by concern (KRTX-411) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8376
  • refactor(mobile): register tools at mount points (KRTX-737) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8377
  • refactor(mobile): extract AutoContinue from composer (KRTX-766) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8378
  • refactor(mobile): extract drawer row clusters (KRTX-767) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8381
  • refactor(mobile): split mention search and decisions (KRTX-776) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8384
  • refactor(web): extract session raw-message explorer (KRTX-730) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8385
  • docs(cli): connect public docs to live system skills (KRTX-105) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8387
  • docs(worker): evaluate durable object session runtime (KRTX-183) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8388
  • refactor(sdk): flatten findSessionAttachments into per-part extractors (KRTX-416) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8389
  • refactor(sdk): dedupe backend-base URL normalizers onto platformApiBase (KRTX-414) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8390
  • fix(session): preserve running state across overlapping turns (KRTX-260) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8391
  • refactor(mobile): split tool renderers and share disclosure state (KRTX-752) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8392
  • refactor(mobile): delete dead prop modes from CompactionMarker and TurnActions (KRTX-751) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8393
  • refactor(sdk): dedupe the required-connector canonicalizer into one shared module (KRTX-412) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8394
  • test(sdk): characterize the retired endpoint shims before removal (KRTX-418) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8395
  • refactor(sdk): collapse getAccountState and getAccountStateMinimal onto one reader (KRTX-415) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8399
  • refactor(mobile): delete the redundant morph_edit tool alias (KRTX-740) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8400
  • test(mobile): pin ToolPartRenderer dispatch with render tests (KRTX-734) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8401
  • refactor(mobile): dedupe tab history activation in the tab store (KRTX-800) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8402
  • fix(web): gate project creation on effective permission (KRTX-223) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8404
  • fix(web): align the segmented tab chip with its tab on every edge by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8419
  • fix(mobile): a turn that ended while the stream was down goes idle by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8415
  • fix(web): show OpenCode Go branding in model selector (KRTX-781) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8238
  • feat(desktop): capture sanitized crash telemetry (KRTX-829) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8326
  • docs(network): define egress policy gateway design (KRTX-259) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8364
  • fix(db): repair main after f2cd037a7a — regenerate session_presence_leases after the migrations it predated by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8428
  • refactor(mobile): import the sdk detectLocalhostUrls in sandbox previews (KRTX-772) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8407
  • refactor(mobile): one shared close-then slot replaces four sheet copies (KRTX-770) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8408
  • refactor(mobile): delete the dead activity-step inline row (KRTX-738) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8409
  • refactor(mobile): move show file-type icons to the tool-icons leaf, delete dead exports (KRTX-743) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8410
  • refactor(api): slim the secret-relay route sleeve (KRTX-290) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8411
  • test(session): pin host vs SDK flattenModels drift with characterization tests (KRTX-452) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8412
  • refactor(mobile): extract the shared composer status pill (KRTX-773) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8413
  • refactor(web): delete unused presentation renderer helpers (KRTX-596) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8416
  • refactor(web): reuse preview policy for file classification (KRTX-401) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8418
  • fix(connectors): classify invalid Linear GraphQL as caller errors (KRTX-678) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8420
  • fix(sandbox): repair main after b5b080023b — resolve zod in the standalone daemon build; ignore synthetic test tokens in gitleaks by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8432
  • test(pools): pin warm-session pool semantics before the SDK core move (KRTX-700) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8425
  • fix(slack): stop unavailable model before starting a thread (KRTX-433) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8417
  • chore(release): VERSION → 0.13.45 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8440
  • chore(release): staging VERSION → 0.13.45 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8441
  • refactor(web): extract file content state from renderer (KRTX-399) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8422
  • feat(web): redesign the approval, preview and install consent screens by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8421
  • fix(mobile): move queued prompts to server inbox (KRTX-262) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8372
  • refactor(web): dedupe the marketing code panels into one shared module (KRTX-590) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8423
  • Hotfix to staging (v0.13.45): agent .md model refs resolve through the kortix provider by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8438
  • refactor(api): extract project access read model (KRTX-293) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8424
  • refactor(api): reuse the GitHub installation GET handler for both routes (KRTX-863) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8427
  • test(mobile): pin SessionPage scroll, queue and composer behavior (KRTX-757) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8430
  • refactor(api): move the preview response and header helpers into preview-response.ts (KRTX-328) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8431
  • test(web): characterize session tool dispatch and child modal (KRTX-484) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8433
  • fix(api): repair main after 1b179a7 (KRTX-204) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8434
  • revert: fix(api): reject unregistered runtime agents (KRTX-175) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8435
  • fix(api): repair main after e6325c2 (KRTX-805) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8436
  • fix(api): repair main after f2cd037 (KRTX-588) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8437
  • fix(web): new users land on the project selector, never forced into /new by @markokraemer in https://github.com/kortix-ai/suna/pull/8461
  • refactor(mobile): extract useProjectStack and useProjectHomeSend from ProjectScreen (KRTX-764) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8439
  • fix(connectors): support label-only PATCH for connections (KRTX-163) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8443
  • fix(api): reject out-of-range transcript timestamps (KRTX-461) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8444
  • chore(web): measure ECS latency before canonical cutover (KRTX-184) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8445
  • fix(api): gate US sandbox placement on colocated data plane (KRTX-178) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8446
  • feat(web): re-cut the README showcase from the September captures (KRTX-831) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8447
  • refactor(billing): share customer compute rate card (KRTX-195) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8450
  • feat(config): isolate OpenCode plugin entrypoints per agent (KRTX-168) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8452
  • refactor(api): split access.ts into quota, visibility, identity and access modules (KRTX-301) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8453
  • fix(workspace): default declared agents to restricted workspace (KRTX-165) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8454
  • refactor(api): split shared.ts session-open orchestration into focused modules (KRTX-274) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8456
  • feat(sessions): writable labels + metadata across API, SDK, CLI, MCP and web (KRTX-783) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8249
  • fix(sessions): a label-filtered flat list returns only labeled sessions (KRTX-783) by @markokraemer in https://github.com/kortix-ai/suna/pull/8469
  • refactor(web): delete write-only SSH dialog store and its orphaned palette handler (KRTX-723) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8448
  • docs(learnings): a list filter must gate rows appended after the query by @markokraemer in https://github.com/kortix-ai/suna/pull/8472
  • fix(api): repair main after ea78f4f (KRTX-204) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8457
  • fix(sdk): repair main after 42bcc3c (KRTX-452) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8458
  • fix(api): repair main after c8cfb17 (KRTX-805) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8459
  • fix(slack): repair main after 4ce44de (KRTX-433) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8460
  • refactor(api): split sandbox-turn-lifecycle, cut over the legacy activeTurn arm (KRTX-255) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8462
  • fix(api): log transcript capture SQLSTATE without query parameters (KRTX-747) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8463
  • fix(api): expose slow resource-grant read stages (KRTX-821) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8464
  • refactor(web): extract composer render components (KRTX-374) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8465
  • fix(sdk): identify failed project secret POST transport (KRTX-466) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8467
  • chore(secrets): per-env OpenCode Zen key in api env profiles by @markokraemer in https://github.com/kortix-ai/suna/pull/8479
  • fix(api): the session token acts as the person who starts each turn by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8478
  • feat: OpenCode decoupling W4 — neutral API and SDK names (readiness, contract fields, SDK aliases, DB fields in code, CLI and copy) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8466
  • fix(sessions): reload brings the base branch agent config into a session without config releases by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8482
  • fix(db): repair main after 699dadc38a — project_usage_read sorts after the migrations already applied by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8483
  • fix(api): classify Platinum reaper write throttle as transient (KRTX-345) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8470
  • fix(connectors): repair main after ada1948 (KRTX-163) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8471
  • refactor(api): centralize session route binding sleeves (KRTX-277) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8473
  • fix(api): deny account keys before session daemon access (KRTX-426) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8474
  • fix(api): retain implicit audit on failed explicit write (KRTX-104) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8476
  • refactor(mobile): reuse SDK session health probe (KRTX-771) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8480
  • fix(cli): repair split-manifest wiring fixtures (KRTX-174) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8481
  • fix(apps): App viewer tokens stop 401ing after an access-policy save, and stop leaking into App logs by @markokraemer in https://github.com/kortix-ai/suna/pull/8486
  • fix(sessions): the reload's config-dir sync judges only the files base changed by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8487
  • feat(cli): kortix apps access --viewer; agent skills teach acting as the viewer by @markokraemer in https://github.com/kortix-ai/suna/pull/8488
  • docs(learnings): regenerate the index (duplicate line from a merge) by @markokraemer in https://github.com/kortix-ai/suna/pull/8489
  • chore(tools): configure per-agent built-in tool availability (KRTX-169) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8366
  • refactor(mobile): remove legacy expanded tool bodies (KRTX-735) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8379
  • refactor(mobile): share connector handoff shell (KRTX-769) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8380
  • refactor(mobile): extract session delete and compact flows (KRTX-774) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8382
  • refactor(mobile): split user message parser and share card shell (KRTX-739) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8386
  • refactor(kortixd): split runtime asset swap reporting (KRTX-530) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8397
  • refactor(web): type session context providers and parts (KRTX-731) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8403
  • refactor(mobile): delete the dead chain-of-thought reporting machinery (KRTX-775) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8405
  • fix(web): preserve secret form after failed save (KRTX-462) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8484
  • feat(web): split "Connect your computer" modal with beams art, one-click CLI copy by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8491
  • fix(gateway): long managed sessions compact instead of failing at the context window by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8490
  • fix(infra): redirect dev web HTTP to HTTPS (KRTX-437) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8494
  • refactor(mobile): consolidate tool row ambient context (KRTX-736) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8495
  • chore(api): measure slow runtime chunk reads (KRTX-797) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8496
  • fix(tests): green main core lane — stale flows, specs, suites and workflow secrets by @markokraemer in https://github.com/kortix-ai/suna/pull/8497
  • fix(api): green main packages lane for kortix-api unit suite by @markokraemer in https://github.com/kortix-ai/suna/pull/8500
  • fix: green main — kortixd runtime-assets W3 regression, specs 26 and 27 by @markokraemer in https://github.com/kortix-ai/suna/pull/8499
  • fix(api): retry managed repo seed push with backoff while the new repo is not reachable over git by @markokraemer in https://github.com/kortix-ai/suna/pull/8501
  • fix(api): answer Stop inside the request deadline with a truthful 'stopping' state by @markokraemer in https://github.com/kortix-ai/suna/pull/8502
  • feat(pi): config releases on the pi harness by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8451
  • fix(sandbox): new sessions boot OpenCode with the current managed context limit by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8505
  • refactor(web): move turn rendering out of session-chat.tsx (KRTX-355) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8492
  • fix(infra): drop the dev web HTTP listener — Drata 8008 blocks staging (reverts #8494) by @markokraemer in https://github.com/kortix-ai/suna/pull/8506
  • fix(tests): stat the CLI through a handle in runtime-assets test (CodeQL js/file-system-race) by @markokraemer in https://github.com/kortix-ai/suna/pull/8507
  • Promote main 79159fba39 to staging (v0.13.45) by @markokraemer in https://github.com/kortix-ai/suna/pull/8503
  • fix(mobile): green the mobile test lane (queue, health, tool registration, light tokens) by @markokraemer in https://github.com/kortix-ai/suna/pull/8508
  • fix(deps): clear Trivy HIGH/CRITICAL CVEs blocking staging promotion by @markokraemer in https://github.com/kortix-ai/suna/pull/8509
  • feat(manifest): declare non-enforcing agent egress policy (KRTX-878) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8510
  • Promote main 9d8b8245d1 to staging (v0.13.45) by @markokraemer in https://github.com/kortix-ai/suna/pull/8512
  • refactor(web): extract warm-or-create session job (KRTX-704) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8504
  • chore(secrets): drop AWS_IAM_USER_ARN for deleted dotenv IAM users by @markokraemer in https://github.com/kortix-ai/suna/pull/8514
  • fix(web): ignore anonymous auth refresh noise (KRTX-876) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8485
  • fix(web): green the web unit suite (32 failures) by @markokraemer in https://github.com/kortix-ai/suna/pull/8515
  • fix(api): attribute session config deadline stages (KRTX-818) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8511
  • fix(api): time slow secrets reads by dependency stage (KRTX-819) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8516
  • fix(api): attribute sandbox proxy failures in logs (KRTX-811) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8517
  • fix(api): allow slow archived restores to finish (KRTX-440) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8518
  • feat(connectors): enable direct discovery by default (KRTX-885) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8519
  • feat(llm): Sign in with OpenCode for OpenCode Go; one key name per provider by @markokraemer in https://github.com/kortix-ai/suna/pull/8520
  • fix(tunnel): unpair locks connector rows before the machine row (40P01) by @markokraemer in https://github.com/kortix-ai/suna/pull/8524
  • fix(web): golden case for the anonymous auth refresh noise rule (#8485) by @markokraemer in https://github.com/kortix-ai/suna/pull/8525
  • fix(slack): route bound session replies to originating thread (KRTX-886) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8522
  • fix(api): serve GET session scope from the warm git mirror by @markokraemer in https://github.com/kortix-ai/suna/pull/8527
  • fix(web): keep shared session avatars legible (KRTX-888) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8526
  • Promote main ad46bf44b4 to staging (v0.13.45) by @markokraemer in https://github.com/kortix-ai/suna/pull/8523
  • fix(web): align session sidebar pagination control (KRTX-890) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8528
  • revert(web): remove composer dictation (KRTX-830) by @markokraemer in https://github.com/kortix-ai/suna/pull/8530
  • fix(web): show saved profile name in account menu (KRTX-893) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8529
  • revert(web): remove composer dictation (KRTX-830) → staging by @markokraemer in https://github.com/kortix-ai/suna/pull/8531
  • Promote main bf78fe8895 to staging (v0.13.45) by @markokraemer in https://github.com/kortix-ai/suna/pull/8532
  • feat(secrets): who can use a secret value — only you, everyone, or people and groups by @markokraemer in https://github.com/kortix-ai/suna/pull/8533
  • fix(gateway): send OpenCode Zen a strict OpenAI chat body by @markokraemer in https://github.com/kortix-ai/suna/pull/8534
  • feat(web): OpenCode Go sign-in card like ChatGPT's by @markokraemer in https://github.com/kortix-ai/suna/pull/8535
  • fix(reminders): trigger sessions open themselves, atomic caps, 366d horizon by @markokraemer in https://github.com/kortix-ai/suna/pull/8536
  • docs(learnings): apply merged dev Terraform deletions by hand the same hour by @markokraemer in https://github.com/kortix-ai/suna/pull/8537
  • fix(api): request-access answers 400, not 500, for a body it could not parse by @markokraemer in https://github.com/kortix-ai/suna/pull/8538
  • fix(secrets): a pre-on_behalf_of session token resolves by the mint rule by @markokraemer in https://github.com/kortix-ai/suna/pull/8539
  • fix(web): prefetch session destinations on intent (KRTX-779) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8233
  • fix(sdk): rehydrate transcript after parked stream revival (KRTX-832) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8327
  • feat(config): boot v3 agents from kortix.yaml (KRTX-167) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8406
  • fix(models): serve the ChatGPT lineup and provider defaults from live data by @markokraemer in https://github.com/kortix-ai/suna/pull/8541
  • fix(api): OpenCode sign-in polls at the provider's interval by @markokraemer in https://github.com/kortix-ai/suna/pull/8543
  • fix(models): let managed models write 65,536 output tokens by @markokraemer in https://github.com/kortix-ai/suna/pull/8542
  • revert: declared agents keep the project checkout by default (#8454) by @markokraemer in https://github.com/kortix-ai/suna/pull/8548
  • perf(audit): incremental reconciliation with a per-account high-water mark by @markokraemer in https://github.com/kortix-ai/suna/pull/8547
  • fix(api): repair main after 510b569 (KRTX-167) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8545
  • fix(tests): unused @ts-expect-error on AgentBlockV2.mode after #8406 (TS2578) by @markokraemer in https://github.com/kortix-ai/suna/pull/8552
  • refactor(web): extract sidebar menu primitives (KRTX-651) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8155
  • fix(sessions): repair a box that lacks the model a turn asks for, any provider by @markokraemer in https://github.com/kortix-ai/suna/pull/8554
  • fix(tests): far-future expiry in the connector link info fixture by @markokraemer in https://github.com/kortix-ai/suna/pull/8555
  • Promote main a00772e042 to staging (v0.13.45) by @markokraemer in https://github.com/kortix-ai/suna/pull/8549
  • v0.13.45 — Session labels, a redesigned approval flow, and long sessions that compact instead of failing. by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8455

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

September 30, 2026

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

v0.13.44

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

New

  • Computers are connector accounts like any other: the same row, the same Share dialog (people, groups or everyone), and one registration per machine.
  • The audit trail shows Via for each event: the credential the API authenticated (browser session, personal access token, connected app, session token, API key, service account or SCIM token), never a self-reported client label.

Fixed

  • Slack and Teams connector reads stay inside the calling project's own conversations.
  • Stopping a session no longer fails with a database deadlock when a wake runs at the same moment.
  • A malformed member id returns 400 instead of 500.
  • A stopped session box stays stopped: auto-resume is turned off before the stop, not after.
  • A transient git failure while saving a project's manifest returns a retryable 503 and no longer exposes the repository URL.

What's Changed

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

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

September 30, 2026

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

v0.13.43

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

New

  • The hosted MCP server reaches full kortix CLI parity through a sandboxed kortix tool, and serves project skills.
  • Connectors are first-class MCP tools.
  • Projects can run their sessions in the US East region.
  • A GDPR-complete privacy policy and a public subprocessors page at /legal/subprocessors.

Improved

  • GLM 5.3 Flash is served from OpenCode Zen first, with the OpenRouter pool as fallback.
  • Slack channels have defaults, and Teams and Slack permissions cover roles, identity links, join policies, and the bot's own scope.
  • MCP OAuth refresh tokens get a grace period, a sweeper, and code-reuse revocation. Reads after a push return fresh data.

Fixed

  • A session that was open across a deploy keeps accepting prompts. A runtime restart no longer ends a turn it already accepted, and every turn end reaches the API.
  • A live session no longer goes to sleep after a short network interruption.
  • A session whose sandbox lost its OpenCode root pin resumes the right conversation.
  • A pi model that stops responding ends with a visible timeout.
  • Deleting a user revokes their API tokens, OAuth tokens, and pending authorization codes.

What's Changed

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

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

September 29, 2026

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

v0.13.42

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

New

  • Local mode: connect your computer from the desktop app. Each computer is a connector account with access approval, and the tunnel keeps running in the background while the app is closed.
  • Microsoft Teams reaches Slack parity: direct messages, a connected note, a home tab, message actions, edit and delete, /unbind, /status buttons, /sessions, the full agent picker, review cards, and call-to-action links as buttons.
  • Saved session history is always on, and a reload shows the newer saved copy.
  • Mobile: an empty session opens on its composer, messages queue while the computer wakes, and sub-agents show their saved steps.
  • A redesigned Create a project page. New accounts get their name during onboarding, not from the email address.
  • Sessions list as a tree that shows who started each run, with server-side search.
  • Copy a session ID or link from the session menu.

Improved

  • The desktop app reopens your last project on launch, the same as the web.
  • Connect-computer approval is a dialog you can close.
  • A ChatGPT login the provider refuses is refreshed, and the message says who can reconnect it.
  • Session overrides open while their catalog loads; Save commits what is ready.
  • An agent-created session saves its transcript at every turn end.
  • Audit ingest answers within the request deadline.
  • Transcript reads and gateway resolution do less work per request.
  • MCP list_projects returns the caller's project role.

Fixed

  • Prompt attachment imports keep the sender's access.
  • Computer access and machine states return 4xx errors, not 500.
  • Repository previews in channels show only public repositories.
  • The Composio Microsoft Teams app is hidden; Teams is a native channel.
  • The public health endpoint no longer exposes internal deployment details.
  • A malformed preview cookie is refused, and playground budget denials are typed.

What's Changed

  • fix(api): preserve transient git cause through grant remint (KRTX-215) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8161
  • fix(api): return typed playground budget denial (KRTX-214) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8163
  • fix(api): refuse malformed preview cookie (KRTX-332) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8166
  • feat(local-mode): connect your computer from the desktop app — accounts, access approval, forever-on tunnel by @markokraemer in https://github.com/kortix-ai/suna/pull/8168
  • fix(connectors): computer access and machine states are 4xx, not 500 by @markokraemer in https://github.com/kortix-ai/suna/pull/8169
  • fix(ci): green main after local mode (desktop smoke bun, schema index test) by @markokraemer in https://github.com/kortix-ai/suna/pull/8170
  • docs(learnings): relay close codes, build-tool deps; enforce bun in desktop build jobs by @markokraemer in https://github.com/kortix-ai/suna/pull/8171
  • chore(release): staging VERSION → 0.13.42 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8173
  • chore(release): VERSION → 0.13.42 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8174
  • refactor(web): collapse the six toast factories onto one render helper (KRTX-661) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8126
  • refactor(web): delete unused InputGroupText and InputGroupTextarea (KRTX-663) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8149
  • refactor(web): delete the unused LazyModal from modal.tsx (KRTX-659) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8132
  • refactor(api): extract relay stream helpers (KRTX-288) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8175
  • fix(sessions): an agent-created session saves its transcript at every turn end by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8177
  • fix(connectors): hide the Composio Microsoft Teams app; Teams is a native channel by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8176
  • feat(teams): show call-to-action links as buttons in answer cards by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8178
  • Promote main 1465473e7c (fully green) to staging by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8180
  • docs(repo): add the canonical design-reference table to agent files (KRTX-73) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8181
  • fix(gateway): refresh a ChatGPT login the provider refuses, and say who reconnects it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8182
  • feat(mobile): empty sessions open on the composer, messages queue while the computer wakes, sub-agents paint saved steps by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7982
  • feat(teams): Slack-parity cards — /status buttons, /sessions, full agent picker, review kinds by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8185
  • fix(api): key-reconcile finds supervised daemon; start warn deduped (KRTX-696) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8183
  • refactor(api): extract relay hop loop and response builder (KRTX-289) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8184
  • fix(web): session overrides open while their catalog loads; Save commits what is ready by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8179
  • fix(api): stop counting the parked-sandbox 503 as route 5xx (KRTX-397) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8186
  • refactor(api): split the CLI agent-token e2e into harness and matrix modules (KRTX-351) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8187
  • feat(teams): close the remaining Slack gaps — DMs, connected note, home, message action, edit/delete, /unbind by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8191
  • feat(sessions): saved history is always on, and a reload shows the newer saved copy by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8189
  • fix(web): label and translate the 3 audit routes main added without them by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8193
  • refactor(api): split index.ts into app assembly, error handlers, bootstrap and dispatch modules (KRTX-347) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8188
  • Promote main 19b2c150f0 to staging by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8194
  • fix(channels): show repo previews only for public repos, and name Kortix-hosted repos plainly by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/8199
  • fix(mcp): list_projects returns the caller's project role by @markokraemer in https://github.com/kortix-ai/suna/pull/8205
  • test(web): pin session context modal metric math behind characterization tests (KRTX-406) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8190
  • refactor(web): split pty-terminal's attach lifecycle into a connection hook (KRTX-460) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8196
  • config-releases: remove the CONFIG_RELEASES_ENABLED env switch; the project flag is the only gate by @markokraemer in https://github.com/kortix-ai/suna/pull/7780
  • fix(api): race each audit-ingest chunk against the request deadline (KRTX-522) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8198
  • refactor(web): split session-layout panel sizing and header switcher out (KRTX-459) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8200
  • fix(api): one warn line per mid-turn stop episode, not one per reaper pass (KRTX-474) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8201
  • refactor(web): flatten discoverPrefixViaFileApi cache merge into rememberPrefix (KRTX-480) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8202
  • refactor(shared): add the shared html-text and safe-url modules (KRTX-367) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8203
  • fix(web): never mark the workspace refresh skipped on reload (KRTX-698) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8204
  • fix(api): attribute provider ingress time and log the proxy give-up timeline (KRTX-471) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8206
  • chore(mobile): release 1.4.2 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8209
  • refactor(web): delete dead audit-poll hooks in session-audit-shared (KRTX-481) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8208
  • feat(api): log the Server-Timing stage breakdown on the slow and failed tail (KRTX-468) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8195
  • fix(api): one bounded sandbox endpoint resolution per transcript read (KRTX-386) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8212
  • refactor(web): remove dead model connection gate (KRTX-482) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8215
  • test(api): cover slow-request timing completion logs (KRTX-532) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8211
  • perf(api): avoid duplicate project lookup in gateway resolution (KRTX-586) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8216
  • refactor(shared): switch web and mobile to shared sanitizer (KRTX-368) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8217
  • refactor(web): extract instant-session send orchestration (KRTX-458) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8218
  • chore(sandbox): attribute slow daemon requests (KRTX-472) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8220
  • fix(api): hide deployment metadata from public health (KRTX-732) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8221
  • fix(api): bound project reads during audit contention (KRTX-470) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8222
  • refactor(web): isolate auto-scroll physics (KRTX-706) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8223
  • refactor(web): remove unused delete-operation store (KRTX-708) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8224
  • refactor(web): isolate session token metrics (KRTX-728) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8225
  • feat(web): show a subsession's parent as a header breadcrumb by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8207
  • refactor(web): remove unused account settings modal state (KRTX-719) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8226
  • refactor(shared): add tool registry lookup resolver (KRTX-748) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8228
  • fix(api): normalize prompt attachment MIME metadata (KRTX-778) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8229
  • fix(api): validate required headless auth bodies (KRTX-741) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8230
  • refactor(web): remove unused legacy status hooks (KRTX-713) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8232
  • fix(web): add Back button to the Review Center detail page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8250
  • fix(api): retry transient provider stops (KRTX-520) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8219
  • refactor(web): remove unused connector hook and duplicate steps (KRTX-709) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8234
  • refactor(tools): share host registry lookup (KRTX-750) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8235
  • refactor(web): remove unused phone factor hooks (KRTX-724) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8236
  • test(mobile): pin project screen connect and stack behavior (KRTX-762) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8239
  • fix(edge): hide backend routing headers (KRTX-780) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8240
  • fix(mobile): model pick persistence, native text selection, release 1.4.3 by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8244
  • refactor(web): remove dead billing exports and deduplicate mutations (KRTX-710) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8241
  • refactor(web): isolate sub-session context aggregation (KRTX-729) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8242
  • refactor(web): collapse panel state patches (KRTX-712) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8245
  • fix(web): repair main after 20e6b14 (KRTX-732) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8247
  • refactor(web): split burst row renderers and share trigger chrome (KRTX-380) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8248
  • fix(mcp): harden the hosted MCP server end to end — security, OAuth, protocol, tools, docs by @markokraemer in https://github.com/kortix-ai/suna/pull/8251
  • fix(api): repair main after 58555ae (KRTX-470) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8255
  • Harness-agnostic project layout: agents/, skills/, memory/, harnesses/opencode/ + agents..file by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7681
  • fix(sdk): poll /start no faster than the server can make progress (KRTX-385) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8197
  • fix(gateway): OpenCode Go works end to end; BYOK providers show their real name and logo by @markokraemer in https://github.com/kortix-ai/suna/pull/8261
  • feat(sessions): record who started each run; list sessions as a tree with server-side search (KRTX-639) by @markokraemer in https://github.com/kortix-ai/suna/pull/8258
  • fix(web): consent page names the real error; learnings: connected apps never mint durable credentials by @markokraemer in https://github.com/kortix-ai/suna/pull/8262
  • refactor(mobile): extract project session connect hook (KRTX-763) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8260
  • fix(web): pluralize the spawned-sessions toggle label (KRTX-639 follow-up) by @markokraemer in https://github.com/kortix-ai/suna/pull/8266
  • fix(web): repair main after a51d9be (KRTX-458) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8254
  • fix(api): repair main after 0a62a6b (KRTX-778) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8264
  • fix(api): answer prompts released after Stop in one turn by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8231
  • fix(web): repair main after b2b14ee (KRTX-368) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8252
  • refactor(web): delete dead admin barrel, stress-test hook and orphan shims (KRTX-707) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8257
  • refactor(web): delete dead billing hooks (KRTX-711) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8263
  • fix(pi): OpenCode decoupling W1 — pi enforces permission, write rule and skills grant; shell env, default agent, gateway gate, email tools, approval push by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8027
  • test(web): reconcile send assertions with main (KRTX-472) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8256
  • fix(api): repair main after 111927b (KRTX-470) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8267
  • refactor(web): replace composer-editor ref mirrors with one useLatestRef hook (KRTX-381) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8269
  • fix(api): repair main after cc8d4fe (KRTX-763) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8270
  • fix(runtime): never relaunch a box under a live turn; stop OpenCode retrying provider 4xx by @markokraemer in https://github.com/kortix-ai/suna/pull/8273
  • fix(api): avoid warning on vanished transcript files (KRTX-798) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8271
  • refactor(web): delete unimported subscription compat hooks (KRTX-714) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8274
  • fix(platinum): only Kortix wakes a session box; a dead daemon is relaunched, never parked by @markokraemer in https://github.com/kortix-ai/suna/pull/8277
  • feat(web): copy session ID and link from the session menu (KRTX-801) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8281
  • refactor(web): delete dead withRestrictionCheck wrapper and alias export (KRTX-725) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8275
  • fix(api): repair main after 7e1bbfc (KRTX-368) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8280
  • refactor(web): consolidate scoped session filter selectors and toggles (KRTX-715) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8282
  • fix(api): repair main after 5203c66 (KRTX-707) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8283
  • fix(api): repair main after fbb00f4 (KRTX-711) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8284
  • refactor: OpenCode decoupling W2 — delete dead routes, hooks, aliases and renderers (C1–C7) by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8021
  • feat(web): redesign /new and name new accounts at onboarding (KRTX-638) by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8286
  • refactor(web): consolidate preference setters (KRTX-718) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8285
  • fix(tests): green main for the v0.13.42 promotion (artifact default_agent, MCP job shell, mobile --isolate) by @markokraemer in https://github.com/kortix-ai/suna/pull/8278
  • fix(desktop): reopen the last project on launch, same as web by @markokraemer in https://github.com/kortix-ai/suna/pull/8290
  • fix(api): retain principal access for prompt attachment imports (KRTX-806) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8289
  • fix(desktop): make the connect-computer approval a closable dialog by @markokraemer in https://github.com/kortix-ai/suna/pull/8293
  • refactor(web): delete dead useLeadingDebouncedCallback and unused barrel re-exports (KRTX-720) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8295
  • refactor(web): delete dead presentation viewer compat hooks (KRTX-722) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8296
  • fix: green main for the v0.13.42 promotion (opencode_archive contract, /new Log out tests, design-system i18n) by @markokraemer in https://github.com/kortix-ai/suna/pull/8292
  • Promote main 601cb9b5fd to staging (v0.13.42) by @markokraemer in https://github.com/kortix-ai/suna/pull/8297
  • v0.13.42 — Connect your own computer from the desktop app, Teams at Slack parity, and saved history that is always on. by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/8300

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

September 29, 2026

Kortix as an MCP server

v0.13.41

Kortix as an MCP server, Codex CLI support, reminders, approvals you can answer, and sessions that repair themselves instead of stopping.

New

  • One account-level MCP server at /v1/mcp, bound to your token like the CLI. It exposes sandbox shell and files, skills, and the session list; long commands run as jobs, and connected apps can be listed and revoked. kortix mcp runs the whole CLI as an MCP server, and a Connect MCP menu sets it up.
  • The LLM gateway accepts the OpenAI Responses API, so the Codex CLI works against Kortix.
  • Reminders: schedule prompts into a session, with a Reminders view and a per-project flag.
  • Approvals: the agent describes each gated call, the approver can reply, and approval cards reach Slack and Teams.
  • New projects get a three-step onboarding and a first chat.
  • GitHub projects can be created under personal GitHub accounts, and their sessions start.
  • Sandbox templates can run Docker inside the sandbox.
  • Agents can store secrets they already have, and long setup links load.
  • ChatGPT accounts show when they need reconnection, and a failed ChatGPT turn offers Reconnect or Connect ChatGPT.
  • Saved session history is 1:1 with the live session and on by default, including sub-agents.
  • The mobile app signs in to self-hosted Kortix instances.
  • Slack: a session's Slack thread is bound automatically so replies come back to it, and the agent can remove its own reactions.
  • The CLI saves large connector results as JSON (--out, and MCP results above 16 KB).

Improved

  • A project's fallback model chain runs when a model is unavailable, when a ChatGPT plan or BYOK model fails, and when every pooled account is paused or needs reconnection.
  • The LLM gateway bounds requests per credential.
  • DeepSeek and GLM accept images and a thinking control; model hosting is named accurately.
  • Session connection and run status are accurate across web, mobile and the SDK, without flapping.
  • A session is never parked while its runtime repair is still running, and its model converges when it opens.
  • Sessions move off retired managed models automatically, and the error names the cause.
  • Sharing a session switches it to the project's keys instead of stranding it.
  • Sandbox images carry every runtime asset, and updates move only the chunks that changed.
  • Audit events are ingested and reconciled without blocking requests or scanning whole tables.
  • Sandbox health polls and connector listings answer faster.

Fixed

  • Every prompt file reaches the computer.
  • Every agent picker lists the project's own agent roster.
  • Connector toolkit search returns the same page shape as the unsearched list.
  • A dead credential gets a typed 401, so retrying clients stop.
  • The Firecrawl proxy rejects private and metadata URLs.
  • Values can be copied out of the XLSX and CSV viewers.
  • A pinned runtime that still serves no longer refuses its session.
  • Old saved tool calls show what they kept; an empty session opens on its composer.
  • A stopped session wakes without needing a message.
  • GET /kortix/part in the sandbox requires the same credential as its sibling routes.
  • Teams: the bot token is sent only to stored service URLs, and the sign-in link appears only in one-to-one chats.

What's Changed

  • feat(slack): auto-bind a session's Slack thread so replies come back to it by @markokraemer in https://github.com/kortix-ai/suna/pull/7869
  • chore: repo-wide dead code, asset, and dependency cleanup by @markokraemer in https://github.com/kortix-ai/suna/pull/7867
  • docs(repo): self-merge to main when verified; release gates keep explicit approval by @markokraemer in https://github.com/kortix-ai/suna/pull/7873
  • chore: repo cleanup follow-ups — stale paths, orphan tests, executor-sdk by @markokraemer in https://github.com/kortix-ai/suna/pull/7876
  • feat(cli,web): kortix mcp — the whole CLI as an MCP server + Connect MCP menu by @markokraemer in https://github.com/kortix-ai/suna/pull/7875
  • feat(slack): agent can remove its own reactions — slack unreact by @markokraemer in https://github.com/kortix-ai/suna/pull/7878
  • feat(contributing): script a preview demo account into managed-model access by @markokraemer in https://github.com/kortix-ai/suna/pull/7879
  • chore(release): VERSION → 0.13.41 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7883
  • fix(sandbox): gate GET /kortix/part with the same credential check as its siblings by @markokraemer in https://github.com/kortix-ai/suna/pull/7865
  • chore(release): staging VERSION → 0.13.41 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7884
  • feat(llm-gateway): OpenAI Responses API ingress — Codex CLI support by @markokraemer in https://github.com/kortix-ai/suna/pull/7880
  • fix(reaper): close row↔VM divergence in every direction, for every box by @markokraemer in https://github.com/kortix-ai/suna/pull/7861
  • feat(mcp): hosted MCP server with OAuth sign-in, behind the per-project mcp flag by @markokraemer in https://github.com/kortix-ai/suna/pull/7881
  • fix(contributing): preview-subscribe refuses live Stripe keys by @markokraemer in https://github.com/kortix-ai/suna/pull/7885
  • ci: stop a superseded preview suite; two browser workers per shard by @markokraemer in https://github.com/kortix-ai/suna/pull/7886
  • fix(worktree): skip the Apps runtime build when go is not installed by @markokraemer in https://github.com/kortix-ai/suna/pull/7898
  • feat(cli): save large connector results as JSON (call --out, MCP spill above 16 KB) by @markokraemer in https://github.com/kortix-ai/suna/pull/7887
  • fix(preview): admit suites on pool and GitHub capacity, stop idle hosts, report only this run by @markokraemer in https://github.com/kortix-ai/suna/pull/7909
  • fix(sandbox): bake every runtime asset into the image, and move only the chunks that changed by @markokraemer in https://github.com/kortix-ai/suna/pull/7877
  • docs(learnings): bound agent tool output that grows with upstream data by @markokraemer in https://github.com/kortix-ai/suna/pull/7917
  • fix(preview): pull immutable images only when missing, wait out Docker Hub limits; GitHub admission at 100/h by @markokraemer in https://github.com/kortix-ai/suna/pull/7931
  • ci(preview): the label deploys and never tests; a superseded run never deploys by @markokraemer in https://github.com/kortix-ai/suna/pull/7892
  • fix(preview): stop preview hosts after 1 h idle, not 3 h by @markokraemer in https://github.com/kortix-ai/suna/pull/7951
  • fix(runtime-convergence): admission refusal replaces the box, never parks it by @markokraemer in https://github.com/kortix-ai/suna/pull/7905
  • fix(preview): create preview hosts with 8 GB, not 16 GB by @markokraemer in https://github.com/kortix-ai/suna/pull/7955
  • fix(sessions): never park a session while its repair is still running by @markokraemer in https://github.com/kortix-ai/suna/pull/7954
  • fix(llm-gateway): re-point sessions off retired managed models, name the cause by @markokraemer in https://github.com/kortix-ai/suna/pull/7953
  • fix(sessions): sharing a session switches it to the project's keys, never strands it by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7657
  • feat(sessions): saved history is 1:1 and on by default, sub-agents included by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7853
  • fix(web): a share refreshes the session's provider key panel by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7958
  • feat(providers): ChatGPT accounts show when they need reconnection by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7658
  • fix(sessions): stop parking a session mid-repair, and converge its model on open by @markokraemer in https://github.com/kortix-ai/suna/pull/7957
  • fix(sessions): a re-pointed model pin has to travel on the prompt by @markokraemer in https://github.com/kortix-ai/suna/pull/7959
  • fix(sessions): a PINNED runtime that still serves must not refuse its session by @markokraemer in https://github.com/kortix-ai/suna/pull/7961
  • feat(sessions): failed ChatGPT turns offer Reconnect or Connect ChatGPT by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7651
  • fix(sessions): old saved tool calls show what they kept; an empty session opens on its composer by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7960
  • fix(sessions): unreachable must say WHICH of its five failures happened by @markokraemer in https://github.com/kortix-ai/suna/pull/7962
  • fix(teams): bot token only to stored service URLs; sign-in link only in one-to-one chats by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7963
  • Promote main 267e2d7a34 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/7967
  • fix(sessions): every prompt file reaches the computer by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7966
  • fix(channels): a failed session start closes its own platform's card, never another's by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7965
  • fix(mobile): restore inline transcript link taps (KRTX-562) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7850
  • fix(sessions): stamp the unreachable cause on the row, not only in a log by @markokraemer in https://github.com/kortix-ai/suna/pull/7968
  • fix(worktree): refuse a commit on a foreign branch in a pnpm worktree by @markokraemer in https://github.com/kortix-ai/suna/pull/7973
  • fix(review): remove risk labels from the Review Center by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7978
  • fix(llm-gateway): a project's fallback chain runs when a ChatGPT plan or BYOK model fails by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7979
  • fix(sessions): record WHO answered an unreachable, not just the status code by @markokraemer in https://github.com/kortix-ai/suna/pull/7974
  • fix(web): copy values out of the XLSX and CSV viewers by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7977
  • fix(sessions): nest sub-agent sessions under a coordinator on an older page by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7975
  • refactor(kortixd): layer src into app, routes, services and lib, with enforced import boundaries by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/7856
  • fix(web): ChatGPT sign-in dialogs show a finishing state instead of an idle Reconnect button by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7980
  • fix(sdk): wake stopped session without a message (KRTX-570) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7855
  • fix(web): keep the viewer copy shortcut out of the hardcoded-text audit by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7985
  • fix(preview): capture preview templates at the host's 8 GB by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7971
  • fix(runtime-convergence): admission is always enforced; repair before replace by @markokraemer in https://github.com/kortix-ai/suna/pull/7987
  • ci: a pull request into main runs nothing; the dev box is the pre-merge gate by @markokraemer in https://github.com/kortix-ai/suna/pull/7995
  • fix(gateway): a non-streaming ChatGPT failure keeps its HTTP status by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7984
  • feat(mcp): sandbox shell and files, skills, session list; audit as mcp by @markokraemer in https://github.com/kortix-ai/suna/pull/7994
  • fix(sdk,web,mobile): accurate session connection and run status, no flapping by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7976
  • fix(gateway): run the project's chain when every account is paused or needs reconnection, after the wallet gate by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7983
  • release(v0.13.41): ChatGPT-plan fallback fixes (#7979, #7983, #7984) by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7996
  • fix(mobile): hide OpenCode built-ins in agent picker (KRTX-604) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7888
  • fix(sdk): verify final transcript after in-flight poll (KRTX-450) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7894
  • fix(web): show parked computer as asleep (KRTX-191) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7895
  • refactor(api): simplify secret consumer and delivery mapping (KRTX-220) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7896
  • test(api): pin route-binding envelopes (KRTX-276) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7900
  • test(api): pin relay framing and refusal envelopes (KRTX-287) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7901
  • refactor(api): split hosted connection connect phases (KRTX-294) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7903
  • refactor(api): flatten queued continue delivery phases (KRTX-258) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7904
  • refactor(api): isolate template runtime fingerprinting (KRTX-313) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7907
  • refactor(llm-gateway): split AI SDK request modules (KRTX-341) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7910
  • refactor(web): remove unreachable sub-agent copies (KRTX-371) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7911
  • refactor(api): split GitHub integration by responsibility (KRTX-318) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7912
  • refactor(web): share provider pool editor shell (KRTX-360) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7913
  • fix(sdk): ignore replayed final response chunks (KRTX-493) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7915
  • refactor(web): share transcript export option rows (KRTX-359) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7916
  • refactor(api): split trigger responsibilities (KRTX-298) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7920
  • refactor(web): flatten session override rows (KRTX-361) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7921
  • refactor(sdk): normalize tool card aliases (KRTX-490) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7922
  • refactor(sdk): deduplicate web search source mapping (KRTX-491) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7923
  • refactor(sdk): isolate hydration part reconciliation (KRTX-511) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7927
  • refactor(web): share show action toolbar (KRTX-370) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7928
  • refactor(api): split snapshot ledger and archive publisher (KRTX-305) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7930
  • refactor(api): split auth principal resolvers (KRTX-349) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7933
  • refactor(api): split prompt attachment lifecycle modules (KRTX-323) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7939
  • refactor(api): split snapshot builder concerns (KRTX-311) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7942
  • refactor(api): break sandbox provider registry cycle (KRTX-553) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7943
  • refactor(api): split custom role policy routes (KRTX-547) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7944
  • refactor(api): dispatch create session idempotency conflicts (KRTX-268) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7948
  • fix(connectors): preserve account when chat link finalize retries (KRTX-438) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7950
  • feat(onboarding): open new projects on a first chat instead of auto-sending by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7337
  • revert(runtime-convergence): always-on admission regressed the sweep 8 PASS -> 1 by @markokraemer in https://github.com/kortix-ai/suna/pull/7998
  • ci: test and preview are one-shot explicit opt-ins; a red main names its suspects by @markokraemer in https://github.com/kortix-ai/suna/pull/7997
  • feat(mcp): one account-level MCP server at /v1/mcp, bound to the token like the CLI by @markokraemer in https://github.com/kortix-ai/suna/pull/7999
  • chore(deps): bump bridgecrewio/checkov-action from 12.3119.0 to 12.3125.0 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7989
  • chore(deps): bump github/codeql-action from 4.38.1 to 4.38.2 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7990
  • chore(deps): bump terraform-linters/setup-tflint from 6.3.0 to 6.3.1 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7992
  • chore(deps): bump github/codeql-action/upload-sarif from 4.38.1 to 4.38.2 by @dependabot[bot] in https://github.com/kortix-ai/suna/pull/7993
  • fix(api): warn once per unreadable turn episode (KRTX-544) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7940
  • fix(api): sign manual stop transcript capture as stopper (KRTX-427) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7929
  • fix(api): explain personal GitHub App repository creation refusal (KRTX-232) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7918
  • feat(desktop): hide developer Frontend URL presets in production builds (KRTX-48) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7782
  • fix(api): classify manifest push policy rejection (KRTX-518) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7819
  • test(session): pin host HTML sanitizer outputs (KRTX-366) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7908
  • refactor(api): isolate control snapshot readers (KRTX-219) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7890
  • refactor(web): remove unused provider display helpers (KRTX-569) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7938
  • feat(sandbox): container_runtime templates run Docker with bridge + overlay by @markokraemer in https://github.com/kortix-ai/suna/pull/8001
  • refactor(api): dedupe runtime wake cleanup updates (KRTX-267) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7897
  • refactor(api): split gateway candidate resolution (KRTX-343) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7914
  • refactor(api): share token last-used throttle (KRTX-306) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7902
  • test(web): characterize session chat shell (KRTX-354) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7937
  • refactor(api): split lifecycle command store (KRTX-256) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7899
  • refactor(api): split member and invitation registration (KRTX-546) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7946
  • refactor(api): isolate Platinum discovery and uploads (KRTX-314) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7906
  • refactor(api): split public App proxy policies (KRTX-561) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7945
  • refactor(sandbox): flatten OpenCode asset guards (KRTX-515) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7925
  • refactor(llm-gateway): split server and share request admission (KRTX-344) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7926
  • fix(projects): refuse new-repo create under a personal GitHub account by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7445
  • docs(llm-gateway): restore request-path rationale dropped by the server split by @markokraemer in https://github.com/kortix-ai/suna/pull/8003
  • ci(preview): the preview label deploys only (~7 min); only a dispatch runs --target-full by @markokraemer in https://github.com/kortix-ai/suna/pull/8004
  • fix(sessions): the box owns its identity key — reconcile the row to it by @markokraemer in https://github.com/kortix-ai/suna/pull/8000
  • refactor(api): split session creation modules (KRTX-222) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7936
  • refactor(web): split tool infrastructure by concern (KRTX-369) by @agent-kortix in https://github.com/kortix-ai/suna/pull/7932
  • feat(mcp,oauth): long commands as jobs; connected apps list and revoke by @markokraemer in https://github.com/kortix-ai/suna/pull/8006
  • fix(sdk): every agent picker reads the Kortix project roster by @sutharjay1 in https://github.com/kortix-ai/suna/pull/8007
  • fix(audit): index account_id on the two reconciliation source tables; bound the reconciliation retry loop by @markokraemer in https://github.com/kortix-ai/suna/pull/7970
  • Promote main 278a24c633 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/8008
  • feat(secrets): agents store secrets they already have; long setup links load by @markokraemer in https://github.com/kortix-ai/suna/pull/8009
  • fix(db): move the GitHub-installation migrations after the newest merged migration by @markokraemer in https://github.com/kortix-ai/suna/pull/8010
  • fix(mobile): SDK composer lists, self-hosted sign-in, loader, md PDF by @sutharjay1 in https://github.com/kortix-ai/suna/pull/7981
  • fix(deps): raise .deepsec overrides past 17 Trivy findings by @markokraemer in https://github.com/kortix-ai/suna/pull/8011
  • fix(tests): green Tests on main — catalog order, monitor drop accounting, lifecycle races, CAS 409, revenuecat DB leak by @markokraemer in https://github.com/kortix-ai/suna/pull/8005
  • fix(tests): the e2e env reader skips dotenvx ciphertext (every browser journey red since #7981) by @markokraemer in https://github.com/kortix-ai/suna/pull/8013
  • fix(api): copy the SDK from deps so its llm-catalog import resolves in the image by @markokraemer in https://github.com/kortix-ai/suna/pull/8014
  • docs(learnings): a committed env value is ciphertext; helpers treat it as absent by @markokraemer in https://github.com/kortix-ai/suna/pull/8015
  • fix(sandbox): the secret-capabilities prompt tells agents to store a pasted value by @markokraemer in https://github.com/kortix-ai/suna/pull/8016
  • docs(learnings): runtime workspace imports need the deps-stage copy in the API image by @markokraemer in https://github.com/kortix-ai/suna/pull/8017
  • OpenCode decoupling W0: per-harness session flows, OpenCode-name lint ratchet, shared host health by @DimitrijeGlibic in https://github.com/kortix-ai/suna/pull/8002
  • fix(deploy): an ECS rollout succeeds only on the revision it registered by @markokraemer in https://github.com/kortix-ai/suna/pull/8018
  • feat(reminders): session reminders — scheduled prompts into one session by @markokraemer in https://github.com/kortix-ai/suna/pull/8020
  • feat(approvals): agent describes gated calls; approver can reply; resume keeps the session's model by @markokraemer in https://github.com/kortix-ai/suna/pull/8019
  • fix(models): name the US provider, not OpenRouter; restore ZDR/US line by @markokraemer in https://github.com/kortix-ai/suna/pull/8022
  • feat(web): launch film as code + /launch page by @markokraemer in https://github.com/kortix-ai/suna/pull/8023
  • docs(learnings): round a feed price before comparing it to a cap by @markokraemer in https://github.com/kortix-ai/suna/pull/8024
  • fix(web): /presentations 500 on production builds; drop the Claude/Cursor subscription claim by @markokraemer in https://github.com/kortix-ai/suna/pull/8028
  • Promote main 78395d4286 (last fully green main) to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/8025
  • feat(channels): approval cards for gated connector calls in Slack and Teams by @markokraemer in https://github.com/kortix-ai/suna/pull/8033
  • fix(reaper): stop logging transient provider throttles as errors (KRTX-617) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8035
  • fix(api): log the title-generate gateway status as upstream_status (KRTX-612) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8034
  • refactor(api): delete dead runtime-wake-fence and inbox-rows exports (KRTX-266) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8032
  • fix(sdk): exclude OpenCode built-in agents from the selectable roster (KRTX-642) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8029
  • feat(web): 'Sovereign' film on real product captures + 'Rent vs own' (16:9, 9:16) by @markokraemer in https://github.com/kortix-ai/suna/pull/8045
  • fix(models): images + thinking control for DeepSeek/GLM, stale-capability converge, US hosting hint by @markokraemer in https://github.com/kortix-ai/suna/pull/8026
  • docs(learnings): curate modalities and reasoning options for managed models by @markokraemer in https://github.com/kortix-ai/suna/pull/8052
  • fix(web): stop the Kortix upgrade upsell on a provider usage limit (KRTX-621) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8037
  • fix(kortixd): stop config-release retries on a dead session token (KRTX-613) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8036
  • perf(connectors): opt catalog summary paths out of action schemas (KRTX-615) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8046
  • perf(api): serve sandbox-health polls from cache while refreshing (KRTX-620) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8044
  • fix(api): log only failed requests at WARN (KRTX-627) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8048
  • fix(kortixd): stop polling runtime-assets manifest with a refused session credential (KRTX-636) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8050
  • fix(api): log an unreachable pre-stop abort as info, not a warn (KRTX-619) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8042
  • refactor(api): split projects/secrets.ts into envelope, grant-policy and consumer modules (KRTX-322) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8062
  • test(api): characterize the preview forwarder and WS upstream resolver (KRTX-327) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8060
  • test(api): enforce the model-picker ↔ resolver parity for pooled secrets (KRTX-431) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8065
  • perf(api): one mirror fetch per session-config read (KRTX-629) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8063
  • fix(api): stop audit ingest running past the 25s request deadline (KRTX-644) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8061
  • refactor(api): dedupe SSE usage settlement into services/llm.ts (KRTX-335) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8057
  • docs(learnings): record the background-retry hot-loop rule from the accounts p95 incident (KRTX-630) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8053
  • fix(web): de-noise digest-less React #419 Suspense bailout from frontend Sentry (KRTX-628) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8049
  • fix(hooks): the .env guard checks its result and uses the pinned dotenvx by @markokraemer in https://github.com/kortix-ai/suna/pull/8074
  • fix(kortixd): tests run with an isolated HOME; the CLI $HOME fallback is Linux-only by @markokraemer in https://github.com/kortix-ai/suna/pull/8080
  • refactor(api): dedupe credit-reservation helpers and flatten tryAuthenticate (KRTX-334) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8072
  • fix(api): turn-end orphan repair requires the reaper's age floor (KRTX-624) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8081
  • fix(db): index provider_events.account_id for audit reconciliation (KRTX-643) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8071
  • refactor(api): route path-form public shares through the shared sandbox forwarder (KRTX-333) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8069
  • fix(kortixd): stop the dead-credential relays on a revoked session token (KRTX-446) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8066
  • fix(llm-gateway): run the fallback chain when a model is unavailable (KRTX-633) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8030
  • fix(api): bound the audit read-path flush barrier (KRTX-631) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8070
  • feat(reminders): Reminders UI + per-project reminders feature flag by @markokraemer in https://github.com/kortix-ai/suna/pull/8073
  • fix: make main Tests green (#8019/#8057 mocks, dead-token breaker probe, SWR clock, launch i18n exemption) by @markokraemer in https://github.com/kortix-ai/suna/pull/8064
  • docs(learnings): packages lane before merging a mocked-module change; breakers need a probe by @markokraemer in https://github.com/kortix-ai/suna/pull/8107
  • fix(db): drop the unused audit_events account/client-source/time index by @markokraemer in https://github.com/kortix-ai/suna/pull/8093
  • docs(skills): route "check back later" to reminders from the agent prompt, onboarding, and Slack by @markokraemer in https://github.com/kortix-ai/suna/pull/8112
  • refactor(api): split loadProjectConfig into a manifest resolver and one resource scanner (KRTX-307) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8097
  • fix(tests): fund MCP-3's team account before it creates a session by @markokraemer in https://github.com/kortix-ai/suna/pull/8099
  • fix(connectors): restore items/cursor wire shape for toolkit search by @markokraemer in https://github.com/kortix-ai/suna/pull/8100
  • fix(tests): RTA-5 compares only box identity fields, not build stamp by @markokraemer in https://github.com/kortix-ai/suna/pull/8101
  • fix(mobile): open a Show tool preview in-session, not the Browser tab (KRTX-602) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8031
  • fix(api): answer POST /internal/gateway/trace without waiting on the audit pool (KRTX-609) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8038
  • refactor(api): dedupe session-lifecycle runtime fetches into one transport (KRTX-265) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8039
  • fix(api): bound the Quick Queue interrupt re-arm loop on an unreachable runtime (KRTX-626) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8040
  • fix(api): return 499 for a client-cancelled llm-gateway proxy request (KRTX-616) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8041
  • perf(proxy): attribute upstream fetch time so slow stages are queryable (KRTX-577) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8067
  • fix(web): filter bare app:/// iOS WebView stack-overflow noise (KRTX-640) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8068
  • fix(web): pointer cursor on every clickable element (KRTX-15) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8077
  • refactor(api): flatten turn-stream kind callback into per-kind handlers (KRTX-280) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8082
  • refactor(api): split projects/triggers.ts into types, manifest-IO and entry modules (KRTX-320) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8083
  • refactor(projects): one Git connection/metadata writer shape (KRTX-302) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8084
  • fix(db): reconcile DB Drift Sentinel gaps (prod enum, dev stray column, guarded NOT NULLs) by @markokraemer in https://github.com/kortix-ai/suna/pull/8012
  • fix(learnings): regenerate MEMORY.md so the index matches entries/ by @markokraemer in https://github.com/kortix-ai/suna/pull/8146
  • fix(tests): green main — learnings index check ignores squash-merge order; one AsyncStorage mock in mobile tests by @markokraemer in https://github.com/kortix-ai/suna/pull/8144
  • refactor(api): split gateway routes into focused route modules (KRTX-291) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8086
  • fix(api): return a typed 401 for a dead credential so retrying clients stop (KRTX-446) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8087
  • refactor(api): split sandbox-env-sync into snapshot, push, propagation and session-push modules (KRTX-300) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8088
  • refactor(api): split projects/agents.ts into parse/grants/crud modules (KRTX-319) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8090
  • test(web): pin dotm variant markup and resolver outputs (KRTX-654) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8092
  • refactor(api): split activateWithCas's transaction body out (KRTX-315) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8094
  • fix(api): reject private and metadata URLs at the Firecrawl proxy (KRTX-648) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8103
  • refactor(api): split commitMultipleFilesToBranch into a commit-writer module (KRTX-308) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8106
  • fix(api): repair main after 5f2ae97 (KRTX-620) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8114
  • fix(kortixd): count every terminal credential 401 toward the dead-token breaker (KRTX-636) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8115
  • refactor(web): extract the sidebar context kernel to sidebar-context.tsx (KRTX-650) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8123
  • feat(api): bound LLM gateway requests per credential (KRTX-664) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8124
  • refactor(web): delete the four dead Field subcomponents (KRTX-660) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8127
  • fix(api): keep Platinum stopping state unconfirmed (KRTX-667) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8129
  • refactor(web): merge LeftArc and RightArc into one ArcSvg (KRTX-658) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8134
  • fix(api): treat a stop-confirm timeout while stopping as a lifecycle transition (KRTX-667) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8135
  • refactor(api): split the session-scope rescope handler into decision helpers (KRTX-281) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8139
  • refactor(web): delete the dead CommandItemHoverCard and CommandKbd (KRTX-657) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8140
  • perf(connectors): stop fetching action schemas the listing discards (KRTX-665) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8141
  • perf(api): serve the maintenance config from the cached platform setting (KRTX-666) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8145
  • refactor(web): delete dead zoom helpers and dialog parts in preview-image (KRTX-662) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8147
  • fix(auth): KRTX-668 revoke logout sessions and test refresh replay by @agent-kortix in https://github.com/kortix-ai/suna/pull/8148
  • fix(mobile): close the remaining tab-store AsyncStorage mock race by @markokraemer in https://github.com/kortix-ai/suna/pull/8151
  • fix(audit): rate-limit the write-contention warning (KRTX-614) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8043
  • perf(api): one audit-ingest statement per relay batch (KRTX-665) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8136
  • refactor(api): flatten turn-stream kind callback into per-kind handlers (KRTX-280) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8119
  • Revert #8148: logout session revocation broke AUTH-1/AUTH-3 on main by @markokraemer in https://github.com/kortix-ai/suna/pull/8153
  • fix(billing): warn once per wallet drain episode, not per overdraft settlement (KRTX-338) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8047
  • fix(api): classify transient Platinum guest renewal failures (KRTX-685) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8156
  • fix(web): pointer cursor on every clickable element (KRTX-15) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8089
  • refactor(api): split secrets.ts create handler and its validation ladder (KRTX-292) by @agent-kortix in https://github.com/kortix-ai/suna/pull/8117
  • fix: green main — config archive race (CodeQL), ECS budget reason, cursor-default comments by @markokraemer in https://github.com/kortix-ai/suna/pull/8159
  • Promote main 42bc3cc2c7 (fully green) to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/8160
  • Release v0.13.41 — Kortix as an MCP server by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7969

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

September 28, 2026

Stuck sandboxes recover

v0.13.40

Sessions recover a stuck sandbox and a stale runtime on their own.

Fixed

  • A session whose sandbox name was still held by an old archived sandbox could never get a new sandbox. It now provisions under a fresh name.
  • Opening a session repairs a stale runtime immediately instead of waiting for the background check.
  • A prompt parked while the sandbox restarts keeps its sandbox deadline through every retry.
  • A Firefox browser-extension error no longer reaches error reporting.

What's Changed

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

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

September 27, 2026

Sessions ride through outages

v0.13.39

Sessions keep working through model and runtime outages, turns start faster, and sessions open instantly.

Improved

  • Opening a session shows its saved history immediately from cache while the live transcript loads, in one request instead of several.
  • Turns start faster: configuration, model catalog and ingress checks run in parallel.
  • Sessions retry transient model errors inside the turn and continue through short provider outages instead of stopping.
  • A session whose runtime was lost resumes automatically when it was running unattended.
  • The sandbox model catalog stays current across boot, wake, restart and every turn.
  • Streaming responses never forward a partial event line; a stream cut before the first byte is retried, and a later cut ends with an explicit error.
  • The kortixt terminal desk adds cloud sessions, port forwarding, a Links panel and a self-updating launcher.
  • Managed models route through their OpenRouter pools by default; direct Morph routing is off unless an operator enables it.
  • Gateway request logs break admission time down by step: preparation, admission, routing, resolution and billing.

Fixed

  • Turns were sometimes marked abandoned while still running.
  • Transcript requests could return 401 during a session.
  • Stopped sandboxes could stay running after their session ended.
  • Orphan cleanup only stops sandboxes that this deployment's database owns.

What's Changed

  • feat(sdk,web,mobile): instant session loads — history from cache, lists that never block, one status vocabulary by @Ino-Bagaric in https://github.com/kortix-ai/suna/pull/7778
  • feat(gateway): split gateway admission time by step by @markokraemer in https://github.com/kortix-ai/suna/pull/7833
  • chore(release): staging VERSION → 0.13.39 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7834
  • chore(release): VERSION → 0.13.39 [skip ci] by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7835
  • Promote main da10498817 to staging (v0.13.39) by @markokraemer in https://github.com/kortix-ai/suna/pull/7836
  • fix(tests): pi harness must not read the developer's own skills by @markokraemer in https://github.com/kortix-ai/suna/pull/7790
  • fix(daemon): asset swap yields to an in-flight config convergence by @markokraemer in https://github.com/kortix-ai/suna/pull/7791
  • fix(runtime): sandbox model catalog stays current — boot, wake, restart, turn-start by @markokraemer in https://github.com/kortix-ai/suna/pull/7786
  • docs(spec): runtime convergence — no terminal states, admission control by @markokraemer in https://github.com/kortix-ai/suna/pull/7785
  • test(config-releases): pin the proven-check tool-loading contract at the unit level by @markokraemer in https://github.com/kortix-ai/suna/pull/7783
  • test(config-releases): CFG-12 race rounds ask a per-round-unique directive by @markokraemer in https://github.com/kortix-ai/suna/pull/7802
  • docs(learnings): a one-shot boot decision hardens forever on a resuming box by @markokraemer in https://github.com/kortix-ai/suna/pull/7808
  • fix: false-abandoned turns, transcript 401s, zombie sandboxes by @markokraemer in https://github.com/kortix-ai/suna/pull/7807
  • fix(daemon): retry transient model errors in-turn and resume through outages — never stop on "Stream ended without finish_reason" by @markokraemer in https://github.com/kortix-ai/suna/pull/7797
  • fix(runtime): shed processes before losing the VM; auto-resume unattended sessions after runtime_gone by @markokraemer in https://github.com/kortix-ai/suna/pull/7806
  • fix(llm-gateway): never forward a partial SSE line; retry a stream cut before first byte, else emit an explicit error frame by @markokraemer in https://github.com/kortix-ai/suna/pull/7804
  • fix(gateway): turn Morph direct off by default (staging hotfix of #7839) by @markokraemer in https://github.com/kortix-ai/suna/pull/7841
  • fix(gateway): turn Morph direct off by default for every managed model by @markokraemer in https://github.com/kortix-ai/suna/pull/7839
  • Remove docs/ for good and every citation that recreated it by @markokraemer in https://github.com/kortix-ai/suna/pull/7843
  • fix(apps): accept the configured non-empty control secret by @kubet in https://github.com/kortix-ai/suna/pull/7849
  • fix(sandbox): fence orphan cleanup by database ownership by @kubet in https://github.com/kortix-ai/suna/pull/7852
  • fix(sandbox): stage database-owned orphan cleanup by @kubet in https://github.com/kortix-ai/suna/pull/7854
  • fix(worktree): new branches fork from fresh origin/main, not the stale local main by @markokraemer in https://github.com/kortix-ai/suna/pull/7846
  • kortixt: one-command cloud engineering desk; self-updating launcher; port forwarding; e2e sweep fixes by @markokraemer in https://github.com/kortix-ai/suna/pull/7789
  • fix(api): durable per-session env-sync skip closes the 2-replica cache miss by @markokraemer in https://github.com/kortix-ai/suna/pull/7848
  • test(tests): turn-latency benchmark — pnpm test -- --latency --target by @markokraemer in https://github.com/kortix-ai/suna/pull/7847
  • perf(turn-start): parallelize config/catalog/ingress pre-flight, coalesce the health probe by @markokraemer in https://github.com/kortix-ai/suna/pull/7842
  • One-read session view: fold audit into the open bundle, dedupe scope+connectors by @markokraemer in https://github.com/kortix-ai/suna/pull/7845
  • infra: colocate dev/staging API with their database region by @markokraemer in https://github.com/kortix-ai/suna/pull/7844
  • feat(kortixd): the box side of runtime convergence (Rule 1, 3, blocked) by @markokraemer in https://github.com/kortix-ai/suna/pull/7792
  • feat(runtime-convergence): API-side desired-runtime document, admission control, runtime block by @markokraemer in https://github.com/kortix-ai/suna/pull/7793
  • Promote main 38ac81a125 to staging by @markokraemer in https://github.com/kortix-ai/suna/pull/7858
  • Release v0.13.39 — Sessions ride through outages by @github-actions[bot] in https://github.com/kortix-ai/suna/pull/7837

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

September 27, 2026

Reliable image builds, and session oversight that turns off everywhere

v0.13.38

Sandbox image builds keep working under the snapshot quota, and turning off session oversight takes effect everywhere at once.

Fixed

  • Snapshot cleanup now removes images left behind by deleted App deployments, so new sandbox images keep building instead of hitting the provider quota.
  • Turning off session oversight takes effect immediately on every server. Admins can no longer open a member's private session for a few seconds afterwards.

Improved

  • Gateway request logs split latency into admission time and upstream wait.
  • The Settings panel and icon pickers load on demand, so the app opens faster.

What's Changed

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

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

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