Changelog
BREAKING CHANGES
- chore!: remove
api.tsunnecessary calls (#22168, 4caa528) (@jakehwll) - Dashboard: Require confirmation before executing terminal command from URL (#24650, 66abd8a) (@Shelnutt2)
SECURITY
- Bump Go toolchain to 1.25.9 (#24293, 03d662a) (@CommanderK5)
- Replace trivy with osv-scanner (#24311, 75f712f) (@CommanderK5)
- Bump gomarkdown to patched revision (#24567, 869168b) (@CommanderK5)
- Keep OSV findings from failing security job (#24378, 9e771c4) (@CommanderK5)
- Widen engines.node to include Node.js 24 LTS (#24419, 1f194dc) (@jdomeracki-coder)
Features
- Add chat and chat_files cleanup to dbpurge (#23833, 233343c) (@johnstcn)
- Dashboard: Take/release control agents desktop buttons (#24009, da5395a) (@hugodutka)
- Server: Add telemetry for agents chats and messages (#24068, c5d720f) (@kylecarbs)
- Support disabling reverse/local port forwarding in agent SSH server (#24026, 7b7baea) (@f0ssel)
- Add dynamic tools support for chat API (#24036, b969d66) (@kylecarbs)
- Add CreatedAt to tool-call and tool-result ChatMessageParts (#24101, 35c26ce) (@kylecarbs)
- Byok-observability for aibridge (#23808, 7f496c2) (@evgeniy-scherbina)
- Add httproute for K8s Gateway API (#23501, e3a0dcd) (@cfi2017)
- Dashboard: Add under-construction navbar stripes for pre-release builds (#24157, 461a31e) (@johnstcn)
- Add user secrets SDK types and db2sdk converters (#24102, 9b91af8) (@zedkipp)
- Add input validation for user secret env names and file paths (#24103, 7caef49) (@zedkipp)
- Dashboard: Hide agents desktop tab when workspace is stopped (#24191, 33d9d0d) (@hugodutka)
- Agents desktop recording thumbnail backend (#24022, efb19eb) (@hugodutka)
- Dashboard: Agents desktop recording thumbnail frontend (#24023, 128a7c2) (@hugodutka)
- Merge Limits + Usage into unified Spend page (#24093, 29ad2c6) (@DanielleMaywood)
- Add CLI commands for managing chat context from workspaces (#24105, 391b22a) (@kylecarbs)
- Byok observability api (#24207, 8237822) (@evgeniy-scherbina)
- Warn in CLI when server runs dev or RC builds (#24158, 1e40cea) (@johnstcn)
- Add REST API handlers and client methods for user secrets (#24107, 95cff8c) (@zedkipp)
- Resolve
useTime()thunk()error (#24234, 82456ff) (@jakehwll) - Stack insights tables vertically and paginate Pull requests table (#24198, 36141fa) (@mattvollmer)
- Add workspace build transition to provisioner job list (#24131, 7bde763) (@jscottmiller)
- Comment on original PR after cherry-pick PR is created (#24243, e0fbb0e) (@f0ssel)
- User secret database encryption (#24218, 508114d) (@zedkipp)
- Agent: Add user secrets to agent manifest (#24252, 2f52de7) (@zedkipp)
- Refactor
<AgentLogs />error state (#24233, 7b02a51) (@jakehwll) - Add a debounce to menu filtering (#24048, 982739f) (@jakehwll)
- Show build logs in chat for start_workspace and create_workspace tools (#24194, cb0b84a) (@DanielleMaywood)
- Add organization scoping to chats (#23827, 22062ec) (@johnstcn)
- De-mui
<Skeleton />component (#24278, 58c6855) (@jakehwll) - Add chat debug log tables, queries, and SDK types (#23913, 6ab3012) (@ThomasK33)
- Add secret value and file path validation (#24269, 4854f33) (@zedkipp)
- Make sure creds are always masked (#24241, b78eba9) (@evgeniy-scherbina)
- Demui the
<LinearProgress />dependency (#24275, e0902e3) (@jakehwll) - Dashboard: Add full-width chat layout toggle (#24307, a414d37) (@kylecarbs)
- Add types, context, and model normalization (#23914, 8382e96) (@ThomasK33)
- Add texlive.svg icon (#24312, 3d8d89e) (@DevelopmentCats)
- De-mui the
<UserGroupsCell />component (#24277, 60aed55) (@jakehwll) - Graduate web-push from experiment to always-on (#24310, 116323d) (@johnstcn)
- Add Prometheus metric for agent first connection duration (#24179, 20b953a) (@jscottmiller)
- Link group names to group page in agents limit settings (#24212, 214351e) (@aslilac)
- Configure multiple AI Bridge providers of the same type (#23948, 08045c2) (@dannykopping)
- Dashboard: Expose workspace apps in chat workspace pill (#24295, e317f3b) (@DanielleMaywood)
- Add coder_build_info metric (#24365, 48b90f8) (@dannykopping)
- Server: Add recorder, transport, and redaction (#23915, 4651ca5) (@ThomasK33)
- Dashboard: Make org selector compact (#24318, 93a1a51) (@DanielleMaywood)
- Add allow-byok option for ai-gateway (#24274, dd73ea5) (@evgeniy-scherbina)
- Add Prometheus metrics for chatd subsystem (#24371, d7439a9) (@johnstcn)
- Add plan mode with restricted tool boundary (#24236, 1cf0354) (@ibetitsmike)
- Support multiple agents with shared instance-identity auth (#24325, e5707a1) (@ibetitsmike)
- Add internal subagent model override wiring (#24399, 1092093) (@ibetitsmike)
- Accept xhigh effort for Anthropic (#24439, 15d8e4f) (@DanielleMaywood)
- Add CLI support for user secrets (#24270, 7270e01) (@dylanhuff-at-coder)
- Wire DERPTLSConfig through CLI, SDK, tailnet, VPN, agent, and health checks (#24435, 4c1a32c) (@spikecurtis)
- CLI: Add experimental agents TUI (#24150, de30488) (@ibetitsmike)
- Add Explore mode as subagent-only modality (#24448, 73b5058) (@ibetitsmike)
- Server: Add PR status summary to telemetry snapshots (#24379, 4ba74dc) (@deansheather)
- feat(scripts/develop): enable prometheus metrics by default (#24389, a23a38c) (@johnstcn)
- Server: Add chat debug service and summary aggregation (#23916, 91f9de2) (@ThomasK33)
- Label chatd metrics by model, add stream-state diagnostics (#24475, 4b58546) (@johnstcn)
- Runtime user secrets injection into workspaces (#24313, 72f35e1) (@zedkipp)
- Server: Agent-created file attachments in chat (#24280, ef6969d) (@ethanndickson)
- Support AWS SDK default credential chain for Bedrock authentication (#24346, 522118a) (@ssncferreira)
- Server: Wire debug logging into chat lifecycle (#23917, df7e838) (@ThomasK33)
- Add chat debug HTTP handlers and API docs (#23918, 18a30a7) (@ThomasK33)
- Allow renaming of agent chat title (#24489, 410f9a5) (@jaaydenh)
- feat(scripts/develop): add --prometheus-server flag to run Prometheus UI (#24408, d99949d) (@johnstcn)
- Server: Accept parameters in start_workspace tool (#24434, 1203f62) (@ethanndickson)
- Make database.Chat auditable (#24485, c968a1f) (@johnstcn)
- Allow approved external MCP tools in root plan mode (#24509, 9d0469f) (@ibetitsmike)
- Surface upstream provider error details in chat callout (#24546, 2295e9d) (@ethanndickson)
- Dashboard: Show MCP settings and hide insights in sidebar (#24428, 7f4127b) (@DanielleMaywood)
- Server: Add description tags to tool parameter structs (#24394, 79a9f43) (@app/blinkagent)
- Rebucket "Number of developers" onboarding options (#24573, f77827e) (@david-fraley)
- Dashboard: Display file attachments in chat UI (#24281, cc4e04a) (@ethanndickson)
- Dashboard: Add chat debug API layer and panel utilities (#23919, 8c0fe6d) (@ThomasK33)
- Dashboard: Add Debug panel components and settings (#23920, 249b71b) (@ThomasK33)
- Sort AI sessions by last prompt time (#24440, c23abc6) (@jeremyruppel)
- Add chatd tool call error metrics and logging (#24559, 72e3ae9) (@johnstcn)
- Add dependabot security backport labels (#24484, 06d7fc5) (@CommanderK5)
- Add lima incus example (#24640, f5ccf68) (@johnstcn)
- Dashboard: Allow disengaging plan mode from Planning badge (#24651, 50dbb3d) (@david-fraley)
- Migrate agents-access to org-scoped system role for proper chat RBAC (#24438, b5a6255) (@johnstcn)
- Snapshot explore subagent tool entitlements (#24638, dbcc654) (@ibetitsmike)
- Add general subagent model override (#24610, 3d90546) (@ibetitsmike)
- Add collapsible thinking blocks with configurable display mode (#24635, 3a9a60d) (@DanielleMaywood)
- Dashboard: Add Charm Crush client icon to AI Bridge UI (#24662, 346b462) (@dannykopping)
- Auto-archive inactive chats with audit trail (#24642, a876287) (@johnstcn)
- Add alert with link to template agent skill on page after template creation (#24588, c488658) (@DevelopmentCats)
- Dashboard: Opt AI Gateway pages into React Compiler (#24713, 780aa6c) (@jeremyruppel)
- Add admin UI control for chat auto-archive days (#24704, 2f26903) (@johnstcn)
- Plumb user secrets through provisioner chain to terraform (#24542, 79735f2) (@zedkipp)
- Dashboard: Add duplicate model action (#24728, ebed01a) (@ibetitsmike)
- Chat auto-archive owner digest notifications (#24643, 70d6efa) (@johnstcn)
- Add after_id pagination for chat messages (#24531, 5222db8) (@david-fraley)
- Reload MCP config on change via lazy stat-on-request (#24700, 881df9a) (@mafredri)
- Add
--skip-setupflag to develop script (#24794, dcb3216) (@aslilac) - Add hostAliases support to Coder helm chart (#24729, 76242f8) (@rowansmithau)
- Audit user secret create, update, and delete (#24756, df1bfe6) (@zedkipp)
- Dashboard: Remove visible text from copy/download logs buttons (#24852, 75fc13d) (@jeremyruppel)
Bug fixes
- Dashboard: Inline dl/dt/dd classNames and use justify-between layout in session tables (#24118, 7d3c5ac) (@jeremyruppel)
- fix(scripts/githooks): clear all repo-local Git env vars in hooks (#24138, be686a8) (@ethanndickson)
- Dashboard: Standardize scrollbar styling with global baseline (#24019, 1f808cd) (@jaaydenh)
- Pin fixed anthropic/fantasy forks for streaming token accounting (#24077, 5902351) (@ibetitsmike)
- Dashboard: Scroll when request logs tool call is huge (#24162, de61ac5) (@jeremyruppel)
- Dashboard: Fix agents right panel layout on small landscape viewports (#24161, 477d6d0) (@hugodutka)
- Revert auto-assign agents-access role enabled (#24170, 7b0421d) (@johnstcn)
- Dashboard: Move pagination test from vitest to storybook story (#24165, 12ada01) (@DanielleMaywood)
- Sanitize workspace agent logs before insert (#24028, f4240bb) (@dylanhuff-at-coder)
- Dashboard: Replace Tooltip with HelpPop… (#24057, f95a520) (@code-qtzl)
- Mark connecting agents as unhealthy instead of healthy (#24044, 584c61a) (@matifali)
- Dashboard: Add padding below thinking-only assistant messages (#24140, f957981) (@jaaydenh)
- Resolve
<Badge />incorrect sizes (#22539, 2e6fdf2) (@jakehwll) - Dashboard: Request logs and sessions page UI consistency (#24163, 2505f62) (@jeremyruppel)
- Dashboard: Use locale string for token usage tooltip (#24177, 3f51974) (@jeremyruppel)
- Dashboard: Replace expandable agentic loop section with cool design (#24171, fb0ed11) (@jeremyruppel)
- Server: Stabilize startup-timeout tests with quartz (#24193, 65bf7c3) (@ethanndickson)
- Bump coder/tailscale to pick up RTM_MISS fix (#24187, ad2415e) (@ethanndickson)
- CLI: Retry dial timeouts in SSH connection setup (#24199, 1d0653c) (@EhabY)
- OAuth2 cancel button in the authorization page not working (#24058, 83fd4cf) (@fioan89)
- Resolve
<WorkspaceTimings />size (#24235, 4018320) (@jakehwll) - Fix 4px layout shift on streaming commit in chat (#24203, 1a3a92b) (@jaaydenh)
- Dashboard: Add bottom spacing for sources-only assistant messages (#24202, 76d89f5) (@jaaydenh)
- Remove double bottom border on build logs table (#24000, 2c32d84) (@DanielleMaywood)
- Update directory for terraform-managed subagents (#24220, 3462c31) (@f0ssel)
- Server: Sort pinned chats first in GetChats pagination (#24222, a62ead8) (@mafredri)
- Resolve idle timeout recording test flake on macOS (#24240, 8dff1cb) (@kylecarbs)
- Dashboard: Show "Preparing" in workspace pill during agent startup scripts (#24286, 39ceb8c) (@DanielleMaywood)
- Resolve flaky TestWatchChats/DiffStatusChangeIncludesDiffStatus (#24298, 69917b4) (@kylecarbs)
- Dashboard: Use readonly Organization[] and explicit is_default lookups (#24288, 11fe497) (@johnstcn)
- Validate individual edit entries in parseEditFilesArgs (#24301, 1458861) (@DanielleMaywood)
- Use per-chat plan file paths (#24268, a554de3) (@ibetitsmike)
- Prevent site storybook tests from hanging after completion (#23936, a1ef304) (@mafredri)
- Dashboard: Hide bottom spacer on last session thread (#24248, 4d4266a) (@jeremyruppel)
- Stop group spend limits from leaking across org boundaries (#24294, c552f9f) (@johnstcn)
- Remove OIDC_TOKEN from secrets deny lsit (#24337, 6fb27c9) (@zedkipp)
- fix(.github/workflows/contrib): use @actions/github instead of @octokit/rest in community-label job (#24343, 7e68d18) (@f0ssel)
- Relax secrets env var denylist for model providers (#24344, 0832033) (@zedkipp)
- fix(Makefile): rebuild clidocgen when Go sources or template change (#24302, 0080bcb) (@ethanndickson)
- Fix false positive disconnected agent metric reporting (#24225, 730edba) (@cstyan)
- Resolve double border on
<WorkspaceTimings />(#24358, 44f361d) (@jakehwll) - Server: Validate webpush subscription endpoints (#24347, 5812f84) (@ThomasK33)
- Address post-merge review findings for chat org scoping (#24297, 6194bd6) (@johnstcn)
- Use findByRole in ProviderWithUserKeysOnly storybook to avoid race condition (#24367, 7084044) (@DanielleMaywood)
- Use VSCode icons instead of ExternalLinkIcon on agent page workspace selector (#24370, 49d8c9e) (@DanielleMaywood)
- Dashboard: Remove double border at top of RightPanel (#24364, 0360bc3) (@DanielleMaywood)
- Dashboard: Style navbar version badge as a notch (#24372, f8d521d) (@johnstcn)
- Server: Hoist system prompt fetch out of chat creation transactions (#24369, e7883d4) (@ethanndickson)
- Prevent 'See all templates' from overlapping template list in New Workspace dropdown (#24356, 517bb1f) (@35C4n0r)
- Dashboard: Prevent empty organization_id when permittedOrgs resolves to empty (#24393, 91446ac) (@DanielleMaywood)
- CLI: Prevent false deprecation warnings for renamed options (#23931, e3f2398) (@stirby)
- Re-fetch context files and skills from workspace on each turn (#24360, d11849d) (@kylecarbs)
- Don't skip tag naming when building nix image (#24403, 280735d) (@aslilac)
- Fix dogfood template presets (#24406, fda0593) (@aslilac)
- Move OnChatUpdated call after agent is ready in create/start workspace (#24410, 9c74c8c) (@kylecarbs)
- Fix
image_typeoptions (#24411, fded2cb) (@aslilac) - Dashboard: Truncate long workspace name in chat input toolbar (#24412, 8bc91d9) (@kylecarbs)
- Remove mui dependency on
useClickableTableRow()(#24373, 51ac35c) (@jakehwll) - Restore kebab menu flex (#24359, 074ff79) (@jakehwll)
- Server: Auto-update workspace to active template version on chat start (#24424, 91b35a2) (@ethanndickson)
- Add missing ClientType to InsertChat test params (#24436, eae9444) (@ethanndickson)
- Dashboard: Allow search by label in MultiSelectComboBox (#24421, 383b10f) (@johnstcn)
- Associate computer use recordings with chats (#24471, db81912) (@hugodutka)
- fix(.github/workflows): upgrade github-script to v9 in community-label job (#24479, d8d63ad) (@jdomeracki-coder)
- fix(dogfood): fix capitalization typo and extra blank line (#24481, a41c8d7) (@EhabY)
- fix(dogfood): update display name and add README (#24487, ee56363) (@EhabY)
- Reap idle chatd stream states on a timer (#24476, 3f6b40a) (@johnstcn)
- Dashboard: Insert newline on mobile Enter (#24498, c40f45b) (@david-fraley)
- Dashboard: Use hard reload after login to reload metadata (#24239, a2b9b74) (@jeremyruppel)
- Dashboard: Fix flaky CreateWorkspacePage tests (#24480, a53f52e) (@DanielleMaywood)
- Server: Save refreshed token before validation (#24332, 2a1984f) (@mafredri)
- Server-side diffs and stricter fuzzy splicing for edit_files (#24454, 6b0bb02) (@mafredri)
- Resolve
<ChatTopBar />fmtissue (#24515, 5f6c74a) (@jakehwll) - Server: Reduce relay reconnect spam (#24495, 12e49c1) (@johnstcn)
- Dashboard: Prevent workspace icon from shrinking in chat pill (#24521, f688e85) (@DanielleMaywood)
- Classify HTTP/2 transport failures as retryable timeouts (#24502, df429b7) (@johnstcn)
- Exclude subagent chats from sidebar pagination (#24404, fc24937) (@mafredri)
- Sort child chats newest-first and prepend on creation (#24524, 467430d) (@mafredri)
- Server: Add frame-ancestors CSP directive to prevent clickjacking (#24474, 615be17) (@jdomeracki-coder)
- Server: Enforce workspace authz on watchChatGit (#24477, ea00d2d) (@deansheather)
- Server: Omit frame-ancestors CSP for embed routes (#24529, 411ed21) (@jdomeracki-coder)
- Dashboard: Stabilize app.spec.ts e2e test (#24400, 4b755e5) (@jeremyruppel)
- Dashboard: Stabilize agent form stories (#24532, 2f0d715) (@johnstcn)
- Dashboard: Simplify prerelease css (#24514, 3b561dc) (@jakehwll)
- Dashboard: Replace misused useEffectEvent with correct patterns (#24525, bf885cc) (@DanielleMaywood)
- Dashboard: Polish table alignment for workspace proxies (#24538, 3b0cd5b) (@tracyjohnsonux)
- Reuse shared tailnet for coderd-hosted MCP workspace tools (#24460, 181e103) (@ethanndickson)
- Dashboard: Implement agent logs improvements (#24455, 3466806) (@jakehwll)
- Server: Add chattest.OpenAI() default fake server (#24540, 5f3effd) (@johnstcn)
- Database: Renumber duplicate MCP migration (#24552, cb67e71) (@ibetitsmike)
- Server: Deflake TestSubscribeRelayDrainWithinGraceLeavesBufferRetained (#24549, f56adf5) (@johnstcn)
- Dashboard: Fix flaky TemplateVariablesPage submit test (#24459, a62c0c1) (@jakehwll)
- Stop tracking chat title in audit logs (#24564, 4d45b69) (@johnstcn)
- Dashboard: Wait for file upload before submitting create template form (#24548, 2b8a2c9) (@jakehwll)
- Rebuild modeloptionsgen when codersdk changes (#24543, ef2b3a7) (@ethanndickson)
- Dashboard: Show startup script failure message without restart suggestion (#24449, b4eb0e2) (@jeremyruppel)
- Server: Fix TestPatchChat/Title flake by waiting for chat to settle (#24572, 148e56b) (@jaaydenh)
- Handle expired chat file attachments in replay and UI (#24518, 353e522) (@ethanndickson)
- Dashboard: Add bottom spacing for no-renderable assistant fallback messages (#24551, b62881e) (@jaaydenh)
- Server: Use waitChatSettled in remaining title tests (#24585, 360e119) (@johnstcn)
- Server: Allow deleting chat providers used in historical chats (#24568, ad19065) (@ethanndickson)
- Server: Enforce ActionSSH in MCP HTTP agent connection path (#24607, 86b2db6) (@jdomeracki-coder)
- Server: Detect disconnected agents in getWorkspaceConn (#24336, 78d9a22) (@mafredri)
- Support Bedrock ambient AWS credentials for Agents providers (#24397, 9634739) (@ibetitsmike)
- Server: Record SSE attempts on EOF (#24565, 26b64fa) (@ThomasK33)
- Server: Allow Anthropic per-modality ratelimit headers (#24592, b7c2c59) (@ThomasK33)
- Infer workspace from env in
coder support bundle(#24617, 3362b5a) (@EhabY) - Grant AsAIBridged ResourceSystem.ActionCreate for UpsertAISeatState (#24603, ec91ac5) (@mtojek)
- Fall back to local git watcher for chat diff drawer (#24512, 7904bed) (@ibetitsmike)
- fix(aibridge): track Charm Crush client and session ID (#24630, 8aa3294) (@dannykopping)
- Dashboard: Make workspace notification pills keyboard accessible (#24536, 075face) (@code-qtzl)
- Dashboard: Fix workspace unhealthy dialog stories (#24637, 514b499) (@jeremyruppel)
- Server: Remove cache-miss check blocking agent recovery (#24634, 1ace519) (@mafredri)
- Server: Fix TestListChats/PinnedOnFirstPage race timeout (#24641, be1256c) (@johnstcn)
- Scale Testing: Make measureDeletion more reliable/less brittle (#23614, b714fe8) (@cstyan)
- Scale Testing: Fix Runner.Cleanup() to delete workspaces (#23627, 7d044fa) (@cstyan)
- Dashboard: Remove agent settings insights menu link (#24644, 7385722) (@ibetitsmike)
- Server: Deflake relay drain test for multiple timers (#24609, d9e3e20) (@johnstcn)
- CLI: Fix flaky TestExpAgentsE2E/ExistingChatHistory (#24661, be011b2) (@johnstcn)
- Dashboard: Prevent sticky message cycling when submitting edited message (#24292, 6edb49d) (@DanielleMaywood)
- Server: Fix flaky TestSpawnComputerUseAgentInheritsContext (#24666, 2e5c7d9) (@johnstcn)
- Dashboard: Improve agents page mobile view (#24508, 95386f5) (@tracyjohnsonux)
- Agent: Flaky TestPortableDesktop_StopRecording_WithThumbnail (#24671, 397c9fb) (@hugodutka)
- Stabilize git tab during edit_files (#24648, ca14aa3) (@johnstcn)
- Dashboard: Fix action bar hidden after null-returning assistant messages (#24566, e17da2f) (@jaaydenh)
- Promote MCP server display name to a required form field (#24652, f96f7b9) (@david-fraley)
- Dashboard: Use highlight-orange for warning badge text and border (#24674, e56b409) (@tracyjohnsonux)
- Dashboard: Remove last-checked label from git diff panel (#24675, a13f7f1) (@johnstcn)
- Server: Reject API operations on archived chats (#24633, f8fe5d6) (@mafredri)
- Dashboard: Focus agents terminal on tab switch (#24677, c56061a) (@hugodutka)
- Dashboard: Fix OpensAdminSubPanelOnMobile story on mobile viewport (#24678, 7efccfa) (@johnstcn)
- Server: Reject pinning child chats in patchChat handler (#24669, c602a31) (@johnstcn)
- Server: Prevent invalid tool results from poisoning chat history (#24663, a02339c) (@johnstcn)
- fix(Makefile): run storybook tests after Go tests in pre-push (#24703, ce12583) (@mafredri)
- Persist per-turn model on chats and queued messages (#24688, c7cac9d) (@ibetitsmike)
- Database: Rename duplicate migration 477 (#24707, 0ccfd57) (@johnstcn)
- Fixes aibridge integration tests failing on windows (#24665, b8906c8) (@pawbana)
- Dashboard: Add copy buttons to raw attempts (#24705, 88b62a3) (@ThomasK33)
- Do not clobber dynamic parameters (#24645, d958d89) (@code-asher)
- Reduce re-registration interval to 5s to prevent replica staleness flapping (#24597, 6ac25c9) (@sreya)
- Honor parameter defaults in --use-parameter-defaults and SSH auto-start (#24591, 02b1235) (@jeremyruppel)
- Server: Sanitize Anthropic provider tool history (#24706, 0211448) (@ibetitsmike)
- Resolve
outsideBoxstyle for tabs (#24561, 056203f) (@jakehwll) - Dashboard: Persist chat draft attachments (#24709, aee8504) (@ibetitsmike)
- Server: Wake after auto-promoting queued message (#24714, ed33e28) (@ibetitsmike)
- Prevent malformed OpenAI Responses continuations (#24725, 62e9752) (@ibetitsmike)
- Clean Bedrock headers (#24718, 99a83a2) (@ibetitsmike)
- Recover web push subscriptions after PWA reinstall (#24720, 069223a) (@kylecarbs)
- Restore osv scanner workflow (#24702, 2446be4) (@CommanderK5)
- Remember last active sidebar tab per agent session (#24631, 23b30b7) (@jaaydenh)
- Fall back to name lookup for UUID-shaped workspace names (#24340, d5a5be1) (@johnstcn)
- Dashboard: Use theme-aware color for agent row tab bottom border (#24737, 33ffedf) (@jeremyruppel)
- Dashboard: Align thinking disclosure (#24743, ad30951) (@kylecarbs)
- Redirect OAuth2 authorization page to dashboard (#24499, a8e7f32) (@fioan89)
- Dashboard: Close terminal window on command confirmation cancel (#24765, 06ebde3) (@jdomeracki-coder)
- Dashboard: Support archived URL query (#24742, 68c8499) (@johnstcn)
- Server: Repair Anthropic provider tool history (#24744, 99eb46d) (@ibetitsmike)
- Set Bedrock streaming accept headers (#24776, dec3e98) (@ibetitsmike)
- Match Bedrock streaming accept headers (#24781, 8fe11e9) (@ibetitsmike)
- Server: Block chain mode when provider missing tool results (#24782, 1666bff) (@johnstcn)
- Pass agent context config explicitly instead of reading env (#24759, 3c45089) (@mafredri)
- Server: Detect rate-limit 403/429 and narrow isFailedRefresh (#24334, 1926b7e) (@mafredri)
- Allow coderd to start with an empty DERP map when built-in DERP is disabled (#24544, 3f0e015) (@geokat)
- Server: Restore request body after capture (#24784, 1d8e298) (@ibetitsmike)
- Server: Avoid data races in DERP report (#24795, 9538390) (@geokat)
- Dashboard: Remove Request Logs from admin menu, redirect /aibridge to sessions (#24840, feca4c2) (@dannykopping)
- Add preset support to MCP tools (#24694, eabb68d) (@johnstcn)
- Server: Detect concurrent refresh race to prevent cache poisoning (#24228, e67d027) (@jasonwbarnett)
- Server: Cut DB fan-out on agent instance-identity auth (backport #24973) (#24982, f009c17)
Documentation
- Replace dockerd with service docker start in Sysbox examples (#24004, 9838198) (@matifali)
- Add AI Bridge structured log record types and monitoring cross-link (#23979, c2592c9) (@jcjiang)
- Update release calendar to reflect 2.31 as stable (#24159, 543c448) (@app/blinkagent)
- Add BYOK docs, fix tool tables, add platform controls (#24178, 506fba9) (@mattvollmer)
- Rename "Security implications" to "Security posture" (#24181, d954460) (@mattvollmer)
- Rename AI Bridge to AI Gateway and Agent Boundaries to Agent Firewall (#24094, 7a94a68) (@dannykopping)
- Documentation: Document AI Gateway Proxy private IP restrictions (#24209, d9700ba) (@ssncferreira)
- Byok docs (#24032, ff6f589) (@evgeniy-scherbina)
- Use coder-api-token instead of coder-session-token (#24316, 95fd3e5) (@evgeniy-scherbina)
- Add BYOK compatibility table (#24315, 574979a) (@evgeniy-scherbina)
- Move copilot provider config from clients to setup (#24382, ba6bef1) (@matifali)
- Clarify copilot plans in provider config (#24433, f07a332) (@matifali)
- Add coder-templates skill references to quickstart and template contribution guides (#24383, b89ddb5) (@DevelopmentCats)
- Add git providers and PR Insights pages for Coder Agents (#24447, cc4eaff) (@mattvollmer)
- Remove unused
pausedandcompletedchat statuses, addrequires_action(#24264, 1feb183) (@david-fraley) - Update MCP Server description for clarity (#24655, ff1308c) (@matifali)
- Documentation: Add Governance Layer section to architecture page (#24587, fb26b39) (@jcjiang)
- Add v2.32 to release calendar (#24589, 135ab29) (@dannykopping)
- Documentation: Clarify MCP tools injection deprecation timeline (#24750, adea1fa) (@jcjiang)
- Add deprecation warning for login-type none (#24594, 4820f13) (@zenithwolf1000)
- Clarify PR body wrapping (#24764, bf66f63) (@ibetitsmike)
- Document terminal command confirmation dialog (#24771, 1c70c96) (@jdomeracki-coder)
- Add early access user secrets guide (#24735, 55ed6cf) (@matifali)
Code refactoring
- Dashboard: Extract BackButton and AdminBadge (#24130, 17a71ae) (@DanielleMaywood)
- Dashboard: Extract ConfirmDeleteDialog component (#24128, 3a61289) (@DanielleMaywood)
- Replace useEffectEvent polyfill with native React 19.2 hook (#24060, 86b919e) (@DanielleMaywood)
- Decompose AgentSettingsBehaviorPageView + remove kyleosophy (#24141, f820945) (@johnstcn)
- Dashboard: Replace
!!withBoolean()for boolean coercion (#24180, 3d139c1) (@DanielleMaywood) - Dashboard: Remove mui from a few components (#24125, 224db48) (@aslilac)
- Dashboard: Migrate some components from emotion to tailwind (#24182, 9d6557d) (@aslilac)
- Send raw typed payloads over chat WebSockets (#24148, 38d4da8) (@DanielleMaywood)
- Dashboard: Convert OrganizationAutocomplete to fully controlled component (#24211, 0a14bb5) (@johnstcn)
- Dashboard: Address plan-mode frontend review feedback (#24426, 6bb4444) (@ibetitsmike)
- Replace @mui/x-tree-view with simple tree components (#24266, 72c3563) (@aslilac)
- Dashboard: Replace shadcn color aliases with semantic design tokens (#24284, 23f9e26) (@chrifro)
- Unify subagent spawn behind spawn_subagent (#24535, f073323) (@ibetitsmike)
- Dashboard: Rename border-hover token to border-secondary (#24553, 5cce3ee) (@chrifro)
- Dashboard: Split Agent Settings Behavior into focused destinations (#24574, 60186b2) (@ibetitsmike)
- Dashboard: Replace custom scroll implementation with react-infinite-scroll-component (#24687, 4505278) (@DanielleMaywood)
- Dashboard: Drop redundant window. prefix on browser globals (#24500, d78a78f) (@aslilac)
- Dashboard: Align tool-call and message styling (#24790, 4a91656) (@kylecarbs)
- Dashboard: Remove
Stackcomponent (#24503, 5afb297) (@aslilac)
Performance improvements
- Reorder declarations to fix React Compiler scope pruning (#24098, 3f7a3e3) (@DanielleMaywood)
- Dashboard: Add reconnect jitter to reconnectingWebsocket (#24096, f219834) (@ethanndickson)
- Dashboard: Split InlineMarkdown out of Markdown to avoid loading PrismJS in initial bundle (#24192, 19e0e0e) (@jaaydenh)
- Dashboard: Optimistically edit chat messages (#23976, a0ea71b) (@ethanndickson)
- Server: Cheaper chatd org membership checks (#24361, 227f20d) (@ethanndickson)
- Fix DiffViewer scroll performance (#24300, e421c2f) (@jaaydenh)
Tests
- Skip TestSubscribeRelayEstablishedMidStream (#24431, b9bc0ad) (@ethanndickson)
- Pin DateRangePicker calendar today to caller-supplied clock (#24517, 596e55b) (@ethanndickson)
- Server: Deflake stale control notification test (#24545, c1421b4) (@ethanndickson)
- Add regression guard for chat title masking (#24584, 38f5d3f) (@johnstcn)
- Dashboard: Add Debug panel Storybook stories (#23921, 5c316d4) (@ThomasK33)
- Server: Seed anthropic provider for computer_use tests (#24611, 9b5d09e) (@ibetitsmike)
Continuous integration
- Add cherry-pick to latest release workflow (#24051, ab77154) (@f0ssel)
- Add automatic backport workflow (#24025, a3de0fc) (@f0ssel)
- Attribute cherry-pick/backport PRs to the requesting user (#24195, 2c49948) (@f0ssel)
- Add cherry-pick PR check for release branches (#24121, 76cbc58) (@f0ssel)
- Use GitHub App for community label org membership check (#24149, 079dc48) (@f0ssel)
- Fix texlive.svg viewBox and add icon paths to CI go filter (#24322, 47a12d2) (@ethanndickson)
- Broaden workflow path filter and fix zizmor lint findings (#24323, 155e989) (@ethanndickson)
- Add build provenance attestation for release binaries (#24345, d0c9571) (@matifali)
- Migrate doc-check workflow from Coder Tasks to Coder Agents (#24388, 630de40) (@stirby)
- Add InTx linter replacing ruleguard rule (#24422, 55e525f) (@ethanndickson)
- Post docs preview link on PRs that change docs (#24283, d3cc23d) (@dannykopping)
- Pass github.repository through env var (#24605, e3a1fb0) (@jdomeracki-coder)
- ci(.github/workflows/contrib): skip community label for dependabot (#24660, 9f02fec) (@jdomeracki-coder)
- Add permissions section to backport.yaml (#24654, 1e21b28) (@matifali)
Chores
- Revert force deploying main (#23290, 497f637) (@johnstcn)
- Update to our fork of charm.land/fantasy with appendCompact perf improvement (#24142, 27e5ff0) (@johnstcn)
- chore(Makefile): use go build -o for helper binaries to reduce GOCACHE growth (#24197, f8e8f97) (@ibetitsmike)
- Complete jest to vitest migration (#24216, b149433) (@aslilac)
- Fix typescript skill table (#24217, c67c939) (@aslilac)
- Update EA text and docs link in Coder Agents UI (#24255, bd467ce) (@david-fraley)
- Bump aibridge version (#24368, 34f3d4a) (@pawbana)
- Documentation: Remove misleading chat forking reference (#24396, dd7397b) (@mattvollmer)
- Update our fork of fantasy/anthropic-sdk-go to fix MarshalJSON over-allocations (#24390, 2b68a1f) (@johnstcn)
- Upgrade to ubuntu 26.04 (#24267, d23a695) (@aslilac)
- Increase coderd_chatd_message_count histogram max bucket to 1024 (#24409, e996f6d) (@app/blinkagent)
- Follow-ups from #23948 (#24377, 914a0f7) (@dannykopping)
- Improve design of agents behavior settings page (#24324, 509784a) (@jaaydenh)
- Update design of add users dialog (#24287, 4064b60) (@jaaydenh)
- Add client_type field to chats and telemetry (#24342, 3452ab3) (@deansheather)
- Add dogfood template for coder/vscode-coder development (#24306, 890c610) (@EhabY)
- Add import block for vscode-coder template in dogfood (#24472, c0abf8f) (@deansheather)
- Add GetLatestWorkspaceBuildWithStatusByWorkspaceID query (#24441, e19b21b) (@spikecurtis)
- Split Pubsub interface into Publisher and Subscriber (#24442, 2ea27e8) (@spikecurtis)
- Use coder/hc-install fork to fix expired PGP key verification (#24516, 7e89534) (@ethanndickson)
- Add devcontainers icon (#24478, 81bd78d) (@matifali)
- Dashboard: Demui
<Avatar />and<AvatarCard />(#24527, 7f1b9cb) (@jakehwll) - Dashboard: Demui
<CodeExample />(#24528, 9324c16) (@jakehwll) - Dashboard: Replace inline add member form with dialog on
<OrganizationMembersPage />(#24429, e186dc3) (@jakehwll) - Tighten
.vscodeIDE and typescript configuration (#24537, 67c57ab) (@jakehwll) - Dashboard: Decss the
<WorkspaceBuild* />pages (#24530, ac6c945) (@jakehwll) - Bump hashicorp/hc-install to v0.9.4 and drop coder fork replace (#24547, bd3ed18) (@ethanndickson)
- Add no-emdash/endash rule to agent instructions and CI lint (#24375, 623e72d) (@mafredri)
- Move aibridge library code into coder repo (#24190, e00e857) (@pawbana)
- Examples: Update incus template (#24616, 68508e1) (@johnstcn)
- chore(dogfood): add CODER_AGENT_EXP_MCP_CONFIG_FILES env var (#24664, 7e29a67) (@mafredri)
- De-css
<UserSettingsPage />children (#24647, 537e35d) (@jakehwll) - Deprecate /api/v2/aibridge/interceptions endpoint (#24670, a8613b2) (@dannykopping)
- Bump coder/fantasy to include gpt-5.5 Responses API support (#24712, a497d93) (@app/blinkagent)
- Uprev coder/terraform-provider-coder to v2.16.0 (#24719, ef6e452) (@zedkipp)
- Upgrade to pnpm 10.33 (#24746, 12e9f5b) (@aslilac)
- Include pgcoordinator schema changes in 2.33 (#24931, 17635dd)
Compare: v2.32.1...v2.33.0
Container image
docker pull ghcr.io/coder/coder:2.33.0
Install/upgrade
Refer to our docs to install or upgrade Coder, or use a release asset below.