github kortix-ai/suna v0.13.32
v0.13.32 — Your own keys in Slack, Teams and the CLI, and sessions that open instantly

latest release: dev-latest
4 hours ago

Your own model keys and ChatGPT subscription now work in Slack, Teams and the CLI, saved sessions open instantly, and a single Stop can no longer break a session.

New

  • Your own keys and ChatGPT everywhere. Models you reach through your own API keys, keys shared with you, project keys, and ChatGPT subscriptions are available in Teams, Slack and the CLI, not only the web picker.
  • Members bring their own ChatGPT subscription, without needing permission to manage project secrets.
  • Saved sessions open on their conversation. Opening an existing session shows skeleton rows shaped like that session while it loads, instead of the full-screen boot screen.
  • Command palette. ⌘K opens instantly at a fixed position, and search can copy your account, project and session IDs.
  • Connect cards name the app they connect, and render as cards even when an agent writes them in a table.
  • Mobile: dictation in the composer, labelled queue controls with undo, and + only attaches.
  • SSO domain verification. An enterprise account verifies its email domain with a DNS TXT record before SSO is enforced for it. Existing SSO setups keep working.

Fixed

  • One Stop during a session's first turn no longer makes every later turn end immediately, and a Stop during start-up releases the held prompt.
  • A healthy Slack run is no longer closed as idle after 30 minutes of quiet work.
  • A saved secret that is not granted to the session's agent is now reported as "not granted to this agent" instead of silently missing, and an agent session can sync its own secrets.
  • In web terminals on custom Debian templates, Kortix tools stay on PATH and secrets load in login shells.
  • An open file viewer refreshes when the agent edits the file.
  • A turn that fails mid-stream shows one readable line naming the model, with details folded away.
  • Streaming from OpenAI-compatible models that omit event separators no longer fails to parse.
  • The web app detects the end of a turn reliably.

Security

  • Markdown, embedded frames, credential routing, share links and analytics are hardened.
  • SDK token, transport, preview-credential and file-write paths are hardened.
  • Connector requests are checked against private-network egress rules, and connector sync is atomic.
  • Gateway usage settles exactly once per request.
  • SSO emails are trusted only on verified domains, and access-control writes are scoped to their account.
  • Billing wallet functions move to a private database schema.

