New
- Print a whole conversation. Cmd+P prints the full session as a clean document — every message, not one clipped screen of the app.
- Queued prompts you can see and edit. Queued messages show in a list above the composer. Press Up to edit the last one, and Resume picks the queue back up reliably.
- Private provider connection pools. Bring several keys for one provider, keep them private or share them with named members, and let a session hold its own key. Sessions fail over to the next key and report the earliest retry time when a pool is exhausted. Gemini and ChatGPT keys pool too, and pooled keys are managed in Models.
- Astra is available as a ChatGPT subscription model.
Improved
- Faster project boot. New sessions fetch the project from storage instead of cloning it, and start sooner.
- Faster session lists. A project's session list is now a page, not the whole inventory.
- Menus open instantly. Menus, popovers, tooltips and the command palette no longer wait to appear.
- Smaller sandbox images, which start faster.
- Git connections are now organized per account, with one instance backend and an identity that cannot drift.
Fixed
- Microsoft Entra directory sync. Patches apply atomically, large directories paginate, groups survive while a user is inactive or a sign-in session is stale, deactivation and single-member removal behave correctly, and users resolve across the whole directory.
- The gateway retries a slow internal call instead of answering "Gateway unavailable".
- Composer drafts survive session startup, and opening session settings no longer closes itself while the composer takes focus.
- Session attachments are more reliable.
- Model prices show correctly in the ChatGPT picker.
- Security hardening across session cursors, webhook signing keys, and the remaining high-severity scanner findings.
- Database migrations now apply cleanly on staging and production.
What's Changed
- feat(sandbox): bake rg, fd, bat, jq, fzf and a shell tool floor into every image by @markokraemer in #7264
- refactor(sandbox): remove the fast cold boot image, its flag, and the experiments it gated by @markokraemer in #7268
- test(release): dismiss the welcome card before Save in the repository-access journey by @markokraemer in #7276
- fix(cli): connectors apps searches the Composio toolkit catalog by @markokraemer in #7277
- feat(project-snapshot): S3 boot acquires the project 3.5× faster than Git (307 vs 1,078 ms) and boots 0.8 s sooner — presign at create, no HEAD on the boot path, kortixd gated on OpenCode's "server listening" by @DimitrijeGlibic in #7242
- fix: restore terminal recovery and keep message retries in their session by @sutharjay1 in #7267
- fix(usage): show zero cost for ChatGPT subscriptions by @markokraemer in #7278
- chore(release): VERSION → 0.13.19 [skip ci] by @github-actions[bot] in #7285
- fix: refresh terminal provider credentials after sandbox resume by @markokraemer in #7286
- fix(session): isolate optional connector failures and preserve prompt queue controls by @sutharjay1 in #7265
- chore(release): VERSION → 0.13.20 [skip ci] by @github-actions[bot] in #7290
- chore(release): staging VERSION → 0.13.20 [skip ci] by @github-actions[bot] in #7291
- fix(session): a queued prompt survives an unreachable runtime instead of being dead-lettered in 5 minutes by @markokraemer in #7289
- chore(release): back-merge staging into main (resolved) by @markokraemer in #7294
- chore(release): back-merge v0.13.18 release-gate fixes into main by @markokraemer in #7282
- fix(sandbox): an image over the provider's snapshot ceiling is a permanent, user-fixable state — not "try again" by @markokraemer in #7293
- feat(providers): reuse personal connections and subscription pools across projects by @Ino-Bagaric in #7295
- feat(providers): connect personal subscriptions and API keys across projects by @markokraemer in #7234
- Fix Azure SCIM ingress, deactivation, and group synchronization by @Ino-Bagaric in #7297
- fix(web): pin every @tiptap package to 3.27.1 by @sutharjay1 in #7300
- infra(dev): enable S3 Transfer Acceleration for project snapshots by @DimitrijeGlibic in #7299
- Fix Azure SSO and SCIM lifecycle, membership, and profile synchronization by @Ino-Bagaric in #7298
- fix: harden session attachments by @sutharjay1 in #7148
- Fix SCIM sync for populated Entra default profile mappings by @Ino-Bagaric in #7302
- perf(web): open menus, popovers, tooltips and the command palette instantly by @sutharjay1 in #7301
- fix(security): clear the high-severity CodeQL and Trivy findings blocking the staging promote by @markokraemer in #7306
- perf(sandbox): set modes at COPY time — a chmod/chown RUN was duplicating 290 MB into every image by @markokraemer in #7309
- fix(security): the three remaining high CodeQL findings, and the prompt-delivery incident learnings by @markokraemer in #7310
- perf(sessions): the project session list is a keyset page, not the whole inventory by @markokraemer in #7308
- fix(security): a webhook signing key must never come from Math.random by @markokraemer in #7312
- perf(sessions): the project session list is a keyset page, not the whole inventory by @markokraemer in #7314
- fix(dev): load the baked Supabase images, and stop starting the two nothing uses by @markokraemer in #7313
- Revert provider connection pooling and restore inline provider setup by @markokraemer in #7311
- Merge staging into main: reconcile #7308/#7314 and repair the learnings register by @markokraemer in #7317
- chore(release): VERSION → 0.13.21 [skip ci] by @github-actions[bot] in #7322
- chore(release): staging VERSION → 0.13.21 [skip ci] by @github-actions[bot] in #7323
- fix(models): restore ChatGPT picker reference prices by @markokraemer in #7320
- release: main → staging (prompt-delivery fix + 22 commits) by @markokraemer in #7292
- test(ci): fail the build on a committed git conflict marker by @markokraemer in #7318
- fix(app): separate send and composer queue placement by @sutharjay1 in #7304
- fix(security): pin the GCM tag and nonce lengths when opening a session cursor by @markokraemer in #7315
- refactor(git): one instance backend, account connections, env-immutable identity by @markokraemer in #7321
- fix(gateway): retry a slow control-plane call instead of serving "Gateway unavailable" by @markokraemer in #7325
- feat(session): Cmd+P prints the whole conversation as a document by @markokraemer in #7329
- Allow explicitly granted agent sessions to self merge CRs by @markokraemer in #7324
- Promote main to staging by @sutharjay1 in #7333
- fix(db): release the early-applied keyset index so staging and prod can migrate by @sutharjay1 in #7334
- Promote main to staging (migration order fix) by @sutharjay1 in #7335
- Add feature-flagged provider secret resources and session pools by @Ino-Bagaric in #7331
- Pooled provider connections with per-user ChatGPT accounts by @markokraemer in #7319
- fix(api): copy the early-applied migration repair into the API image by @sutharjay1 in #7338
- fix(api): copy the early-applied migration repair into the API image (staging) by @sutharjay1 in #7339
- Release candidate: main → staging (0.13.21) by @markokraemer in #7340
- Release v0.13.21 — Print whole conversations, Entra SCIM fixes, and faster project boot by @github-actions[bot] in #7336
Full Changelog: v0.13.20...v0.13.21