github kortix-ai/suna v0.9.98
v0.9.98 — Marketplace by default, People Search, SCIM provisioning, and session reliability

latest releases: v0.9.99, dev-latest
3 hours ago

New

  • Marketplace is on by default. Every project can now browse and install marketplace skills without a feature flag. Kortix Meet, Kortix Computer, and People Search are opt-in installs rather than part of the default set.
  • People Search. A new starter tool that searches LinkedIn profiles (backed by Apify), runs to completion without timeouts, and is billed per call.
  • Expanded skill library. A much larger set of default skills ships with every new project, and the auto-created "My First Project" now gets the full starter pack.
  • SCIM provisioning that just works. Error-free user provisioning from your IdP: invited users arrive active, PUT updates are supported, email lookups are dedup-safe, and Azure AD connector setup gets /ResourceTypes + /Schemas discovery. The SCIM setup dialog now shows the paste-ready absolute base URL.
  • SSO group auto-provisioning. An opt-in toggle creates groups (and their mappings) automatically from IdP claims on login, so directory structure flows into Kortix without manual setup. SSO and SCIM settings cards got status pills and visual group mappings.
  • Upgrades section. Projects have an Upgrades registry with a one-off prompt runner, so platform-side improvements (like a baseline refresh) can be applied to existing projects on demand.
  • Files is a standalone page with Google Drive-style colored folder tiles, out of the Customize overlay. Customize itself moves to a master-detail sidebar for agents, skills, and commands.
  • Warm prebake on push. Sandbox images warm when a commit lands — for every provider a session can use — so sessions on recently-active projects boot faster.
  • CLI: attach to a session. kortix can now attach directly to a running session's agent from the terminal.
  • Per-account concurrent-session limits. Accounts can carry a custom concurrent-session override, and hitting the limit now explains exactly what happened.
  • SDKs on npm. @kortix/sdk and @kortix/llm-catalog now publish to npm with every release, in lockstep with the platform version, joining @kortix/executor-sdk.

Improved

  • Sandboxes no longer idle for hours. An observe-idle reaper with 15-minute/5-minute TTLs, a busy probe, and a provider backstop stop stopped-but-billing dead time.
  • Agents automatically resume work when a turn is killed by a transient model-provider error, instead of stopping silently.
  • The LLM gateway no longer forwards empty completions: it retries the same model once, then fails over to the next candidate. Upstream provider errors now surface in the stream instead of hanging it.
  • The full member directory is visible to all account members (sensitive columns stay manager-only), and member counts reflect what the viewer can see. "Departments" are now "groups" throughout.
  • The PDF viewer opens at a comfortable zoom with the sidebar closed, and presentation viewers drop redundant download buttons.

Fixed

  • Change requests can no longer be empty. An agent that committed but never pushed used to produce a silent "No changes detected" change request; the push step is now enforced and empty CRs are rejected at open time.
  • Session lifecycle races. Starting a brand-new session no longer trips over its own creation (the create-vs-start race), deleting a session mid-provision can no longer resurrect it, the first prompt of a new session is no longer dropped while the agent restarts, a session page open on a stopped sandbox no longer hammers it with requests, and the create-first flow no longer bounces back to the project index.
  • The project-home composer keeps its text while navigating into the new session, and the sidebar flyout stays open while one of its menus is open.
  • Legacy daytona provider names are normalized at session create, so older projects keep working after the provider rename.
  • Suna migration pushes are now idempotent across pods and strip oversized blobs instead of failing.
  • Snapshot cache keys are scoped to in-sandbox inputs, so unrelated source changes no longer invalidate sandbox snapshots.
  • AgentMail inbox limits are handled gracefully instead of erroring the channel.
  • API and gateway origin load balancers only accept traffic from Cloudflare, closing a WAF-bypass path.
  • Gateway request logs strip NUL bytes before persisting, fixing a recurring database write error.

Internal

  • CI hardening: staging keeps its VERSION in sync on release, a duplicate migration was deduped before it could break deploys, staging QA runs behind Vercel SSO with a bypass token, the direct prod hotfix workflow is retired, and dependency/action versions are bumped across the board.

