Credits plan, Enterprise features, restorable sessions and generative UI
New
33- Kortix Capture records only the apps and websites you include: an organization policy plus a per-computer list.
- kortix.yaml version 3 agents can opt in to the project repository.
- One credits plan. Every account is on Free or Credits, with top-ups on either. Balances and usage read in credits everywhere; prices you pay stay in your currency. Raising your plan applies at once; lowering it takes effect at the next renewal, with a preview before you confirm.
- Enterprise is a feature layer. SSO, SCIM, roles and groups, audit and branding come with an Enterprise license or a self-serve demo. Trials are gone. Admins can now manage billing.
- Restorable sessions. A deleted session can be restored for 30 days, with Undo on web and
kortix sessions restore. A session that lost its computer continues on a new one from its saved conversation, including images and files. - Pin and archive sessions to keep your list in order.
- Generative UI. Agents can answer with visual blocks: cards, comparisons, photo steps, product cards, maps and figures, on web and mobile.
- Themes. Kortix palettes plus 39 interface themes, with a live preview in the command palette.
- Kortix Apps are generally available, and open in the session browser. Add any site as an external App by its URL, framed in Kortix. The App detail sheet, menu and connect dialog are rebuilt.
- Kortix Capture, a desktop recorder for your account, with its own area on the web.
- MCP servers connect from their URL in one step, with one-click OAuth sign-in. New MCP and Computer settings pages.
- kortix.yaml version 3 is available as an opt-in: the project registers skills, tools and commands, and each agent enables what it uses. New projects still start on version 2, and nothing upgrades on its own.
kortix migrateconverts a project when you choose to. - Desktop: the Dock and taskbar icon counts finished turns you have not seen, and right-click shows the platform menu.
- Files handles big folders. A folder with thousands of files loads in pages with Load more, and Find a file now searches file contents as well as names.
- Arrange your project sidebar. Choose and order the items in the project sidebar. The layout is saved on your account, so it follows you to every browser.
- Send now on queued messages. Each message waiting in the queue has its own Send now, so you can push one ahead without clearing the rest.
- Know how long your sandbox stays on. The composer tells you how long the sandbox stays running while you are in the session.
- Mobile settings drill down into each section, and a mobile invitee lands directly in the project they were invited to.
- Backend cards show a live preview of their Dashboard tab.
- Quick Entry on desktop. Start a session from any app with a global shortcut.
- Spreadsheet previews in the Repo page, read straight from git.
- Redesigned account settings. Sections are grouped under General, Access and Billing; inviting, granting access, creating tokens and registering apps open in a side sheet next to the page; new avatars.
- Tools run on both harnesses. A tool is one module that OpenCode and pi both run. Declare a project's own tools under
tools:inkortix.yaml, and limit which agents see them withagents.<name>.tools. - The Kortix tools are listed in
kortix.yaml.web_search,image_search,scrape_webpage,memoryandshowappear askortix:<name>. Delete a line to remove that tool.kortix tools lslists a project's tools, andkortix tools eject <name>copies one into the project so you can change it. - One-step MCP install. Installing an MCP app goes straight to the server's sign-in, and a connector you authorize with your own account loads its tools. The app and connector pages are redesigned.
- Every connector account picks its audience. Install adds the connector to the project. Add account then asks for a name and Who can use it: only you, everyone in the project, or specific people, groups or agents.
- Connect MCP in the project sidebar opens the MCP connect dialog.
- Connector calls from code. Apps and scripts can call a project's connectors through
@kortix/sdk, with typed handles and a stable result. - Reminders page. A calendar (day, week, month) and a list with bulk pause, resume and remove. Reminders is beta: enable Reminders under Settings → Feature flags.
- App event triggers (beta). Run an agent when something happens in a connected app, such as a new email or an opened pull request. Every app that publishes events is listed, and you can browse its events before you connect it. Enable App event triggers under Settings → Feature flags.
- Notification center (beta). Kortix tells the right person when a session needs them: an in-app inbox, Web Push and email. Off by default: enable Notification Center under Settings → Feature flags.
- Billing alerts for owners. Owners get an email when the wallet runs out, and when a declined card turns auto top-up off. The Billing pane says why auto top-up is off. A member who runs out of credits can ask the owners from the product. Budget managers get an email at 80% and 100% of an LLM gateway budget.
kortix feedback "<message>"files a bug, an idea or a friction report from a terminal or from inside a session.
Improvements
44- Toasts and notifications are redesigned and say what happened, under the right session.
- The Customize and Models pages are redesigned; Slack and Teams have new connect flows.
- pi sessions: codemode is on by default, images work on the computer, and summaries and compaction are steadier.
- A session opens on its own model on web and mobile, and returning to a session tab no longer redraws the transcript.
- A draft keeps its attached files across a session switch and a reload; a typed follow-up keeps Send during a turn.
- Slash commands sent mid-turn wait for the agent to finish; @file and @agent mentions reach the agent on the first message.
- A running compaction no longer opens on a blank page; its rows sit with the turn.
- Project members with limited access see only the Customize tabs they can manage.
- An agent's question docked on the composer collapses to one line, so it no longer covers the conversation.
- The reminders calendar stays readable on busy projects.
- Sidebar, settings and count badges are more consistent across web and mobile.
- Long Slack turns are no longer stopped at 30 minutes.
- Sending a prompt is faster: it no longer waits for config updates, environment loading or model catalog repair to finish first.
- Warm sessions no longer appear in the sidebar list.
- A session whose agent asked you a question shows Needs you until you answer, and the question closes when the wait ends.
- A plain member sees only the members and groups they share access with.
- Web and mobile show only the trigger, review, settings and top-up controls your role allows.
- A connector whose first sync fails or needs a sign-in opens on its page with the next step ready.
- Content of a deleted session is now removed 30 days after the deletion, and its files 7 days after that.
- Groundwork for the new session history: long session texts are stored as attachments, and tool results render from the new session log where it is turned on.
- Sandboxes and CI run Bun 1.4.3.
- Streaming replies appear word by word, at the pace they arrive, on web and mobile.
- A long paste (more than 1,000 characters or 10 lines) becomes a "Pasted text" tile on web and mobile.
- Every prompt a person did not type, from a reminder, a trigger, another session or Slack, shows a source pill above a plain message.
- The server owns session state and sends it on one stream, so open tabs stop polling for it.
- Config releases run for every project. What merges to the base branch reaches new sessions, and a large repository no longer loses its config release.
- A sandbox sleeps sooner: a turn that waits on a person stops keeping it awake, and an open tab keeps it awake only while someone uses it.
- pi (experimental) loads the project's root
AGENTS.md, runs the agent you pick for a prompt, and can take back an unread steer or a queued prompt. - Agents in a session use the
kortixCLI for connectors; the in-sandboxkortix-connectorsMCP server is removed.kortix connectors connect --labelnames the new account. - The hosted MCP server at
api.kortix.com/v1/mcpis the one Kortix MCP server. The docs-only server atkortix.com/mcpis retired, andlist_projectsanswers an empty list on an account with no projects. - File listings show folders with more than 1,000 files, with search on web and mobile.
- The invite page names the project and the role. After you accept an invite or switch accounts, you land in that account.
- Mobile: New session opens project home with the composer focused. Sessions draw tables on a full grid, hide thinking, and keep a floating composer.
- CLI:
sessions lsandsessions status --jsonshow each session's model.triggers infoshows the webhook signing scheme with a sample.approvals lsprints the decision link.projects info --jsonincludes the project ID. - Session start, connector calls, cost summaries and the Reminders page use fewer database reads.
- A session with many images or binary files loads them a few at a time instead of all at once.
- Your computer shows the access the agent on that computer really has, in the browser and in the desktop app. Narrowing access applies at once from anywhere; widening it asks on the computer.
- 30 API routes that no client calls answer
410 Gone. - The subprocessor list adds six vendors.
- A finished turn folds its work into one Worked for row. The answer and any cards the agent showed stay visible below it.
- A question from the agent docks onto the composer as one surface, with previous/next and a confirm step that links back to each answer.
- The docs at
kortix.com/docsare rewritten: 31 pages, with Git as a core page. - Mobile asks you to update when the installed app is older than the minimum version the API sets.
- When you mention files on your own machine, the agent offers to connect your computer.
Fixes
76kortix appsworks again from CLI versions before 0.14.0. Since 0.14.0 every Apps command from an older CLI answered "Apps is not enabled for this project".- A plain member reads and sees only their own work: their own sessions, costs and directory entry. Owners and admins are unchanged.
- The Usage cost summary no longer fails on a gateway row with an empty provider.
- A correct two-factor code opens the app at once instead of asking again.
- Loading older messages keeps you where you were reading.
- A session's side panel comes back open when you return to the session.
- Review moves under Customize. Members without the rights see no Review entry and no empty Apps row.
- The account hub drops the floating "Back to Customize" pill.
- Connectors drop the "User-managed" badge: a per-person connector shows ✓ or Needs setup.
- An older agent daemon no longer receives a governance it cannot read.
- Sales lead emails go out from production only.
- Connector MCP sync uses a bound project secret, and adding a connector keeps kortix.yaml intact.
- The first renewal after checkout is no longer skipped.
- Only the person who prompted a run, the owner or a manager can stop it, and everyone sees who stopped it.
- Another person prompting a private session no longer runs with their own personal accounts.
- A deleted session's transcript, prompts and config now return not found, like the session.
- Shared sessions render their messages the same way the session does.
- An idle computer no longer sticks in starting after an update, and a prompt sent while a config change applies reaches the agent.
- Large agent configs boot; database connections retry when they never establish.
- New computer images warm up the agent runtime again, so a fresh session starts faster.
- Many smaller fixes across web, mobile, desktop, the CLI and connectors.
- A personal access token can now approve gated connector calls.
- Changing only the expiry of someone's account access now saves.
- An App whose machine failed to start recovers on its own the next time it wakes.
- A failed autosave on repository settings or a workspace rename no longer retries forever.
- Web Push and the inbox follow the same MFA rule as the rest of your access.
- On mobile, the drawer closes as soon as you navigate.
- The Files New menu offers only actions that work, and sharing never suggests yourself.
- Turning Volumes on never makes an organization stateless, and every server agrees on the Volumes setting right after a change.
- A pi project's local
./package loads from the config release and restarts pi when it changes. - Malformed account IDs and stray characters in session logs return a clear 4xx error instead of a server error.
- The composer's stacked layers line up at full width.
kortix sessions wait-forexits non-zero when the turn fails, and the CLI prints a preview URL on the host the deployment serves.- A prompt sent without an agent runs under the session's agent.
- An App can give its readers access to the Apps it uses, and the App header shows which App you are in.
- SSO-only workspaces end the sign-ins they refuse and refuse personal access tokens; mobile sends an SSO-enforced email to SSO.
- Deleting an account stays blocked when its status check fails.
- Session screens show their labels in your language.
- Starting, restarting and repairing a session's box no longer race each other.
- Apps with volumes deploy without naming a provider, and account commands follow the project link.
- Logging out of the CLI keeps the registered host, and
kortix connectorsconfirms a revocation before it reports success. - Volumes and Stateless sessions are per-project settings.
- Mobile session lists keep loading past empty pages, and the audit log's Session filter accepts a pasted id.
- The agent tunnel records that it is offline even when it is stopped right after starting.
- A Stop wins over a session that is still opening and over its queued prompts.
- A session whose sandbox provider is at capacity retries the start by itself, with backoff, instead of waiting for Restart.
- Queued prompts go out at the turn boundary and survive a busy queue. Only a queued prompt's author can edit, send or retry it, and an idle send shows as active, not queued.
- A session keeps its history when its runtime changes, a degraded transcript copy no longer serves a partial history, and a shorter read never deletes saved messages; only a rewind removes them.
- A reload paints the conversation this device kept without placeholder rows first, a streamed message settles when its turn ends, and a session whose sandbox lost its state keeps the conversation this device saved.
- Session boot:
sandbox.on_bootruns again after a session resumes, the boot finds its config when a pin file is missing, a failed environment build no longer breaks the boot, and a sandbox falls back to 4 GiB of memory when no size is set. - A failed sub-agent run can be retried in its own thread.
- Sessions: a failed-turn notice clears after you edit and resend, the turn outcome footer is back, the restart offer on a stuck boot follows the session's state, the session list pages correctly, and other tabs learn when a turn finishes.
- The composer waits for the model list during boot, and a new free account can send with the default model.
- The connector-connected notice joins the prompt queue and reaches the running turn.
- Triggers: a cron trigger fires at most once a minute, every webhook delivery runs exactly once, a failed fire is recorded on the trigger, the list says when a trigger runs next, a fire waits when the account has no usable model, and a manual or webhook fire the account cannot pay for answers
402with the reason instead of a server error. - Saving a connector credential is atomic, a Slack undo call is bounded by the call deadline, and a crash in the marketplace dialog stays inside the dialog.
- The email channel shows on the channels page, and the inbox of a deleted account tells the sender once per thread.
- Change requests: large change requests show their changed files, a blank diff says why, and the side-by-side toggle works on one-sided diffs.
- Binary file previews work again, and links to a session's files open instead of showing
[blocked]. - Computer use on a connected computer works for every tool and survives restarts and app updates. The CLI and the desktop app run as one runtime.
- Sign-in: a magic link works when the browser drops a cookie, a sign-in no longer bounces back to the sign-in page, and a sign-in or sign-up that stalls ends with an error you can retry. On mobile, SSO sign-in completes and the login stays until you sign out.
- The onboarding wizard opens on an account's first project, owners see the create-project screen on
/projects, and the account menu has a Settings row. - After a deploy, a page that loads stale code reloads once instead of breaking.
- Account deletion works when a session sandbox exists, never deletes an operator's login, and works on self-host.
- A push to GitHub that the remote rejects with a 500 is retried, and an expired checkout link answers with a clear not-found.
- Trigger and top-up controls show only to people who may use them, and the project config lists every registered agent.
- Translations and accessible names for icon buttons and the preview toggle.
/downloadhas its site navigation again, and/blogserves the blog.- CLI:
agents lslists the project's agents,shipand in-sandbox host selection use the right credentials, the CLI token list hides session tokens,reminders lsshows the prompt text, andtriggers firereports the real outcome. - Self-host:
doctorfails when sign-up is open and unconfirmed,self-host status --jsonprints clean JSON, the CLI refuses to rotateAPI_KEY_SECRETandPOSTGRES_PASSWORD, and/v1/setup/statusno longer stalls the API while it checks Docker. - Mobile: streaming turns stay stable, change requests anchor to their turn, the composer stays above the keyboard, and web links open in the in-app browser.
- The Add account dialog that Install opens proposes a name that is still free.
@kortix/agent-tunnel connectand the CLI's sandbox port proxy connect under Bun again.- The sidebar toggle tells screen readers whether the sidebar is open.
- The Providers tab no longer shows the Kortix-managed provider as connected when it serves no models.
- CLI:
kortix providerssubcommands reject unknown flags instead of ignoring them.