What's Changed

  • Connector egress checks, atomic connector sync, and idempotent gateway settlement by @markokraemer in #7618
  • Gateway: one Dispatch module runs the attempt plan (fallback chains, streaming retries) by @markokraemer in #7620
  • chore(release): VERSION → 0.13.32 [skip ci] by @github-actions[bot] in #7625
  • chore(release): staging VERSION → 0.13.32 [skip ci] by @github-actions[bot] in #7626
  • refactor(api): one status-transition module for session lifecycle; split engine.ts by @markokraemer in #7621
  • fix(tests): keep ke2e principal tokens valid past 1 h; stop fixtures when their flow attempt ends by @markokraemer in #7627
  • refactor(api): split numbered project route files by domain by @markokraemer in #7623
  • fix(sdk): token, transport, preview-credential and file-write hardening by @markokraemer in #7610
  • refactor(billing): one wallet module for every credit movement by @markokraemer in #7624
  • fix(preview): reclaim session sandboxes with their host by @markokraemer in #7569
  • fix(tests): SCOPE-6 uses the Git proxy on deployed targets by @markokraemer in #7628
  • fix(web): harden markdown, frames, credential routing, share links and analytics by @markokraemer in #7617
  • fix(identity): trust SSO emails only on verified domains; scope IAM writes to the account by @markokraemer in #7615
  • refactor(web): one markdown trust policy and one file preview policy by @markokraemer in #7629
  • refactor(api): session lifecycle wave 2 — status writers on the transition module, fenced command lease by @markokraemer in #7632
  • fix(sandbox): slack CLI surfaces the structured denial message, not "HTTP 403: true" by @agent-kortix in #7634
  • refactor(db): private wallet schema, idempotency-key uniqueness, kortix.ts schema contract by @markokraemer in #7631
  • fix(db): build baseline indexes and constraints missing on prod; verify-live-schema checks them by @markokraemer in #7635
  • test(ci): run the PostgreSQL-backed suites in the core lane, one fresh database per file by @markokraemer in #7636
  • fix(db): migrate status reads the ledger read-only, never the migration runner by @markokraemer in #7637
  • perf(db): index compute-session and grant-rotation lookups; one pending deletion request per account; re-register nightly schedules by @markokraemer in #7638
  • feat: models on your own keys and ChatGPT in Teams, Slack and the CLI by @Ino-Bagaric in #7593
  • feat: open a saved session on skeleton rows, not the boot screen by @Ino-Bagaric in #7640
  • fix(secrets): a session selects only the pooled keys it can use when it runs by @Ino-Bagaric in #7639
  • feat(providers): members bring their own ChatGPT subscription by @Ino-Bagaric in #7641
  • refactor(channels): one chat-channel core for Slack, Teams and email by @markokraemer in #7633
  • refactor(cli): remove unreachable commands and share arg-error helpers by @markokraemer in #7647
  • refactor(db): one catalog reader for the schema gates; un-quarantine ledger-repair suite by @markokraemer in #7648
  • feat(web): each saved session opens on its own skeleton rows, with one pulse moving down them by @Ino-Bagaric in #7656
  • fix(sandbox): keep Kortix tools on PATH and load secrets in terminal login shells by @markokraemer in #7654
  • fix(sandbox): one Stop can no longer break every later turn in a session by @markokraemer in #7655
  • refactor(api): one helper per request primitive, with a tripwire by @markokraemer in #7650
  • fix(sandbox): a Stop releases the prompt the warm-up gate is holding by @markokraemer in #7664
  • feat(chat): name the app on connect link cards and lift them out of tables by @sutharjay1 in #7660
  • feat(mobile): dictation, labelled queue controls with undo, and + only attaches by @sutharjay1 in #7661
  • fix(channel-cli): downloads and teams conversations surface the API's denial message by @markokraemer in #7643
  • refactor(api): one module answers which pooled keys a session may use by @markokraemer in #7653
  • refactor(api): one module decides connector connection mutation by @markokraemer in #7645
  • refactor(web): delete unimported web modules by @markokraemer in #7646
  • test(billing, llm-gateway): cut the api-billing-gateway suites over to their owners by @markokraemer in #7662
  • Sessions run the base branch's current config from a read-only copy; /workspace is never written by @markokraemer in #7403
  • fix: say 'not granted to this agent' instead of silently withholding a saved secret by @markokraemer in #7659
  • feat(web): command palette opens instantly above centre, and search can copy your IDs by @sutharjay1 in #7675
  • fix(slack,sandbox): stop killing live runs as idle by @markokraemer in #7670
  • fix(tests): make main green after connect link cards (#7660) by @markokraemer in #7676
  • refactor(mobile): delete 125 modules no app route reaches by @markokraemer in #7649
  • fix(api): let an agent session sync its own secrets by @markokraemer in #7677
  • fix(db): local invalid-index repair checks index builds in its own database only by @markokraemer in #7678
  • test(session-lifecycle): prune the session lifecycle test surface to its keepers by @markokraemer in #7663
  • test(kortixd): one keeper per contract at its owner boundary; test-only seams deleted by @markokraemer in #7673
  • fix(session): render failed turns as a checkpoint row with folded details by @sutharjay1 in #7671
  • fix(web): refresh open file viewers when the agent turn ends by @sutharjay1 in #7674
  • refactor(sdk): route-contract tripwire, retired endpoints, one transport module by @markokraemer in #7630
  • refactor(oauth): one hashing scheme for OAuth tokens by @markokraemer in #7666
  • fix(sdk): detect turn end against the status before the event by @sutharjay1 in #7682
  • fix(gateway): repair missing OpenAI SSE event boundaries by @markokraemer in #7679
  • docs(contributing): one PR loop with an agent-browser demo video; skills in .agents/skills; learnings as an episodic ledger; docs/ removed by @markokraemer in #7672
  • fix(web): scale inline code with the heading it sits in by @sutharjay1 in #7684
  • docs(learnings): a green preview deploy job is not a tested preview by @markokraemer in #7683
  • Promote main 92d4bcb to staging by @markokraemer in #7686
  • Release v0.13.32 — Your own keys in Slack, Teams and the CLI, and sessions that open instantly by @github-actions[bot] in #7687

Full Changelog: v0.13.31...v0.13.32

Don't miss a new suna release

NewReleases is sending notifications on new releases.