New
- Your terminal is now a first-class way to work with an agent:
kortix connectopens a session picker and attaches a full terminal UI to any running session, and can create a session and connect in one step. Barekortixshows the landing screen again. - Feature flags: one gating primitive across API, web, and CLI. Disabled features answer with a clear
feature_disablederror everywhere, and each project gets a dedicated Feature flags section under Customize. - Network-boundary secrets: secrets can now be marked for delivery only inside the sandbox network boundary, enforced per provider, configurable from web and CLI. Protected Platinum credentials sync automatically, misconfigurations are caught at save time instead of at boot, and the UI only offers delivery modes the project can honour.
- A workspace switcher and a
/newcreate page: switch workspaces from anywhere, reach account settings from the switcher, and create projects from one place. - Connector approvals are reviewed inline in the session, and connector setup finishes through one atomic path — no more half-finished connections when a webhook and a redirect race each other.
- The starter ships a continual-harness skill: agent scaffolding that reviews its own sessions and refines itself over time.
- Live session reload: when a session restarts, the UI now streams the reload progress instead of going quiet.
Improved
- Sandbox lifetime is now bound to the agent. Active turns keep compute alive; finished or inactive sessions contract to a short retrieval window; every stop records why it happened. Wake billing starts only after the provider confirms the machine is actually running — concurrent and failed wakes no longer bill.
- Session turns read in plain language, and rendering them costs far less.
- Connector search covers the whole Pipedream catalogue, with categories filtered server-side. New sessions pick up server-resolved connector defaults.
- Computer profiles are bound per machine, personal machines are allowed in project profiles, and the Computer Tunnel is hardened with computer-use restored.
- Session titles converge on the runtime title everywhere — no more three names for one session.
- Workspace file and spreadsheet reads retry during sandbox startup instead of failing on the first try.
- Audit trails reconstruct complete session integrity chains, and runtime state survives provider restarts.
Fixed
- A turn that is still being written can no longer be aborted mid-write, and "Interrupted" is only shown when a turn was actually interrupted.
- The session error card no longer blinks after giving up, no longer appears while the runtime is intentionally parked, and a temporary 503 during startup is no longer treated as a failure.
- The thinking shimmer only animates the thought the model is still writing.
- Starter agent templates fetch managed skills through the CLI instead of assuming they are on disk.
- A building sandbox shows a Details action instead of a broken Retry.
- Inline content previews render again.
- The public unauthenticated /review prototype page is gone, a connector URL parsing denial-of-service is eliminated, SES mail now runs on a task role instead of an IAM user, and production deploys refuse a mismatched Supabase auth configuration.
What's Changed
- chore(release): VERSION → 0.12.7 [skip ci] by @github-actions[bot] in #6268
- fix(audit): make OpenCode relay spool writable by @markokraemer in #6270
- fix(web): hide Apps discovery until the project enables the apps experiment by @markokraemer in #6271
- fix(audit): persist runtime state outside provider tmpfs by @markokraemer in #6272
- fix(runtime): parse CRLF OpenCode event frames by @markokraemer in #6274
- fix(web): remove public unauthenticated /review prototype page by @markokraemer in #6275
- feat(api): feature-flag core — declared enforcement + standard feature_disabled gate by @markokraemer in #6277
- fix(audit): return complete session integrity chains by @markokraemer in #6278
- feat(web,sdk): feature-flag surface — one gating primitive, dedicated Customize section by @markokraemer in #6279
- feat(cli,tests,docs): feature_disabled everywhere — CLI message, drift pin, flags UI spec by @markokraemer in #6280
- fix(sandbox): bind lifecycle and billing to agent activity by @markokraemer in #6281
- feat(starter): continual harness — self-refining agent scaffolding (arXiv 2605.09998) by @markokraemer in #6282
- fix(sdk): eliminate connector URL regex denial of service by @markokraemer in #6284
- fix(web): select connector defaults for new sessions by @markokraemer in #6286
- Refactor computers into per-machine connector profiles by @markokraemer in #6287
- fix(web): keep connector defaults server-resolved by @markokraemer in #6288
- fix(compliance): add MFA enforcement denial policy for IAM users (DCF-67) by @agent-kortix in #6289
- fix(web): de-noise CAPTCHA interceptor widgetId race from extension by @agent-kortix in #6290
- refactor(connectors): group assigned computers in profiles by @markokraemer in #6292
- fix(connectors): isolate legacy computer aggregate by @markokraemer in #6293
- feat(secrets): enforce network-boundary delivery by @Ino-Bagaric in #6297
- feat(web,api,sdk): workspace switcher and /new create page by @sutharjay1 in #6276
- fix(computers): allow personal machines in project profiles by @markokraemer in #6299
- Publish agent tunnel with platform releases by @markokraemer in #6301
- fix(api,sdk,web): converge session titles on the runtime title everywhere by @markokraemer in #6302
- Remove agent tunnel keep-awake mode by @markokraemer in #6304
- fix(web): restore preview for inline content artifacts by @agent-kortix in #6300
- fix(web): building sandbox alert shows Details action instead of Retry build by @markokraemer in #6306
- fix(connectors): search the whole Pipedream catalogue, filter categories server-side by @sutharjay1 in #6307
- feat(web): review connector approvals inline in the session by @markokraemer in #6311
- fix(api,sdk,web): unify connector finalize into one atomic path; webhook auxiliary by @markokraemer in #6312
- fix(agent-tunnel): harden Computer Tunnel and restore CUA by @markokraemer in #6313
- feat(web,sdk): plain-language turn UI and a large render-cost cut by @sutharjay1 in #6309
- fix(tunnel): record signed heartbeat pongs by @markokraemer in #6315
- feat(cli): bare
kortixattaches the OpenCode TUI to a session (managed binary + picker) by @markokraemer in #6317 - fix(web): retry all workspace file reads during sandbox startup by @agent-kortix in #6310
- feat(cli): connect picker under
connect(barekortix= landing again) + create-and-connect by @markokraemer in #6318 - feat(web): deploy frontend and PR previews on ECS by @markokraemer in #6319
- test(ke2e): add fast local flow runner by @markokraemer in #6260
- fix(compliance): replace SES IAM user with ECS task role (DCF-71) by @agent-kortix in #6295
- feat(web): expose session restart actions in command palette by @Ino-Bagaric in #6321
- fix(daemon): never abort a turn that is still being written by @Ino-Bagaric in #6322
- feat: let agents reconcile branch conflicts before reload by @Ino-Bagaric in #6323
- ci: run each test suite once by @markokraemer in #6324
- fix(web): "Interrupted" must mean interrupted, not "the word abort appeared" by @Ino-Bagaric in #6325
- Show live session config reload progress by @Ino-Bagaric in #6326
- infra: retire unused QA report portal by @markokraemer in #6328
- ci: remove completed QA teardown workflow by @markokraemer in #6333
- infra: cut dev and previews over to ECS web by @markokraemer in #6332
- fix(starter): route managed-skill references through kortix-cli + live kortix skills get by @markokraemer in #6330
- fix: network-boundary secrets fail loudly instead of silently by @Ino-Bagaric in #6334
- fix(web): the session header shows the session name, not opencode's title by @Ino-Bagaric in #6327
- fix(infra): preserve canonical dev DNS metadata by @markokraemer in #6336
- fix(compliance): associate ECS web ALBs with WAF (DCF-88) by @agent-kortix in #6344
- test: sample full-stack test report artifacts by @markokraemer in #6337
- fix(release): gate prod frontend on live API; forbid blocking backfills in migrations by @markokraemer in #6346
- feat(llm-catalog): slim managed lineup to GLM 5.2 + DeepSeek V4 Flash by @markokraemer in #6348
Full Changelog: v0.12.6...v0.12.7