What's Changed

  • Promote main to staging for v0.9.79 by @markokraemer in #3866
  • Promote main → staging (v0.9.80 candidate) by @markokraemer in #3871
  • fix(api): handle AgentMail inbox limit errors by @markokraemer in #3880
  • Promote main → staging (release candidate v0.9.82) by @markokraemer in #3898
  • chore(slack): enable identity gate on staging by @markokraemer in #3913
  • Promote main to staging: account membership repair by @markokraemer in #3937
  • Promote main to staging: accounts me bootstrap by @markokraemer in #3941
  • fix(api): wait for opencode ready after first-prompt env restart by @markokraemer in #3992
  • fix(gateway): strip NUL bytes before persisting gateway request logs (prod 22P05) [staging] by @markokraemer in #4015
  • fix(api): suna-migration repo phase idempotent + pod-independent (prod hotfix) by @lillyboga in #4022
  • feat(sandbox): per-project sandbox-provider override (staging) by @kubet in #4048
  • fix(sandbox): verify opencode-config-deps bundles at bake time [staging hotfix] by @markokraemer in #4076
  • feat(projects): read-only platform-admin bypass on the project access gate by @markokraemer in #4085
  • fix(llm-gateway): fail over on empty-choices completions instead of forwarding them [staging hotfix] by @markokraemer in #4100
  • fix(llm-gateway): auto-retry the same candidate on an empty completion before failing over [staging hotfix] by @markokraemer in #4104
  • fix(llm-gateway): pin managed GLM to Z.AI host + surface in-stream upstream error frames by @markokraemer in #4146
  • feat(sandbox-agent): auto-resume root turns killed by transient provider errors by @markokraemer in #4152
  • fix: stop stopped-sandbox request storm on session page + heal staging VERSION drift by @markokraemer in #4158
  • fix(web): stop stopped-sandbox request storm on session page by @markokraemer in #4159
  • chore(release): staging VERSION → 0.9.97 [skip ci] by @github-actions[bot] in #4162
  • chore(release): VERSION → 0.9.98 [skip ci] by @github-actions[bot] in #4208
  • chore(release): staging VERSION → 0.9.98 [skip ci] by @github-actions[bot] in #4209
  • feat(sandbox): build-on-push warm prebake (warm on commit, not just session-start) by @kubet in #4206
  • chore(dev-eks): deploy dev-499ebd32 [skip ci] by @github-actions[bot] in #4212
  • fix(cr): make an empty change request impossible to open + harden agent CR contract by @markokraemer in #4207
  • feat(web): Upgrades section (registry + one-off prompt runner) + v2 prompt baseline-refresh by @markokraemer in #4213
  • fix(sessions): close the delete-mid-provision resurrection race by @markokraemer in #4211
  • feat(billing): per-account concurrent-session override + clearer limit-hit copy by @markokraemer in #4210
  • chore(dev-eks): deploy dev-31e33006 [skip ci] by @github-actions[bot] in #4214
  • chore(deps): bump bridgecrewio/checkov-action from 12.3107.0 to 12.3112.0 by @dependabot[bot] in #4188
  • chore(deps): bump terraform-linters/setup-tflint from 6.2.2 to 6.3.0 by @dependabot[bot] in #4186
  • chore(deps): bump actions/attest-build-provenance from 4.1.0 to 4.1.1 by @dependabot[bot] in #4185
  • chore(deps): bump aws-actions/configure-aws-credentials from 4 to 6 by @dependabot[bot] in #3675
  • chore(deps): bump actions/checkout from 4 to 7 by @dependabot[bot] in #3999
  • fix(sessions): normalize legacy 'daytona' provider at session-create (rename back-compat) by @kubet in #4215
  • chore(dev-eks): deploy dev-e2b7f82a [skip ci] by @github-actions[bot] in #4216
  • chore(deps): bump postcss from 8.4.33 to 8.5.10 in /apps/web by @dependabot[bot] in #4083
  • fix(infra): lock API + gateway origin ALBs to Cloudflare IP ranges by @markokraemer in #4121
  • Use the Kortix ASCII logo loader on main page loads by @markokraemer in #3972
  • content: publish AI transformation company OS by @agent-kortix in #3989
  • fix(api): strip oversized blobs from suna-migration repo push by @lillyboga in #4026
  • chore(dev-eks): deploy dev-88470e21 [skip ci] by @github-actions[bot] in #4217
  • Add CLI session OpenCode attach by @agent-kortix in #4050
  • fix(web): enable Vercel deploys from prod branch by @markokraemer in #3861
  • fix(sandbox): raise auto-archive default 6h -> 12h by @markokraemer in #4218
  • chore(dev-eks): deploy dev-cd6a804f [skip ci] by @github-actions[bot] in #4219
  • feat(starter): expand the Kortix skill library (default + marketplace) by @markokraemer in #3969
  • chore(dev-eks): deploy dev-6a15997a [skip ci] by @github-actions[bot] in #4220
  • fix(web): give auto-created "My First Project" the full starter pack by @markokraemer in #4221
  • fix(web): drop presentations viewer download buttons; PDF viewer 50% zoom + sidebar closed by default by @markokraemer in #4223
  • feat(marketplace): enable by default; move kortix-meet/kortix-computer to opt-in by @markokraemer in #4222
  • chore(dev-eks): deploy dev-064f6d68 [skip ci] by @github-actions[bot] in #4224
  • Promote main to staging (full dev candidate, pre-0.9.98) by @markokraemer in #4225
  • feat(web): Files as a standalone page (out of Customize) by @markokraemer in #4226
  • test(web): update customize rail test for standalone Files page by @markokraemer in #4227
  • fix(db): drop duplicate session-limit-override migration (unblocks staging + prod migrations) by @markokraemer in #4229
  • fix(sandbox): kill idle dead-time — 15m autostop, 5m trigger TTL, pre-stop busy probe, resume grace by @markokraemer in #4228
  • Promote main to staging: idle dead-time fix + standalone Files page by @markokraemer in #4231
  • fix(db): drop duplicate session-limit-override migration on main (unblocks Deploy Dev) by @markokraemer in #4230
  • Feat/sso auto provision groups by @Ino-Bagaric in #4197
  • chore(dev-eks): deploy dev-933d6108 [skip ci] by @github-actions[bot] in #4233
  • fix(snapshots): stop dev-only CLI/test churn from re-minting every project's sandbox runtime identity by @kubet in #4232
  • chore(dev-eks): deploy dev-9b5f789f [skip ci] by @github-actions[bot] in #4235
  • feat(customize): master-detail sidebar for agents, skills & commands by @sutharjay1 in #4234
  • fix(accounts): members count reflects caller visibility, not raw total by @Ino-Bagaric in #4236
  • chore(dev-eks): deploy dev-e63f8e56 [skip ci] by @github-actions[bot] in #4238
  • fix(scim): show the absolute SCIM base URL so it's paste-ready for the IdP by @Ino-Bagaric in #4237
  • fix(iam): SCIM dialog overflow + SSO/SCIM settings-card polish by @Ino-Bagaric in #4239
  • fix(sandbox): warm prebake-on-push pre-warms every provider a session can use (parity) by @kubet in #4242
  • chore(dev-eks): deploy dev-b692ede7 [skip ci] by @github-actions[bot] in #4243
  • fix(scim): actually contain the SCIM token dialog (grid-item min-w-0) by @Ino-Bagaric in #4240
  • fix(scim): error-free Okta/Azure provisioning (invites active, PUT, dedup) by @Ino-Bagaric in #4244
  • fix(web): don't clear the project-home composer before it navigates away by @sutharjay1 in #4241
  • refactor(ui): rename "department" labels to "groups" by @Ino-Bagaric in #4246
  • chore(dev-eks): deploy dev-7613e9f9 [skip ci] by @github-actions[bot] in #4248
  • fix(web): keep sidebar flyout open while an anchored menu is open by @sutharjay1 in #4247
  • feat(scim): /ResourceTypes + /Schemas discovery for Azure AD by @Ino-Bagaric in #4245
  • feat(accounts): member directory visible to all members by @Ino-Bagaric in #4249
  • chore(dev-eks): deploy dev-6c39b7c8 [skip ci] by @github-actions[bot] in #4250
  • Promote main to staging: SCIM/IdP provisioning, member directory, prebake parity by @markokraemer in #4251
  • fix(sdk): tolerate /start 404 for freshly minted sessions (create-vs-start race) by @markokraemer in #4252
  • Promote main to staging: SDK create-vs-start race fix by @markokraemer in #4255
  • fix(web): keep the instant session shell up on transient start errors and calm the session-start UI by @sutharjay1 in #4253
  • feat(project-files): Google Drive-style colored folder tiles by @sutharjay1 in #4254
  • fix(sessions): tolerate the create-vs-start race on fresh sessions by @lillyboga in #4256
  • chore(dev-eks): deploy dev-6f6a9307 [skip ci] by @github-actions[bot] in #4258
  • fix(web): create-first new-session flow — no silent bounce back to the project index by @markokraemer in #4259
  • Promote main to staging: session-start race fixes + create-first flow + folder tiles by @markokraemer in #4260
  • Revert "fix(web): keep the instant session shell up on transient start errors and calm the session-start UI" by @sutharjay1 in #4261
  • Promote main to staging: revert of the instant-session-shell change (#4261) by @markokraemer in #4262

Full Changelog: v0.9.97...v0.9.98

Don't miss a new suna release

NewReleases is sending notifications on new releases.