Capture on Windows, signed installers, Drive, and automation controls
New
67- Every new session runs pi. The
pi_harnessflag andruntime: opencodeno longer select OpenCode. A session that already runs OpenCode keeps it. OpenCode is deprecated. (#10786) - Share one response. Share response, beside Copy response, publishes one finished assistant response through a public link: the response only, or the prompt and the response. Turning the link off ends anonymous access. (#10816)
- Weekly changelog.
/changeloggroups what went live in production by week, and each week has its own page with every change. (#10823) - Agent marks. Every agent has a pixel mark on Agents cards and in agent pickers. (#10826)
- Shopify with your own app. Connect on Shopify opens a Kortix form that takes the store and the Client ID and secret of your Shopify Dev Dashboard app. Shopify no longer issues the custom app tokens the old flow asked for. (#10825)
- Move projects between accounts. A project can be transferred to another organization or account. (#9918)
- Default reasoning effort per project. Set it once in project settings. (#9935)
- Run a session on your own machine with a ChatGPT subscription, through kortixd. (#9754)
- Audit activity. See who was active in a workspace and how often, in the API, CLI and SDK. (#10604)
- Goals page, a session Goal button and goal health, behind the
goalsflag. (#10600) - Embedded sessions. Public transcript sharing is removed; existing transcript share links are revoked. Embed the real session page instead. (#10008)
- Retry a failed reminder. A reminder whose last run failed shows its error and a Retry button: in the session's reminders, the project Reminders list and calendar, and with
kortix reminders run <id>. A reminder that a session's agent sets now reaches its session. Before, it failed after about 13 minutes when the session belonged to another member. - An agent's card shows what its configuration grants.
- A replaced change request reads "Superseded by #N" and opens its replacement.
- A filename in a reply opens the session output it names.
- File versions show their session's title, agent and archive instead of a session id.
- Kortix managed models run on Platinum Inference. The managed model list, prices, limits and reasoning levels come live from Platinum, so a model Platinum adds reaches Kortix without a release. Self-hosted and bring-your-own-key projects can add a Platinum key and call
platinum/<model>directly. - Session logs for every project. The session log is on by default, so every project stores its conversations in it.
- Bring your own S3 for Kortix Capture. An admin can keep an account's recordings in the account's own S3 bucket from Capture → Settings → Storage. Self-hosted Kortix can use an external S3 object store for Capture.
- Session rows say what waits on you. The sidebar shows a question or permission, an open change request, and the sub-agents and sessions a session started.
- Reminders glide between rows, and 30 or more reminders open in the side panel.
- The turn-done toast offers Review for the change request the turn opened.
- Remove a project skill from its card on the Skills page.
- New sandboxes always run on Platinum. Sandbox templates no longer offer Daytona.
- White-label examples: Lumen, a legal AI app on one shared Kortix project with a Team Console, and the Lumen Workspace reskin.
- One model path: the Kortix LLM gateway. Every project's models go through the gateway, and custom OpenAI-compatible endpoints are set up in the gateway as custom providers.
- pi is the default agent harness. New sessions in a project start on pi unless the project turns
pi_harnessoff. Existing sessions keep their harness. Projects with the LLM gateway off stay on OpenCode. - One Drive with team folders. Files lives under the gear, and
kortix driveworks from the CLI. - Triggers protect themselves. A trigger that stays at its hourly run limit for 2 hours pauses itself, sends one alert, and resumes when you set
enabled: true. A new cron trigger skips a fire while its previous run is still active (overlap: allowopts out). @kortix/uiis a plug-and-play UI library. The Kortix web app and the Lumen example now render the same session, workspace and settings screens from one package.- Preview text attachments in the app before you send them.
- Mobile 1.5.1: iOS Liquid Glass chrome, a native glass message menu, smoother sheets and scrolling in long sessions, and an MFA focus fix.
- Pause all automations: one account switch stops every project's schedules, webhooks, app events and monitors.
- Trigger run limits: a trigger runs at most 60 times an hour by default, with an optional daily limit, so a runaway trigger stops itself.
- Drive in the sidebar, with a Drive page, a file viewer, upload, multi-select and file management. Session folders show Drive folders. Repo moves under Customize.
- Recently deleted lists the sessions you can restore, and a restored session keeps its conversation.
- Drop a file anywhere on a session page or the project home to attach it to your message.
- Notifications have All, Needs you and Done tabs, and the bell shows when something needs you.
- Generative UI is on by default for new sessions: the agent can answer with cards, comparisons, charts, maps and tabs. A project can turn it off in Settings.
- Computer: every access is granted at pairing with a switch for each afterwards, a new computer starts with every access selected, "Always" is remembered, and Computer Use works on Windows without console windows.
- The command palette (⌘K) opens Drive, Reminders and Repo.
- Mobile reminds you when a question has waited 60 seconds for an answer, and renders generative UI like the web app.
- Connectors v2 (experimental, per project): a catalog of vendor MCP apps signed in with OAuth that Kortix runs, app-event triggers that Kortix checks, an event inbox, and an in-place move for existing Composio and Pipedream connectors and their triggers.
- Windows is ready for company rollout: the install command downloads the installer, waits and reports whether it worked. The macOS and Linux commands do the same.
- Windows: the app window opens for people without admin rights, a manual MSI install never rolls back, and the app has a Windows icon.
- App rules match what an admin types on every OS:
notepad.exealso matches the packaged Windows 11 Notepad, and the inclusion policy never records an app it cannot identify. The app catalog lists common CAD apps. - The timeline keeps the runs of frames taken while the person is idle.
- The player shows video for computers linked to no one.
- Settings shows that Capture always starts at login.
- The Kortix desktop app is no longer recorded on Windows and Linux, as on macOS.
- Windows installers for Kortix Desktop and Kortix Capture are signed by Kortix AI Corp.
- Windows: the title bar blends with the app, a Kortix menu replaces the raw menu bar, and the app has a tile icon.
- Each deployment serves its own desktop build.
- Kortix-managed models are part of paid plans. Free accounts use their connected ChatGPT subscription or their own provider keys.
- Kimi K3 leaves the managed lineup. Sessions and defaults that used it move to DeepSeek V4.1 Flash.
- Managed models fall back across providers in a fixed order, the default model always has a fallback, and legacy model ids get their model's fallbacks. Third-party endpoints are used only with zero data retention and only from subprocessors in effect.
- Reasoning variants reach the model on the pi harness, and pi decides shell permissions command by command.
- When a managed model's provider fails, the session stays on the fallback instead of retrying the failed provider on every request.
- Model-switch notices sit above the turn's work, one row per run of identical switches.
- Platinum is the default sandbox provider. Daytona remains as a legacy fallback. E2B support is removed.
- Trigger run history. Every trigger keeps a list of its runs with status, error and end time. You can test-fire a trigger with a payload, replay a past run, and missed cron slots are bounded.
- More credit tiers and larger top-ups. The Free plan now includes 500 credits and the managed models.
- DeepSeek V4.1 Flash now serves the 1017 snapshot on Morph (US region, zero data retention).
- Subprocessor notices. The subprocessor list is published, and owners and admins of paid accounts get a 30-day email notice before a new subprocessor takes effect.
- White-label license. A free, self-serve white-label license is published next to the repository license (
WHITE-LABEL-LICENSE.md). - Customize › Agents lists agents first, with subagents in their own section.
- Kortix Capture: choose an Exclusion or Inclusion policy, categories list what they cover, the cloud policy applies from the first frame, and the app has Restart and Quit.
Improvements
57- Compaction. pi compacts early enough to leave room for the model's full answer, still compacts after it retries a failed model call, and honours a project's
compaction.reserveTokensagain; the context meter counts reasoning tokens once. (#10835, #10845) - Session history. Messages that only the old transcript store held move into the session log; the daemon keeps every batch the API refuses and sends it again; capture waits for memory and runs one session at a time; the usage panel counts the whole thread. (#10827, #10837, #10829, #10793, #10791, #10783)
- Deleted sessions are fully gone after 30 days: the conversation, every copy (model requests and responses, prompt commands, questions, notifications, share links), the stored files and the session's branch. Sessions purged before this release lose their remaining copies too. (#10831)
- Branch cleanup. A session branch that fails to delete no longer stalls the sweep. (#10833)
- Status page. Upstream capacity errors that a fallback model absorbs no longer open an incident. (#10795)
- Parked sandboxes. An open tab stops polling the transcript of a sandbox that is parked. (#10820)
- Billing. Usage is metered on every plan; only charging is gated. (#9929)
- Model routing. A project's Routing chain now covers every model. (#8742)
- Model limits. Every model reports its real context window and output limit, including custom endpoints; Codex models get their 272k window. A custom-endpoint model reads images and reasons when the endpoint supports it. (#10757, #10768)
- Session history. A new session reads only the session log, and an old session being converted opens its history, not an empty log. (#10722, #10728)
- Agents and connectors. A cleaner agent page and connector modal, catalogue favicons that recover from broken images, and one design for role dialogs. (#10490, #9924, #10702, #10382)
- Mobile. Simpler session sheets and tool surfaces. (#10229)
- Keep-alive. An open page keeps its sandbox awake for the idle window, not 2 hours. (#10026)
- The session log is the only saved history. Opening a session reads its log first and makes no request to the old transcript. Older web, mobile and CLI builds keep working. The "Session log" feature flag is gone, because every project uses the log.
- Self-hosted Kortix converts old conversations into the session log by itself after this update.
- A pi command that exits non-zero reads as a command. A failure the agent moved past is no longer red.
- A stalled preview says so and offers Reload.
- When a provider refuses Kortix's key, Kortix shows the error once, in the search card, and names Kortix as the cause.
- Connector search survives Back, agent display names find their sessions, and a failed search batch shows its errors.
- Refreshed model catalog.
- Faster LLM gateway admission: each upstream has its own circuit breaker, admission reads run in parallel, and the default model is resolved only when a request needs it.
- Change requests that an agent opens show at turn end. An applied change request refreshes agents and Needs you.
- Pinned sessions sit above the Sessions header.
- Transcripts show while the sandbox is still starting.
- Compaction stays inside the Worked section.
- The model picker never preselects a model whose provider is not connected, and it says what to connect.
- Marketplace add stays on the page, and search keeps its query in the URL.
- Billing shows Plan member usage and the credit reset and expiry dates.
- Command palette search finds "Your first chat with Kortix".
- The session slash menu lists skills again on pi.
- CLI: 17 commands match the API again,
doctorpicks an available model, andsessions rmwithout--projectdeletes exactly the named session or nothing. - Forked conversations persist and stay reachable after navigation.
- pi tells the model today's date on every turn, leaves the session title to Kortix (the header no longer flips), and the Changes tab works on pi sessions.
- Sessions report the model the conversation uses, not the model pinned at creation.
- The project home sends faster, finished replies no longer stream again, and slash skills and commands show there.
- Escape in an empty composer stops a streaming reply. The command palette opens at once, and the slash palette opens the agent picker.
- Drive shows folders as folders and keeps fixed folders in place.
- Connector catalogs resolve in one batch, and sub-agent links keep their sub-agent.
- Large files open whole instead of cutting off at 50k characters.
- Web and CLI show the same model price estimates.
- Cron triggers show the exact next run with its timezone.
- Trigger edits keep the comments in
kortix.yaml. - Faster gateway log and audit reads in projects with a lot of history. Gateway budgets read a running daily total (954 ms → one key read), sign-in checks no longer make an extra auth hop, and a page load fetches its project once.
- CLI:
modelslists catalog availability,sessions newstreams readiness progress, chat and compact wake a stopped or provisioning session first,access grant --useruses the linked project, marketplace installs resolve short names,doctornames the turn error and explains warm-session retention, project and session URLs match the host, and channels show every state by default. - Provider failures recover better: internal continuations, one terminal error row, suggestions you can act on, and a cancel you made yourself no longer shows as a model failure.
- Model-switch errors stay in the conversation history.
- Sign-in and password recovery by email are more reliable. Refused auth emails show an honest message, and the link buttons cool down.
- The CLI resolves the host and the default project the same way everywhere, keeps its identity inside a delegated sandbox, routes help correctly, and reports billing in the same credit units as the wallet.
- Connectors: the sync summary agrees with the list,
policy lsshows connector rules, and the All tab lists the project's own connectors. - API keys: revoked gateway keys are hidden, a create cannot mint twice, and revoked personal keys can be deleted (also from the CLI).
/newshows the plan cap before the first failed create.- Phone layouts on web and mobile have accessible navigation targets.
- Platinum images for US-region projects are built and copied in their region, so the first session after a template rebuild does not wait.
- Sessions start faster: env-sync no longer blocks
/starton the model push and no longer pushes into stopped boxes. - An opened App scrolls at once, and its bar is Refresh, Open, Settings and Close. App releases run on Platinum when it is configured.
- "Open as admin" acts as the project's account.
- Sandboxes clear known-safe caches when their disk fills up.
Fixes
75- pi permissions. A path rule holds for
./,..,@and absolute paths. (#10787) - Web addresses.
/dashboardopens projects;/loginand/signupopen sign-in; a trailing slash or another letter case redirects to the page; an unknown path answers 404 and a malformed one 400;/privacy,/terms,/imprintand/subprocessorsopen the legal pages; crawlers can fetch the static assets pages need; each localized page declares its locale; the Apple app-site-association file is served as JSON; the docs touch icon loads. (#10812, #10815, #10814, #10807, #10810, #10818, #10806, #10805, #10817, #10804, #10803, #10808) - Sandbox versions. The version feed caches one GitHub read, never names a prerelease as the latest stable version, and still answers when GitHub rejects the token. (#10809, #10811)
- Marketplace. Paging never skips or repeats an item. (#10802)
- Scoped tokens resolve the current project. (#10819)
- Files. A download with a range the file cannot satisfy answers 416 with the file size, not "storage unavailable". (#10790)
- Agent page. The dev-only layout switcher is gone. (#10813)
- Invites on self-hosted instances without email. A person your identity provider adds through SCIM can join even when their address is outside the provider's domain. The invite page offers Continue with single sign-on, says to ask an admin when single sign-on is not set up, and Resend lets that person accept. (#10707)
- Routine wakes are silent: no waking notice, boot pill or boot screen. (#10716)
- Reload keeps your project, and a sidebar click no longer opens a session's hover card. (#10720, #10721)
- Files. Project owners can edit and commit repository text. (#10517)
- Projects. Rename a project from the switcher. (#10523)
- Panels. ⌘I brings back the panel it hid, also from inside the Browser preview. (#10725)
- CLI. Remote login without a callback (its poll and approve calls get their own rate limit), service-account keys, and
connectors callresolves the project likeconnectors ls. (#10483, #10779, #10235) - Sessions. Compacting a busy session no longer shows internal diagnostics; a US-region session boots where its drives live; a daemon restart drops its env-sync trust. (#10442, #10348, #10014)
- Apps. Existing Apps move from
ghcr.io/get-convextoghcr.io/conveximages. (#10353) - Connectors. A connector failure line is split in linear time. (#10736)
- Desktop. The Linux AppImage builds again with electron-builder 26. (#10743)
- An accepted invite shows the new account and project at once. A declined invite leaves the sidebar at once.
- Enter no longer submits text in the middle of a Chinese, Japanese or Korean composition.
- A permission prompt shows the current agent's name after an agent switch.
- The password reset page removes the used recovery code from the address bar.
- Security: the mobile map moves to maplibre-gl 6.12.0, which fixes a critical advisory.
- Smaller fixes: the Rooms join spinner, Capture timeline dragging, changelog links, and copying the logo.
- Security hardening: hosted APIs no longer trust the legacy Supabase signing secret, a token cannot be minted already expired or outlive the token that minted it, the sandbox daemon refuses symlinks that point outside the workspace, billing state needs
billing.read, account names refuse markup, and deleting an account revokes its credentials. - Trigger runs close when their turn ends, and queued creates link to their run.
- A skill created with the form shows on version 3 projects.
- A channel's model pin is stored again.
- Capture search reads the requested day, routing policy keeps generation defaults, and credit reads follow the account.
- Editing a v2 agent keeps the keys the update cannot carry.
- A missing attachment answers 404 instead of a retry. Five routes stop reporting permanent failures as temporary. A command that timed out keeps its unknown outcome.
- A session mention in a message you just sent keeps its title.
- Incomplete personal accounts are cleaned up when their user is deleted.
- Many smaller fixes and cleanups across the web app, the CLI and the API.
- Session notifications work in a fresh browser, and blocked notifications recover with a sound fallback.
- Usage opens from account deep links, and checkout returns to the billing page of the account that paid.
- The low-balance warning scales to the recurring grant, and a new free account no longer sees a false warning.
- A deleted project no longer reopens from cache. Enabling a gated feature no longer leaves the page, and a lost session keeps its return path. Account deletion explains that it can be cancelled.
- Compacting a busy session is refused with a clear message. Forking a stopped session explains what to do.
- New project invitees get their notification. Removed avatars are erased.
- Email confirmation is link-first, and the sign-in screen offers password sign-in.
- The app recovers from a stale code chunk instead of failing to load.
- Connected accounts stay on the personal identity.
- The first session of a new project no longer lists the project setup as its own changes.
- Session tokens can no longer leak after a session ends.
- Expired branches are deleted without cloning their history.
- Reminders re-arm from the time they resume.
- Public transcripts show failed assistant turns.
- The Agents page shows agent ids, and a direct user grant replaces the existing project role.
- The public OpenAPI spec publishes a relative server URL.
- Many smaller fixes across the CLI, triggers, auth and the web app.
- Members of MFA accounts can open project-wide Apps. Reminders move under Customize.
- Signed-out devices stop getting push notifications.
- Connecting an MCP server whose URL does not answer shows the reason instead of a server error.
- A ChatGPT login that only failed a model check is no longer marked for reconnection.
- Plural forms and labels in 9 languages are corrected.
- Reopening a session paints its saved conversation at once, and older tool calls keep their command.
- A connector whose stored credential the vendor rejects is marked on the account for reconnection, and the call reports it instead of a server error.
- Billing emails reach the owners of older accounts, and a notice without a recipient is retried.
- @kortix/ui: one shared component library for the web app and SDK hosts.
- With the session log flag on, sessions read and write only the session log; older messages and sub-agent threads come from it.
- Faster requests: the gateway admits a request in one API round trip, the app shell loads after one auth round trip, project details and secrets no longer wait on a git fetch, member and session reads are indexed, and the session lifecycle queue has its own index.
- Model catalog seeds refreshed. CI signing and publish fixes for Windows builds.
- Shared session start failures retry.
- The auth callback logs provider errors safely.
- Dead public share links show the unavailable page.
- Streaming markdown keeps its blocks around fenced definitions.
- A provision stream that closes mid-way recovers its real result; 502/503 alerts show the real reason.
- App locales are no longer double-prefixed.
- Onboarding promos stay dismissed and no longer stack after you exit the wizard.
- A future key expiry shows as a countdown.
- The agent config and model pins reject an agent name that is not declared.
- LLM inference refuses principals that have no project (
403 project_required). - Subscription plan resolution ignores enterprise metadata hints.
- Many smaller fixes across web, mobile, the CLI, the whitelabel demo, the gateway and the API.