New
- Program agents: an agent can run your own code on every turn instead of a model, with a time limit and a payload input.
- Chats in My Kortix keep their own goals and check-ins until the work is done.
- A new workspace opens only after a model is connected, so the first chat always has a model to answer with.
- One-prompt developer onboarding, and new factory templates.
Improved
- A finished connector sign-in lands on a Kortix page and tells the agent that it can continue. The sign-in card sits in the transcript under its step.
- The CLI authorize page fills in the login code and asks you to confirm it.
- The chat no longer jumps when you send a message or a queued prompt lands.
- The sidebar row shows Working and Ready as soon as a turn changes. Idle session tabs poll 3x less.
- Merge previews fetch only the head commit, not the whole repository mirror.
- The admin operations overview loads its last-24h usage from an index instead of a full scan.
- The CLI and the docs say
workspace_ideverywhere.
Fixed
- A Stop no longer drops the first queued message of a session.
- The workspace home keeps a sent message in a locked composer until the session opens. Keys typed while the home loads reach the composer.
- Triggers: App targets, "every" periods and trigger links work in the web UI.
- The gateway replays an Idempotency-Key the same way on every replica.
- /connections never claims a connection by itself.
- One delete-account dialog for every account state.
- Teams manifest requests no longer return 409.
- Security updates for hono and @hono/node-server.
- Quieter logs: gateway refusals and Composio edge blocks no longer flood the warn level.
What's Changed
- chore(release): VERSION → 0.15.9 [skip ci] by @github-actions[bot] in #12527
- refactor(session): one home for the session-row rules both hosts hand-copy (KRTX-4772) by @agent-kortix in #12525
- feat(slack)!: one Slack workspace runs in one Kortix workspace; agents move by their own rules by @markokraemer in #12499
- fix(gateway): remember a refused model's typed refusal after b6102f0 (KRTX-4665) by @agent-kortix in #12470
- fix(release): the v0.15.9 contract lanes match the merged behavior by @markokraemer in #12533
- fix(triggers): an account-state event-trigger refusal answers 402, not 500 (KRTX-4771) by @agent-kortix in #12524
- fix(api): stop dialling a box that proved dial-dead at the proxy (KRTX-4459) by @agent-kortix in #12479
- fix(api): throttle the preview-sandbox 403 warn storm on a dead box (KRTX-4768) by @agent-kortix in #12529
- refactor(mobile): one paged gallery, one bundled-asset text reader, one debounce hook (KRTX-4776) by @agent-kortix in #12532
- refactor(api): serve the session-cost wire records from @kortix/sdk (KRTX-4622) by @agent-kortix in #12539
- refactor(ui,api): the connector invalidation helper lives in the hooks layer; the credential move ledger states why a transfer leaves it (KRTX-4760) by @agent-kortix in #12531
- chore(release): staging VERSION → 0.15.10 [skip ci] by @github-actions[bot] in #12541
- chore(release): VERSION → 0.15.10 [skip ci] by @github-actions[bot] in #12542
- refactor(web): the project gate reads the canonical Workspace record; the resolver owns the deleting view (KRTX-4623) by @agent-kortix in #12540
- fix(web,mobile): web sign-in on a phone no longer opens the app by @sutharjay1 in #12543
- refactor(mobile): drop the dead surfaces of the settings pages and collapse the prompt tile (KRTX-4790) by @agent-kortix in #12544
- test(ui): pin the palette pick to the visually-first row on a debounced group (KRTX-4786) by @agent-kortix in #12545
- fix(mobile): Agent · Model tabs show on iOS; workspace switcher header and search lay out on Android by @sutharjay1 in #12548
- fix(ui): no busy row under the answer while it streams by @sutharjay1 in #12547
- fix(sessions): admins of an MFA workspace get repository access again by @sutharjay1 in #12551
- refactor(mobile): unify duplicated pixel, config and upload helpers (KRTX-4794) by @agent-kortix in #12550
- fix(mobile): searchQueryParam reads a null text as empty (KRTX-4760) by @agent-kortix in #12546
- chore(mobile): version 1.6.2 for the next store build by @sutharjay1 in #12552
- fix(api): surface a dead Daytona key instead of "provider state is unknown" (KRTX-4791) by @agent-kortix in #12549
- test(api): pin the trigger-runs spend read index-only (KRTX-4795) by @agent-kortix in #12553
- fix(ui): a dialog opened inside another dialog dims the parent again by @markokraemer in #12556
- fix(mobile): drawer pages open at once instead of after 2–3 s by @sutharjay1 in #12558
- test(ui,web): the sessions tests read the streaming busy-row gate (KRTX-4760) by @agent-kortix in #12555
- fix(mobile): Agent · Model tabs reach the screen in the iOS model sheet; version 1.6.3 by @sutharjay1 in #12560
- feat(secrets)!: provider keys need no flag; "Pooled Provider Secrets" leaves Feature flags by @markokraemer in #12561
- fix(api): a git push of kortix.yaml applies its triggers and policies at once by @markokraemer in #12563
- feat(mobile): version changes and upload dev builds to TestFlight by @sutharjay1 in #12562
- fix(web): /auth no longer logs "Encountered a script tag" on load by @sutharjay1 in #12565
- fix(api): no false "queued" reply in chat; cap failed box recoveries at 3 by @DimitrijeGlibic in #12567
- fix(web): demo booking calendar loads again; CSP report noise stops by @DimitrijeGlibic in #12568
- feat(ui): connect ChatGPT and Claude above the first-chat composer by @sutharjay1 in #12559
- feat(db): drop the Suna-era schemas, 224.7 GB of the prod database by @DimitrijeGlibic in #12569
- fix(web): More options shows progress and keeps the suggested workspace name by @sutharjay1 in #12570
- fix(api): the audit archive resumes a week after a worker restart instead of starting it over by @DimitrijeGlibic in #12571
- docs(learnings): check CSP reports after enforcing a script allowlist by @DimitrijeGlibic in #12572
- feat(web,mobile): agent reports fold into one row over the answers (KRTX-4732) by @sutharjay1 in #12566
- fix(web): upgrade opens on $50 and Confirm rows name their question by @sutharjay1 in #12574
- fix(billing): the composer offers a model right after a plan checkout by @sutharjay1 in #12575
- fix(mobile): drawer sections show only with rows, and Show more always loads one by @sutharjay1 in #12577
- fix(api): page a persistent provider auth outage with the right provider's remediation (KRTX-4792) by @agent-kortix in #12557
- fix(web): the CLI authorize page offers a retry when the workspace list fails to load (KRTX-4788) by @agent-kortix in #12573
- fix(ui): chat links to this app open in place, with no page reload by @markokraemer in #12581
- fix(drive): refresh folder listings after failed reads by @sutharjay1 in #12580
- fix(connectors): a Composio app gets no empty shared account; revoke turns it off at Composio by @markokraemer in #12584
- fix(api): the workspace-invariants run survives a timeout and scans by index (KRTX-2754) by @agent-kortix in #12578
- fix(web): keep rapid follow-up input when starting a session by @sutharjay1 in #12586
- fix(api): rate-limit person role-denial warn lines through the shared log window (KRTX-4801) by @agent-kortix in #12583
- fix(web): move notifications out of the workspace Review tabs to the person-level Inbox (KRTX-4799) by @agent-kortix in #12582
- fix(session): returning to a streaming session shows the whole answer so far by @sutharjay1 in #12588
- fix(mobile): iOS content sheets open at content height as Liquid Glass by @sutharjay1 in #12585
- chore(db): drop the unused pgjwt extension that blocks Postgres 17 by @DimitrijeGlibic in #12589
- refactor(cli): split the tokens command by resource, dedupe 3 helpers (KRTX-4807) by @agent-kortix in #12587
- feat(worker): status.kortix.com shows the worker through a Better Stack heartbeat by @DimitrijeGlibic in #12591
- fix(iam): mint account-wide PATs at /settings/tokens and name the binding workspace in fence errors (KRTX-4787) by @agent-kortix in #12564
- fix(web): list pending questions and preserve settings gates by @sutharjay1 in #12595
- fix(sdk): a live answer no longer freezes on Thinking when the stream joins mid-reply by @sutharjay1 in #12596
- fix(session): retain reload snapshots and explain disconnected runtimes by @sutharjay1 in #12594
- fix(api): throttle the agent-access denial warn line (KRTX-4800) by @agent-kortix in #12592
- fix(api): a failed deploy's cleanup no longer fails on its restore step (KRTX-4811) by @agent-kortix in #12599
- refactor(cli): split the Dockerfile lint into named checks and dedupe the workspace plumbing (KRTX-4813) by @agent-kortix in #12600
- fix(cli): plain prompts settle on end of input instead of hanging (KRTX-4814) by @agent-kortix in #12598
- fix(api): name the timer and the SQLSTATE when a leader tick fails (KRTX-4808) by @agent-kortix in #12590
- fix(mobile): Agent · Model tabs show in the iOS model sheet by @sutharjay1 in #12601
- refactor(cli): every sessions help check asks splitHelp, not its own includes (KRTX-4804) by @agent-kortix in #12593
- fix(web): sent prompts no longer vanish from a session by @sutharjay1 in #12602
- refactor(tui): one action hook, one time ladder, one clip for the screens (KRTX-4816) by @agent-kortix in #12603
- fix(db): no sparse row list after a mid-result statement error (KRTX-4817) by @agent-kortix in #12604
- fix(billing): one subprocessor notice email per person (KRTX-4819) by @agent-kortix in #12605
- refactor(db): one migration-ledger module, one sha256, one safety header (KRTX-4821) by @agent-kortix in #12606
- refactor(registry): reuse manifest-schema's issue model, name rule and policy actions (KRTX-4823) by @agent-kortix in #12608
- Promote dev 9e2bf6c to staging by @github-actions[bot] in #12611
- fix(api): a wallet grant that loses to contention is a retryable 503 (KRTX-4818) by @agent-kortix in #12609
- Promote dev cec7f80 to staging by @github-actions[bot] in #12614
- refactor(shared): consolidate App release resolution, arch-select and dead exports (KRTX-4825) by @agent-kortix in #12612
- fix(api): warn once an hour for a Composio edge block after d97a057 (KRTX-4722) by @agent-kortix in #12613
- fix(web): the CLI authorize page prefills the login code and asks the person to confirm it (KRTX-4802) by @agent-kortix in #12579
- refactor(agent-tunnel): un-export 21 dead internals (KRTX-4832) by @agent-kortix in #12616
- fix(release): KRTX-4833 five v0.15.10 gate drifts by @agent-kortix in #12618
- fix(release): cherry-pick KRTX-4833 gate fixes onto staging for v0.15.10 by @agent-kortix in #12619
- fix(release): the v0.15.10 release gate drifts (stage-fix of #12618) by @agent-kortix in #12620
- fix(security): KRTX-4842 hono 4.13.17 in the daemon and scanner lockfiles by @agent-kortix in #12621
- fix(security): cherry-pick KRTX-4842 hono lockfile fix onto staging for v0.15.10 by @agent-kortix in #12624
- fix(web): serve the canonical robots policy to an IPv6 localhost host (KRTX-4843) by @agent-kortix in #12623
- fix(deps): KRTX-4846 patch hono and @hono/node-server advisories (release v0.15.10 gate) by @agent-kortix in #12622
- fix(deps): KRTX-4846 hono 4.13.18 + @hono/node-server 2.1.6 onto staging (v0.15.10) by @agent-kortix in #12626
- fix(api): make the deadline-orphan test independent of hono Context.header throwing (KRTX-4845) by @agent-kortix in #12625
- refactor(white-label): share the call-snippet panel and proxy path guard (KRTX-4847) by @agent-kortix in #12629
- fix(api): KRTX-4845 deadline-orphan test on hono 4.13.16+ onto staging (v0.15.10) by @agent-kortix in #12630
- fix(web): use one delete-account dialog whatever the account state (KRTX-4849) by @agent-kortix in #12631
- fix(ui): stop the chat jumping when a message is sent or a queued prompt lands by @sutharjay1 in #12634
- fix(web,sdk): /connections never claims a connection, idle session tabs poll 3x less by @sutharjay1 in #12635
- fix(sdk): the sidebar row shows Working and Ready as soon as the turn changes by @sutharjay1 in #12637
- feat(my-kortix): chats keep their own goals and check-ins until done by @markokraemer in #12482
- fix(cli,docs): say workspace_id in the CLI and the docs (KRTX-4850) by @agent-kortix in #12633
- fix(web): keys typed while the workspace home loads reach the composer; no Teams manifest 409s by @sutharjay1 in #12638
- fix(api): read trigger-run spend only for the runs a page returns (KRTX-4854) by @agent-kortix in #12636
- chore(release): VERSION → 0.15.11 [skip ci] by @github-actions[bot] in #12641
- chore(release): staging VERSION → 0.15.11 [skip ci] by @github-actions[bot] in #12642
- fix(triggers): App targets, every periods and trigger links work in the web UI by @markokraemer in #12645
- fix(ci): pin Capture Rust toolchain to 1.99.1 (KRTX-4860) by @agent-kortix in #12643
- fix(gateway): share the Idempotency-Key replay across gateway replicas (KRTX-4612) by @agent-kortix in #12627
- refactor(tests): dedupe flow turn-session, webhook signing, PAT mint and Space type (KRTX-4857) by @agent-kortix in #12649
- fix(db): index usage_events.created_at for the ops overview 24h read (KRTX-4862) by @agent-kortix in #12646
- refactor(tests): one preview origin, host name and env-number rule (KRTX-4866) by @agent-kortix in #12651
- fix(api): a Stop no longer drops the first queued message of a pi session (KRTX-4864) by @agent-kortix in #12647
- perf(api): merge-preview fetches the head alone, not the whole mirror (KRTX-4868) by @agent-kortix in #12653
- feat(agents): program agents run your code per turn instead of a model by @markokraemer in #12648
- fix(web): workspace home keeps the sent message in a locked composer until the session opens by @markokraemer in #12656
- feat(onboarding): a workspace opens only after a model is connected by @DimitrijeGlibic in #12657
- fix(connectors): a finished sign-in lands on a Kortix page and tells the agent by @markokraemer in #12659
- fix(agents): program agents get a time limit and payload input; a stale config release no longer reaches a session by @markokraemer in #12660
- feat: one-prompt developer onboarding, Loopmaxxing landing behind a launch flag, factory templates by @markokraemer in #12644
- fix(web): the connector sign-in card sits in the transcript under its step by @DimitrijeGlibic in #12666
- fix(loopmaxxing): the header is the Kortix logo, then LOOPMAXXING by @markokraemer in #12668
- refactor(scripts): one HCL reader, one query-key selector factory, one spawn lifecycle (KRTX-4874) by @agent-kortix in #12662
- fix(api): log a typed gateway refusal at info, not warn after 7127cee (KRTX-4665) by @agent-kortix in #12667
- Promote dev eab0879 to staging by @github-actions[bot] in #12669
- fix(release): the v0.15.11 release suite passes again (staging) by @markokraemer in #12676
- fix(release): the three v0.15.11 suite failures #12675 left red (staging) by @agent-kortix in #12685
- fix(release): the three v0.15.11 suite failures #12675 left red (staging, KRTX-4881) by @agent-kortix in #12686
- fix(release): cherry-pick #12684 onto staging (TRG-20 sign, v0.15.11) by @agent-kortix in #12689
- Release v0.15.11 — Program agents, goals that stay with each chat, and a smoother connector sign-in by @github-actions[bot] in #12672
Full Changelog: v0.15.10...v0.15.11