github kortix-ai/suna v0.13.50
v0.13.50 — Fork a conversation, cancel from billing, and one permission per topic

latest release: dev-latest
2 hours ago

New

  • Fork a conversation. A session's conversation offers a Fork action, so you can branch from any point.
  • Cancel a subscription from the billing pane.
  • One permission per topic. The broad project.customize.* permissions are replaced by project.settings.write, project.sandbox.write, and project.model.read/.write. Agent changes use project.agent.write. Every role keeps exactly what it had. Project members can now open Agents and Triggers read-only.

Improved

  • Sign-in: an existing account opens on the password form, and the email link is one click away. After you enroll in two-factor authentication, sign-in asks for the code. A magic link still completes when its verifier cookie is lost. A failed server sign-out is reported on the sign-in page.
  • Security settings list the devices that are signed in.
  • Account deletion: "Delete immediately" deletes the account, and the dialog reads as a choice.
  • Creating a project lands you on the project page.
  • The session key panel says whose keys a session reaches, and why a key is not available.
  • Connectors: Computers appear under Connected only after a machine is paired, and connector notes display the same way on every surface.
  • The audit log: reconciliation catches up on accounts with very large histories.
  • The API returns 400 for a malformed account id, and a marketplace install fails clearly when no model can serve its import.
  • Database health: more RLS policies evaluate the signed-in user once per query, and legacy tables gain primary keys and missing indexes.

Fixed

  • The CLI:
    • sessions log and chat show the real stop or failure reason.
    • Trigger schedule updates keep their time zone.
    • Policy conditions keep their operators.
    • --json output and session listings stay stable.
    • projects rm --purge reports "Purged".
    • Project-scoped commands reach projects that have no session.
    • The empty models state points to providers.
  • Mobile:
    • Question answers can be retried until they are accepted.
    • Mermaid diagrams render.
    • Teams mentions are stripped from session titles.
    • Diff stats keep literal escapes.
    • App previews refresh their credentials when opened.
  • Desktop: "Allow all" adds Kortix to the macOS Screen Recording list.
  • A warm session that has not been prompted reads as starting, not running.
  • The sandbox agent's dependencies are patched against two undici vulnerabilities.
  • Customize tabs appear immediately, and only the page body waits for permissions.

What's Changed

  • fix(customize): paint the tab bar on the first frame; gate only the page body by @markokraemer in #9042
  • fix(api): list stopped sessions the runtime row does not confirm (KRTX-1452) by @agent-kortix in #9020
  • fix(cli): preserve trigger timezone on schedule updates (KRTX-1338) by @agent-kortix in #8869
  • fix(audit): bound each reconciliation pass by source rows, so heavy accounts converge by @markokraemer in #9049
  • refactor(iam): one permission per topic — retire project.customize.* by @markokraemer in #9050
  • fix(mobile): preserve literal newline escapes in diff stats (KRTX-1265) by @agent-kortix in #8860
  • perf(db): omit unused sandbox export ordering (KRTX-1074) by @agent-kortix in #8867
  • test: add the e2e pilot and testing assessment by @markokraemer in #9052
  • test(flows): APP-7 accepts a released image when a deployed target finishes the build first by @markokraemer in #9056
  • chore(release): VERSION → 0.13.50 [skip ci] by @github-actions[bot] in #9060
  • chore(release): staging VERSION → 0.13.50 [skip ci] by @github-actions[bot] in #9061
  • refactor(sdk): move the mobile sandbox-image runtime into @kortix/sdk (KRTX-1065) by @agent-kortix in #8779
  • fix(api): bound the session-config mirror wait and prove freshness per read (KRTX-818) by @agent-kortix in #9048
  • feat: Kortix is the open-source AI Operating System — rename everywhere + AI OS marketing site by @markokraemer in #9068
  • fix(mobile): strip Teams mentions from session titles (KRTX-1266) by @agent-kortix in #8863
  • perf(db): cache legacy threads RLS identity (KRTX-1148) by @agent-kortix in #8879
  • perf(db): index the parked-runtime verification sweep on kortix.session_sandboxes (KRTX-1307) by @agent-kortix in #8995
  • fix(web): render the signed-in device list on /settings/security (KRTX-1392) by @agent-kortix in #9018
  • test(api): pin the forwarded-prompt sweep to its partial index (KRTX-1303) by @agent-kortix in #9010
  • fix(mobile): render Mermaid show items as diagrams (KRTX-1267) by @agent-kortix in #8866
  • feat(billing): add a cancel subscription control to the billing pane (KRTX-1316) by @agent-kortix in #9043
  • test(lanes): make the packages test lane hermetic on a platform sandbox (KRTX-1409) by @agent-kortix in #9011
  • fix(api): report not_open when the strand re-queue's guarded update matches nothing (KRTX-1469) by @agent-kortix in #9022
  • fix(tests): pin one gateway internal token across local stack halves (KRTX-1433) by @agent-kortix in #9025
  • fix(mobile): refresh preview credentials on opening (KRTX-1247) by @agent-kortix in #8857
  • fix(connectors): list Computers under Connected only once a machine is paired (KRTX-1492) by @agent-kortix in #9073
  • perf(db): index chat_pending_auth_messages.project_id for its projects FK (KRTX-1097) by @agent-kortix in #9055
  • fix(migration): give the smoke storage-object query an explicit psql separator (KRTX-1457) by @agent-kortix in #9015
  • fix(cli): report Purged when projects rm --purge hard-deletes (KRTX-1487) by @agent-kortix in #9092
  • fix(tests): catalog the real steps of every harnessFlow id and its -pi twin (KRTX-1434) by @agent-kortix in #9000
  • refactor(dev): extract warm_frontend_routes, fix empty-array crash on bash 3.2 (KRTX-1456) by @agent-kortix in #9014
  • fix(api): treat an integrations.sh surface 404 as an empty record (KRTX-1442) by @agent-kortix in #9004
  • fix(agent-tunnel): resume the tunnel lease through the drift-safe service resume (KRTX-1389) by @agent-kortix in #9007
  • fix(cli): reject explicit roles for everyone grants (KRTX-1337) by @agent-kortix in #8871
  • fix(cli): surface the real stop reason in sessions log and chat (KRTX-1257) by @agent-kortix in #8894
  • fix(web): the Delete account dialog reads as a choice, not a done state (KRTX-1403) by @agent-kortix in #9076
  • perf(db): clear the auth_rls_initplan advisor finding on public.webhook_events (KRTX-1151) by @agent-kortix in #9083
  • fix(db): add primary key to legacy workflow backup (KRTX-1170) by @agent-kortix in #8886
  • refactor(cli): compress MCP execution, root dispatch and picker lifecycle (KRTX-1341) by @agent-kortix in #8915
  • refactor(cli): split the CLI mega-modules and delete their dead duplicated surface (KRTX-1334) by @agent-kortix in #8982
  • fix(api): publish the real value sets for merged-literal OpenAPI enums (KRTX-1490) by @agent-kortix in #9032
  • fix(api): delete the account for real on delete-immediately (KRTX-1402) by @agent-kortix in #9033
  • refactor(api,sdk): one contract — typed handlers, true spec, SDK drift test, daemon callbacks (R3) by @DimitrijeGlibic in #8954
  • chore(deps): bump pypdf from 6.16.1 to 6.19.0 in /packages/starter/templates/general-knowledge-worker/skills/presentations/scripts by @dependabot[bot] in #8644
  • chore(deps): bump ip-address from 10.7.0 to 10.7.2 in /.deepsec by @dependabot[bot] in #8513
  • chore(deps): bump actions/checkout from 4 to 7 by @dependabot[bot] in #7991
  • chore(deps): bump go.opentelemetry.io/otel/sdk/log from 0.19.0 to 0.21.0 in /apps/kortix-app-runtime/caddy by @dependabot[bot] in #8299
  • fix(web): keep the dev gate off the auth callback routes (KRTX-1467) by @agent-kortix in #9062
  • fix(api): bound the sandbox env memo on the skip path (KRTX-1501) by @agent-kortix in #9084
  • fix(api): refuse foreign credential shapes in validateSecretKey with a precise error, not a doomed probe (KRTX-1414) by @agent-kortix in #9097
  • fix(cli): preserve session listing across flag spellings (KRTX-1323) by @agent-kortix in #8875
  • fix(cli): preserve JSON output for session reload (KRTX-1326) by @agent-kortix in #8877
  • fix(web): give the account-hub audit tab a page heading (KRTX-1423) by @agent-kortix in #9115
  • fix(web): default existing-account sign-in to the password form (KRTX-1346) by @agent-kortix in #9103
  • fix(cli): let project-scoped commands reach a non-session project (KRTX-1437) by @agent-kortix in #9110
  • fix(dev): make the tunnel skip paths startable (KRTX-1455) by @agent-kortix in #9003
  • fix(web): drop the timed-out extension window-message noise (KRTX-1459) by @agent-kortix in #9112
  • fix(sessions): the key panel and its refusal say whose keys a session reaches, and why not by @Ino-Bagaric in #8192
  • fix(cli): dispatch channels after parsing flags (KRTX-1335) by @agent-kortix in #8873
  • fix(cli): document the built-in dev host as https in hosts --help (KRTX-1262) by @agent-kortix in #9109
  • fix(cli): make the empty models state point at providers, not an empty ls (KRTX-1538) by @agent-kortix in #9118
  • test(cli): pin the sandbox env-file path for projects use --host (KRTX-1429) by @agent-kortix in #9116
  • fix(api): return 400 for a malformed account_id on account-scoped routes (KRTX-1421) by @agent-kortix in #9114
  • fix(api): report an unprompted warm session shell as starting, not running (KRTX-1466) by @agent-kortix in #9100
  • test(cli): pin --host token routing under the ambient session principal (KRTX-1404) by @agent-kortix in #9077
  • fix(cli): preserve operators in policy condition values (KRTX-1324) by @agent-kortix in #8874
  • fix(cli): show the real failure reason for a failed turn in sessions log and chat (KRTX-1463) by @agent-kortix in #9111
  • fix(api): refuse a marketplace install whose import turn has no servable model (KRTX-1540) by @agent-kortix in #9094
  • fix(shared): parse the connector notes block on every surface (KRTX-1383) by @agent-kortix in #9081
  • fix(tests): keep the packages lane green on loaded worker sandboxes (KRTX-1479) by @agent-kortix in #9074
  • fix(web): reach the too-long name message for typed input on /new (KRTX-1424) by @agent-kortix in #9067
  • fix(worker): retry worker RPC only on transport failures, never on error text (KRTX-1388) by @agent-kortix in #9030
  • fix(mobile): keep question answers retryable until accepted (KRTX-1246) by @agent-kortix in #8870
  • fix(web): surface an unconfirmed server sign-out on /auth (KRTX-1393) by @agent-kortix in #9078
  • feat(web): offer a Fork action on session conversations (KRTX-1474) by @agent-kortix in #9041
  • fix(web): land on the project page after Create project (KRTX-1419) by @agent-kortix in #9028
  • fix(web): a fresh magic-link sign-in completes its PKCE exchange after a lost verifier cookie (KRTX-1412) by @agent-kortix in #9034
  • fix(web): enforce the TOTP challenge after enrollment (KRTX-1386) by @agent-kortix in #9029
  • chore(deps): bump hono from 4.13.5 to 4.13.7 by @dependabot[bot] in #8563
  • refactor(api): dedupe agent governance, git auth and compute accrual copies (KRTX-1498) by @agent-kortix in #9085
  • refactor(web): simplify IAM contracts, capability model and audit filters (KRTX-1056) by @agent-kortix in #8919
  • refactor(web,sdk): delete dead component layers and centralize connector setup (KRTX-1012) by @agent-kortix in #8829
  • refactor(whitelabel-demo): dedupe shared paths, split fat components (KRTX-1418) by @agent-kortix in #9091
  • fix(db): re-date the agent_workflows_backup migrations after dev's applied set by @markokraemer in #9125
  • fix: v0.13.50 gate — sandbox-agent lockfile, undici 8.10.2, documented sudo in the sandbox image by @markokraemer in #9127
  • fix(deps): sync the daemon's standalone bun.lock with the hono bump by @markokraemer in #9128
  • perf(db): add a primary key to basejump.config (KRTX-1167) by @agent-kortix in #9089
  • fix(web): mark the AI OS hero art decorative; journey 01 takes #9103's explicit link choice by @markokraemer in #9129
  • Revert otel/sdk/log 0.21 bump in the Caddy runtime (breaks the API image build) by @markokraemer in #9130
  • fix(db): consolidate legacy deletion request policies (KRTX-1155) by @agent-kortix in #8884
  • perf(db): add a primary key to agents_backup_cleanup_20250729 (KRTX-1171) by @agent-kortix in #9106
  • fix(db): consolidate public.referrals RLS policies to one permissive policy per action (KRTX-1165) by @agent-kortix in #9107
  • fix: v0.13.50 gate — CLI export, linear Teams mention strip, starter snapshot, SDK timer containment by @markokraemer in #9132
  • fix(security): email only Medium+ GuardDuty findings by @markokraemer in #9133
  • fix(security): keep GuardDuty detectors at SIX_HOURS publishing by @markokraemer in #9135
  • docs(learnings): change Terraform-owned AWS config only in Terraform by @markokraemer in #9136
  • revert: AI OS rename + marketing site (#9068), back to the prod site by @markokraemer in #9142
  • fix(security): document Trivy exceptions for sandbox sudo and two unfixed CVEs by @markokraemer in #9145
  • fix(desktop): Allow all adds Kortix to the Screen Recording list by @markokraemer in #9147
  • fix(security): refuse crash dumps and files over 20 MB in pre-commit and pre-push by @markokraemer in #9149
  • test(sdk): end each fake-timer act() scope on real timers in the poll-deadline test by @markokraemer in #9148
  • Promote main ecd96ff to staging by @markokraemer in #9150
  • Release v0.13.50 — Fork a conversation, cancel from billing, and one permission per topic by @github-actions[bot] in #9153

Full Changelog: v0.13.49...v0.13.50

Don't miss a new suna release

NewReleases is sending notifications on new releases.