Download Latest Version coder_2.37.1_windows_amd64_installer.exe (166.0 MB)
Email in envelope

Get an email when there's a new version of Coder

Home / v2.37.0
Name Modified Size InfoDownloads / Week
Parent folder
coder_latest_sbom.spdx.json 2026-09-01 1.6 MB
provisioner_helm_2.37.0.tgz 2026-09-01 15.8 kB
coder_2.37.0_windows_arm64.zip 2026-09-01 186.4 MB
coder_docs_2.37.0.tgz 2026-09-01 97.4 MB
coder_helm_2.37.0.tgz 2026-09-01 14.3 kB
coder_2.37.0_windows_amd64_installer.exe 2026-09-01 166.0 MB
coder_2.37.0_windows_amd64.zip 2026-09-01 193.0 MB
coder_2.37.0_linux_armv7.tar.gz 2026-09-01 188.5 MB
coder_2.37.0_sbom.spdx.json 2026-09-01 1.6 MB
coder_2.37.0_linux_armv7.apk 2026-09-01 194.9 MB
coder_2.37.0_linux_armv7.deb 2026-09-01 190.0 MB
coder_2.37.0_linux_armv7.rpm 2026-09-01 194.9 MB
coder_2.37.0_linux_amd64.tar.gz 2026-09-01 192.7 MB
coder_2.37.0_linux_arm64.apk 2026-09-01 193.1 MB
coder_2.37.0_linux_arm64.deb 2026-09-01 188.4 MB
coder_2.37.0_linux_arm64.rpm 2026-09-01 193.0 MB
coder_2.37.0_linux_arm64.tar.gz 2026-09-01 186.8 MB
coder_2.37.0_linux_amd64.deb 2026-09-01 193.8 MB
coder_2.37.0_linux_amd64.rpm 2026-09-01 199.1 MB
ai-gateway_helm_2.37.0.tgz 2026-09-01 12.8 kB
coder_2.37.0_checksums.txt 2026-09-01 2.2 kB
coder_2.37.0_checksums.txt.asc 2026-09-01 833 Bytes
coder_2.37.0_darwin_amd64.zip 2026-09-01 196.5 MB
coder_2.37.0_darwin_arm64.zip 2026-09-01 190.7 MB
coder_2.37.0_linux_amd64.apk 2026-09-01 198.9 MB
README.md 2026-09-01 46.1 kB
v2.37.0 source code.tar.gz 2026-09-01 125.0 MB
v2.37.0 source code.zip 2026-09-01 130.4 MB
Totals: 28 Items   3.6 GB 1

[!NOTE] This is a mainline Coder release. We advise enterprise customers without a staging environment to install our latest stable release while we refine this version. Learn more about our Release Schedule.

Changelog

BREAKING CHANGES

  • Remove native chat usage limits in favor of AI Gateway budgets (#27329, f0e6ac64b3) (@ibetitsmike)
  • feat!: add admin-controlled dynamic client registration toggle (#27316, fbac602456) (@BobbyHo)
  • feat!: resolve agent external auth by template, not config order (#27854, 97c4031526) (@BobbyHo)
  • feat!: org-scope MCP server configs with RBAC (#27942, 443e3b9b80) (@ibetitsmike)
  • feat!: hide Coder Tasks behind the enable-ai-tasks flag (#28008, 8203b2ebaf) (@david-fraley)
  • feat!: scope chat model configs to organizations (#27955, f32592ec6b)
  • feat!: enforce organization scope for chat models (#27959, aefc761fcf) (@ethanndickson)
  • feat!: scope chat model override settings to organizations (#28442, 0ef331fcd0)
  • fix!: deprecate login_type=none, convert existing users to password login (#26851, 0e104f38e0) (@jakehwll)
  • refactor!: consolidate chat model availability (#28440, 3809314b31)
  • refactor!: remove default organization model routes (#28632, aa209ae573)

Features

  • Dashboard: Announce cost controls move to AI Governance (#27543, e83f018f5f) (@ibetitsmike)
  • Add group AI spend endpoint (#27568, ed37483ff7) (@ssncferreira)
  • Add chat lifecycle hook dispatch backend (#27401, 8ea2586189) (@ibetitsmike)
  • Add enable/disable support for user secrets (#27537, 85984ff142) (@zedkipp)
  • Search users by display name (#27398, 09a69e624a) (@aqandrew)
  • Log tailnet tunnels to the connection log (#27423, 1a6a8be96c) (@sreya)
  • Add coder secret import for bulk secret files (#27534, 0b2a6cac78) (@dylanhuff-at-coder)
  • Add bulk secret import upload to Add secret dialog (PLAT-240) (#26725, efbf802319) (@dylanhuff-at-coder)
  • Dashboard: Hide workspace resources when lacking workspace-create permission (#27278, ce769680ba) (@jscottmiller)
  • Dashboard: Confirm before batch stopping workspaces (#27631, d072aa7bd0) (@jakehwll)
  • Add agent runtime hour license claims and entitlement feature (#27459, 06ceb4253d) (@jaaydenh)
  • Add chat suffix messages, idle failure, and content update support (#27428, 91c7232d97) (@ibetitsmike)
  • Wire chat lifecycle hooks into chatd (#27429, c17bed25e0) (@ibetitsmike)
  • Dashboard: Surface chat lifecycle hook outcomes in the chats UI (#27430, 4bf9b9d1e6) (@ibetitsmike)
  • Dashboard: Modernize OAuth2 applications settings UI (#27562, 6c42309ccb) (@jakehwll)
  • Add hourly hb_agent_runtime_v1 usage events for Coder Agent runtime (#27312, 54d5eb7ec2) (@jaaydenh)
  • Back the per-chat cost endpoint with AI Gateway data (#27328, 95a2c2ba02) (@ibetitsmike)
  • Add network calls summary to AI session threads API (#27417, 841a1765f7) (@SasSwart)
  • Show network request summary on AI session detail card (#27418, 3f3fd1c4d7) (@SasSwart)
  • Dashboard: Add generateUUID helper (#27661, cf7f876880) (@jeremyruppel)
  • Server: Use conditional requests for GitHub JSON reads (#27628, 2acfe7e829) (@joshfree)
  • Add network calls list to AI session threads API (#27425, 8886a5749a) (@SasSwart)
  • Dashboard: Label AI spend as estimated (#27584, ec9b0f04d1) (@ssncferreira)
  • Expose dynamic client registration in deployment settings (#27480, 4245e4e378) (@BobbyHo)
  • Show what a chat lifecycle hook changed (#27655, df1c0f9710) (@ibetitsmike)
  • Helm: Make HTTPS redirect status code configurable (#27360, 24ff135801) (@02strich)
  • Promote MinimumImplicitMember experiment to GA (#27472, 52423eb87b) (@Emyrk)
  • Scale Testing: Llm-mock tool calls and paced streaming (#26850, a779320d87) (@ethanndickson)
  • Dashboard: Show network calls list on AI session detail (#27426, a60f393773) (@SasSwart)
  • Add per-model OpenAI Responses API toggle (#27683, c6cee10e8b) (@ibetitsmike)
  • Remove native chat cost tracking in favor of AI Gateway cost data (#27330, 6b8f820493) (@ibetitsmike)
  • Dashboard: Tighten base infra step grid and card typography (#27797, 5f3b8755ac) (@tracyjohnsonux)
  • feat(dogfood/coder): add agent-browser live preview app (#27838, d40c4f77b9) (@ibetitsmike)
  • Server: Support public OAuth2 client tokens at the schema layer (#27712, d814dfad88) (@BobbyHo)
  • Add --chat-hook-allow-insecure to allow plain HTTP chat hook URLs (#27896, 4b9880afa6) (@ibetitsmike)
  • Add per-template Coder Agents access control (#27285, 0ac23e3ee1) (@ethanndickson)
  • Dashboard: Add per-template Coder Agents controls (#27514, 01c00ce1bf) (@ethanndickson)
  • CLI: Add --agents-allowed to template commands (#27517, 78b5a0f5a2) (@ethanndickson)
  • Harden chat generation runtime instrumentation for billing (#27451, 4b7494be72) (@jaaydenh)
  • Dashboard: Reintroduce chat search cache invalidation (#27892, 632eecc090) (@DanielleMaywood)
  • Dashboard: Reconcile chats-by-workspace cache across archive and watch paths (#27901, f9047e5836)
  • Dashboard: Scroll to module when clicking sidebar row (#27351, baed1455cf) (@aqandrew)
  • DEVEX-732 premium badging (#27847, 50640063a2) (@untra)
  • Include agent metadata in workspace list responses (#27934, 9a57dfa642) (@Emyrk)
  • Constrain the OAuth2 client type column (#27931, 16c58770f8) (@BobbyHo)
  • Log rate-limited external auth token validation (#26754, 66b065323b) (@jscottmiller)
  • Dashboard: Add server-side search and pagination for groups page (#27994, 87fdd2b59b)
  • Add paginated API endpoint for groups (#27603, 6e07e2610f) (@aqandrew)
  • Add built-in Browser tab for agent-browser (#27910, 2e5353bde7) (@ibetitsmike)
  • Make CLI/API doc generators emit front-matter metadata (Phase 2) (#27246, 0a7bb80a1e) (@nickvigilante)
  • Invalidate provisioner daemon sessions on key deletion (#26532, 866e676320) (@jscottmiller)
  • Dashboard: Consolidate git panel tab strip into a view switcher dropdown (#27012, f7f840ac69) (@tracyjohnsonux)
  • Dashboard: Add download and export for personal skills (#28032, 6765731ea9) (@Shelnutt2)
  • Wire chat search box to full-text search (#27973, c424a76a12) (@DanielleMaywood)
  • Redesign the advisor tool row (#28069, 5a33b669b4) (@DanielleMaywood)
  • Unhide --oidc-redirect-url server option (#28072, f0c17291b3) (@Emyrk)
  • Migrate coderd MCP server to official MCP Go SDK (#28056, 08a1525f78) (@ibetitsmike)
  • CLI: Migrate exp mcp stdio server to official MCP Go SDK (#28057, 26fe3f3185) (@ibetitsmike)
  • Server: Migrate external MCP client to official Go SDK (#28058, 1e546ea8a3) (@ibetitsmike)
  • Agent: Migrate workspace agent MCP client to official Go SDK (#28059, 7720e283f5) (@ibetitsmike)
  • Migrate aibridge injected-MCP proxy to official MCP Go SDK (#28060, c8e8b21a88) (@ibetitsmike)
  • Dashboard: Render list_subagent_models tool results (#28116, abe9c79605) (@DanielleMaywood)
  • Add experimental CLI to price unpriced AI models (#27926, 2d9b6eda8f) (@ssncferreira)
  • Add Coder Agents chat tools to the MCP toolsdk (#28025, 8d4d0b35dd) (@ibetitsmike)
  • Add oauth2 scope columns and single-use delete queries (#28007, 990d24dc42) (@BobbyHo)
  • Redirect to the template builder after first time setup (#27670, e1fa247e59) (@aslilac)
  • DEVEX-751 updated premiumpaywall component (#28070, b26f4c0e03) (@untra)
  • Dashboard: Migrate agent chat scrolling (#28130, 57dc47dc42)
  • Add username and email user search filters (#27922, a005e5cd22) (@wyattfry)
  • Dashboard: Gate appearance settings behind Premium paywall (#27948, 41d2ecec0b) (@jakehwll)
  • Dashboard: Replace proxy emoji with latency radio icon in trigger (#28128, b4971bc49f) (@tracyjohnsonux)
  • Dashboard: Make sidebar steps navigable (#28153, 039c0da5ae) (@aqandrew)
  • Add redirect URL override for external auth (#28082, b5d18bb9c9) (@code-asher)
  • Tolerate unusable runtime hours claims and decode -1 allocation as unlimited (#27984, d15800b494) (@jaaydenh)
  • Report agent runtime hours usage in entitlements (#27985, fa8ffe4eda) (@jaaydenh)
  • Add per-license Products section with Coder Agents price gates (#28051, 995d7fe31b) (@jaaydenh)
  • Limit concurrent chat agents with pooled admission (#27902, 119f2b1dd9) (@ibetitsmike)
  • Defer MCP tool schemas behind a find_tools search (#28225, 7724ee281a) (@ibetitsmike)
  • Extend agent chat MCP tools for remote UAT evidence loops (#28233, affeeaf9c8) (@ibetitsmike)
  • Audit chat system instructions changes (#27668, d3f08b1983) (@mafredri)
  • Dashboard: Surface subagents in the chat sidebar (#28234, b3f05a23fc) (@tracyjohnsonux)
  • Server: Correlate request logs and spans by client_session_id (#27671, 71e95a3611) (@aqandrew)
  • Dashboard: Add Install Coder Desktop item to UserDropdown (#28244, 4d13bef74d) (@jakehwll)
  • Derive OAuth2 client type from token_endpoint_auth_method (#28043, 663f41ffa9) (@BobbyHo)
  • Add yaml config option to standalone AI gateway (#28258, a441b03d70) (@pawbana)
  • Dashboard: Show best-effort model pricing on the model form (#28290, 8405bbb26c) (@DanielleMaywood)
  • Dashboard: Add shared DateTimeRangeFilter component (#28255, da99941099) (@johnstcn)
  • Automate weekly AI model price book refresh (#28146, 05699c4d55) (@evgeniy-scherbina)
  • Default AI Gateway sessions list to a 24h time range (#28256, 023f61626d) (@johnstcn)
  • Track Junie as an AI Gateway client (#28266, 7ff1278ab3) (@matifali)
  • Audit MCP server config changes (#27943, 299e72ad30) (@ibetitsmike)
  • Add group and user ACLs to MCP server configs (#27944, 7ca7c30f40) (@ibetitsmike)
  • Add organization picker to MCP server settings pages (#28150, 24b83dc727) (@ibetitsmike)
  • Dashboard: Move PR icon to diff line, center unread dot, persist kebab (#28326, 5be2fa7974) (@tracyjohnsonux)
  • Dashboard: Show total agent hours consumption on the licenses page (#27953, e5deb57079) (@jaaydenh)
  • Remove task management MCP tools (#28354, 2f996d765a) (@ibetitsmike)
  • Distinguish default and custom AI model prices (#28204, 9390e51422) (@ssncferreira)
  • Support custom prices for models in the price book (#28328, 19d1ee9fc8) (@ssncferreira)
  • Label process_output rows with the process command (#28300, 4a7a0a3348) (@DanielleMaywood)
  • Add a source filter to the AI model price list (#28329, 50ecd6959f) (@ssncferreira)
  • Dashboard: Add provider icon to chat model selector (#28330, 015d6a6e06) (@DanielleMaywood)
  • Add CTAs to AI budget admin notifications (#28138, 363d7fc4d9) (@ssncferreira)
  • Apply reasoning effort and surface thinking blocks for Google chat models (#28273, 8eb1e43f0b) (@ibetitsmike)
  • Server: Compare scopes by permission coverage (#28167, dea3a2944a) (@BobbyHo)
  • Dashboard: Dim unselected sidebar chat titles (#28382, b605446016) (@tracyjohnsonux)
  • Scale Testing: Add create-users scaletest subcommand (#28287, 854991099c) (@cstyan)
  • Scale Testing: Add opt-in --reuse-users (#28289, c3cd692f86) (@cstyan)
  • Register public clients without a secret (#28046, 6348c83142) (@BobbyHo)
  • Update premium paywall copy and link each page to its feature docs (#28339, e7eea0f06f) (@david-fraley)
  • Dashboard: Add date-time range picker with quick picks (#28392, af05849c9c) (@tracyjohnsonux)
  • Dashboard: Use DateTimeRangePicker on the AI sessions page (#28426, 1c139402d0) (@tracyjohnsonux)
  • Add workspace agent session count protocol (#28125, 903d7b756d) (@EhabY)
  • Premium Page CTA updates and form handling (#28226, f44a3b59d7) (@untra)
  • Add premium paywall conversion telemetry (#28425, a2afb458c5) (@david-fraley)
  • Show a premium paywall on the external auth settings page (#28435, cb52f5339d) (@david-fraley)
  • Server: Include chat model organization IDs in telemetry (#27956, ac41b5b4f9) (@ethanndickson)
  • Add chat model config RBAC resource (#27957, cbe24a3da5)
  • Use organization-scoped chat models (#27960, 75ad45109d)
  • Audit chat model config changes (#28439, a53c6e6366)
  • Audit operational agent settings (#28369, c275327fb7)
  • Server: Bill completed local tool batches in agent runtime (#28360, ba8030ecef) (@jaaydenh)
  • Server: Record live tool execution stamps in the message part buffer (#28361, bdddb82dcc) (@jaaydenh)
  • Server: Bill interrupted tool batches on cancellation rows (#28362, e7f1e08348) (@jaaydenh)
  • Enable Coder Agents for organization members (#28186, 632cf6385e) (@ibetitsmike)
  • Allow sharing MCP servers with users and groups (#28593, 8f45d5510c) (@ibetitsmike)

Bug fixes

  • Database: Resolve duplicate 000554 migration collision (#27581, bd5d640f1e) (@jakehwll)
  • Remove @mui/material from formUtils.stories.tsx (#27503, 448fe10d82) (@jakehwll)
  • Delete the unused ChatMessagePart.Signature field (#27588, be226409b8) (@DanielleMaywood)
  • Server: Match sync.Map semantics in the typed wrapper (#27582, eb905702c8) (@mafredri)
  • Remove chatd usage limit enforcement (#27535, 75fd7bc09a) (@johnstcn)
  • Server: Reject workspace proxy hostname prefixes (#27544, 8cc7f2bb0e) (@geokat)
  • Server: Give chat message ids an append-order guarantee (#27495, e96d8646e2) (@ibetitsmike)
  • Report combined member limit in group AI spend (#27589, 0b4095085e) (@ssncferreira)
  • Server: Extract plain-text provider error bodies (#27597, 5d2a69d85a) (@johnstcn)
  • fix(aibridge): handle sonnet 5 adaptive thinking in bedrock (#27339, b371262e5c) (@johnstcn)
  • Database: Order the chat prompt query and its boundary by id (#27619, 1c722ff969) (@ibetitsmike)
  • Dashboard: Order chat transcript by message id (#27620, fb30674806) (@ibetitsmike)
  • Ai cost control cap configurable AI spend limit (#27640, e71249a821) (@ssncferreira)
  • Dashboard: Refresh group member budgets after overrides (#27553, e3a5a697ab) (@EhabY)
  • Dashboard: Reflect submitting state during batch update (#27630, 0b93731ebf) (@jakehwll)
  • Demui <OAuth2AppForm /> (#27561, 659fb48a1d) (@jakehwll)
  • Prefetch outdated Coder CLI in e2e setup instead of in the test (#27629, 4e512f786f) (@BobbyHo)
  • Add warn log level to unpriced models message (#27678, 3660ffecdd) (@ssncferreira)
  • Helm: Render service nodePort with an explicit if guard (#27682, e819dd4af6) (@pawbana)
  • Hide AI budget override controls without permission (#27654, b4eda32a2e) (@ssncferreira)
  • Dashboard: Announce cost controls move in v2.36 (#27688, b3852c707b) (@ibetitsmike)
  • Dashboard: Point Use template to builder (#27663, a86e67d3d9)
  • Add info log level to unpriced models message (#27693, 7b104b6a98) (@ssncferreira)
  • Dashboard: Delete unreachable WaitForExternalAuth tool code (#27684, 4003f0086f) (@DanielleMaywood)
  • Dashboard: Delete dead execute auth_required flow (#27687, 11e03cfb3a)
  • Remove nodePort from required service fields of ai-gateway chart (#27696, 6df24634fd) (@pawbana)
  • Dashboard: Delete unreachable switch arms from ToolLabel and ToolIcon (#27697, 9bc681fa6e) (@DanielleMaywood)
  • Dashboard: Prevent Add secret dialog overflow (#27649, e30a7bcd0d) (@dylanhuff-at-coder)
  • Build actionlint from source to avoid the shellcheck deadlock (#27679, bc9c7855d9) (@ibetitsmike)
  • Dashboard: Correct autostop restart prompt on the workspace schedule page (#27632, a76c51dfc4) (@jakehwll)
  • Dashboard: Use "Create token" wording in token settings (#27634, 31ac9a4782) (@jakehwll)
  • Dashboard: Link spend page alert to cost control migration section (#27782, f4110122ec) (@ssncferreira)
  • Correct authorization header spelling in api docs (#27721, 7bd9f5ec93) (@penso)
  • Reserve chat hook dispatch capacity for running turns (#27656, fc24c27dfd) (@ibetitsmike)
  • Bound golangci-lint memory to stop lint OOM kills (#27637, 6e5f02bfbe) (@ibetitsmike)
  • Agent: Detect IPv6-bound listening ports (#27765, 8a4adeec32) (@bpmct)
  • Support adding multiline secrets via the UI (#27253, f44e8c12d6) (@rowansmithau)
  • Server: Preseed AI providers for title tests (#27564, 9bab7a8e06) (@ibetitsmike)
  • Fix port assignment race from aigatewaystart_internal_test (#27801, 0b8b48913f) (@pawbana)
  • Dashboard: Tidy AI model provider configuration layout (#27843, 4aec1ea592) (@DanielleMaywood)
  • Price AI usage by configured provider type (#27836, db88ec3f6a) (@ssncferreira)
  • Remove unbound Client() method from aibridged.Server (#27845, 8f5f15a92f) (@pawbana)
  • Server: Deflake TestPrebuildsAutobuild prebuild waits (#27601, 8a510314df) (@BobbyHo)
  • Require bedrock model fields for the invoke-model protocol (#27846, 11427066a1) (@evgeniy-scherbina)
  • Dashboard: Allow only template admins/owners to navigate to template version pages by clicking VersionRow (#27550, ca3de3c8c5) (@aqandrew)
  • Dashboard: Show error state with retry when chat fetch fails (#27887, 5ed73f06ad) (@DanielleMaywood)
  • Add codersdk JSON response decoder for typed API endpoints (#27804, db68c6c9fe) (@dylanhuff-at-coder)
  • Detect out-of-range AI Gateway costs instead of wrapping silently (#27602, dae41eb711) (@evgeniy-scherbina)
  • Database: Match group name case-insensitively in search (#27894, d458fe4941) (@david-fraley)
  • Dashboard: Show tooltip in AppLink + WorkspacesTable when coder_app URL is invalid (#27556, 3e2a8bd421) (@aqandrew)
  • Server: Document HTTP 201 for workspace and build creation (#27903, 0d0c6e53ba) (@david-fraley)
  • Dashboard: Name template versions in promote/archive dialogs and toasts (#27633, 6c8a8647f6) (@jakehwll)
  • Server: Classify bedrock credential errors as non-retryable (#27913, 4e2620d64f) (@johnstcn)
  • Dashboard: Defer external app API key generation to on-click (#27907, bab9963a9a) (@jakehwll)
  • Dashboard: Fan chat message upserts out to every containing page (#27912, 19fdc23d63) (@DanielleMaywood)
  • Dashboard: Treat chat deleted watch events as archive instead of eviction (#27921, 192842c8f2) (@DanielleMaywood)
  • Markdown rendering improvements (07f79af65b)
  • Server: Start test AI bridge after config in automatic title tests (#27971, 95e8b71d03) (@ibetitsmike)
  • Dashboard: Prevent protocol-relative login redirects (#27363, 84f4a8bb17) (@ThomasK33)
  • Only write AI model prices that changed (#27923, 5efa7abe7d) (@ssncferreira)
  • fix(aibridge): use latest streaming chat usage instead of cross-chunk sum (#27967, ad100452d4) (@ibetitsmike)
  • Raise test-go-pg timeout budget, lower macOS parallelism (#27997, bd693ad4ae) (@BobbyHo)
  • Server: Render collected_at as UTC RFC3339 in the agent metadata aggregate (#27991, 053b38944d) (@Emyrk)
  • Dashboard: Make delete dialog confirmation text use primary color (#28002, baa1e3a6c5) (@jeremyruppel)
  • Improve layout of CLI install page (#27998, b29af7f64a) (@aslilac)
  • Hide the favorite button for workspaces you don't own (#28000, ddb2799009) (@aslilac)
  • Prevent IP leaks via external chat images (#27362, 496ed757ed) (@ThomasK33)
  • Server: Enforce Force On MCP server policy on the backend (#27990, 91d3027498) (@ThomasK33)
  • Server: Block SSRF in MCP OAuth2 discovery and client registration (#27989, 37b3f11243) (@ThomasK33)
  • SDK: Read trial claim instead of misspelled trail (#28014, 5bdabc95c8) (@jaaydenh)
  • Derive diff cache keys from patch content (#27987, df278ec079) (@DanielleMaywood)
  • Keep chat attachments while a linking chat exists (57f38b5c24) (@ibetitsmike)
  • Server: Deflake TestRunner_StartsRealInterruptTask (#28024, 7f75e625cc) (@hugodutka)
  • Server: Use service account wording in account notifications (#27536, d7953bd046) (@matifali)
  • fix(.github/workflows): run windows mise install under bash, tolerate missing mtimehash (#28020, 2c35d33a28) (@ThomasK33)
  • Disable keep-alives on mock aibridged to prevent stale-conn EOF (#28016, 5febde0ebb) (@johnstcn)
  • Dashboard: Gate TemplateExampleCard Use template link on builder state (#28035, e9ee83af69) (@jeremyruppel)
  • Dashboard: Improve git panel color contrast (#28038, 5fab238ed1) (@tracyjohnsonux)
  • Server: Synchronize aibridgeTestFactory recorded fields (#28031, bde38e9d10) (@ibetitsmike)
  • Dashboard: Stop attachment downloads from trapping iOS PWAs (#27853, ac11ae52d1) (@ibetitsmike)
  • Report per-request Anthropic usage in chat token accounting (#27966, 88e113554a) (@ibetitsmike)
  • Keep chat token usage for streams ending with usage-less chunks (#28068, b3607f51b2) (@ibetitsmike)
  • fix(aibridge): record token usage without an MCP proxier (#27886, 7a545b35ed) (@blockgroot)
  • Dashboard: Add aria-label to icon-only Back navigation links (#26222, b145142404) (@tracyjohnsonux)
  • Allow manual chat compaction from the error state (#28022, 1458d27d78) (@ibetitsmike)
  • Server: Deflake TestDispatcherTimeoutNoRetry (#28050, 0acd9785fa) (@ibetitsmike)
  • Reject PKCE code_verifier below RFC 7636 length floor (#28003, 209d1ca498) (@BobbyHo)
  • Dashboard: Include owner context in Agents org picker permission check (#28076, d509e1e6a0) (@ibetitsmike)
  • Dashboard: Keep standard avatar border for normal AI spend state (#28037, 49cbd7dde3) (@tracyjohnsonux)
  • Dashboard: Prefer permitted organization for chat creation (#28078, bca5d72c1c) (@ibetitsmike)
  • Server: Make edit_files schema and errors actionable for models (#28121, 48e1e28638) (@ibetitsmike)
  • Server: Deflake TestChatMessageWithFiles/FileCapExceeded (#28091, d5bb35a49a) (@ibetitsmike)
  • Server: Send assigned chat model IDs verbatim (#28144, 93c6faf1de) (@ibetitsmike)
  • Server: Set Cache-Control: no-store on OAuth2 responses (#28143, 1aa3553b52) (@BobbyHo)
  • Agent: Create missing log_path parent directory (#28166, af90d8e2be) (@35C4n0r)
  • Repair stale chat agent bindings after workspace rebuild (#28152, 521c383f6b) (@ibetitsmike)
  • Enforce uniqueness and hour alignment for agent runtime usage events (#27983, 20c376a575) (@jaaydenh)
  • Label unpriced token usage metric by provider name and type (#28210, 95328f1ead) (@ssncferreira)
  • Server: Also retry on 503 (#28218, aa80fa3550) (@johnstcn)
  • Dashboard: Replace hardcoded text-[13px] with scale tokens outside agents (#28071, 5d746aa594) (@tracyjohnsonux)
  • Dashboard: Deflake adjust user theme preference (#28219, 46ec620767) (@jeremyruppel)
  • Dashboard: Allow single-label AI provider endpoints (#28122, 444fb8aa9b) (@johnstcn)
  • Dashboard: Persist empty MCP selection (#28238, 30dc7ebd71) (@ethanndickson)
  • Follow-up fixes for conditional VCS requests (#27711, 6079c514ee) (@johnstcn)
  • Dashboard: Treat interrupting chats as busy in the composer (#28209, 14e3ae33cf) (@DanielleMaywood)
  • Dashboard: Stop gating chat stream parts on client status (#28207, 9590e9586e) (@DanielleMaywood)
  • Dashboard: Stop redundant RBAC paywall error toast on Groups page (#28249, a3a0079bd2) (@jakehwll)
  • Dashboard: Clean up agents composer borders and normalize dropdown pills (#28230, 16ae996b93) (@tracyjohnsonux)
  • Dashboard: Remove sidebar nav bottom divider (#28239, cb0a9ebbbf) (@tracyjohnsonux)
  • Dashboard: Repair the locally-run storybook vitest suite (#28261, 5af08a1a09) (@ibetitsmike)
  • Dashboard: Quote colon-containing values in filter serialization (#28254, 962366ffc6) (@johnstcn)
  • Dashboard: Disallow queued message edits (#28265, ba5717dc67) (@ibetitsmike)
  • Bound request body size on JSON API endpoints (#28168, 166d92ba73) (@BobbyHo)
  • Dashboard: Stop the new-turn scroll snap on agent chat (#28213, 72a6c8ae72) (@DanielleMaywood)
  • Log tailnet tunnel authorization decisions (#27819, 821d91fabd) (@sreya)
  • Link workspaces empty state to template builder (#28280, 60722bb653) (@aslilac)
  • Provisioner: Sync version constants with the shipped binary (#27871, 1fbd029754) (@yysu)
  • Treat a missing serve endpoint as a fatal dial error (#27864, 63641b98c8) (@pawbana)
  • Show no budget instead of unlimited for empty group AI budget (#27993, 97cb722fb8) (@tracyjohnsonux)
  • Server: Remove per-chat system prompt limit (#28294, c2bb62446d) (@hugodutka)
  • Standardize EmptyState typography (#27720, 46c0dba1e9) (@jakehwll)
  • Server: Remove AI Governance required banner (#28268, 6107cfe918) (@jcjiang)
  • Dashboard: Centralize UUID generation and fix non-secure crash (#28285, 1bb0978361) (@phorcys420)
  • Harden org-scoped MCP config chat gating, updates, and visibility (#28065, f7a0de7a11) (@ibetitsmike)
  • Dashboard: Fix price threshold display and debounce model price lookup (#28298, 29c129e2d0) (@DanielleMaywood)
  • Gate MCP user tokens on owner-scoped personal RBAC (#27945, a3eb1ee930) (@ibetitsmike)
  • Add distributed protection for external auth refresh (#27479, 7ba2e6e22a) (@code-asher)
  • Only create workspace agents for start builds (#28276, 676b9bb06b) (@aslilac)
  • Dashboard: Clear streamed message when a chat errors (#28277, eed420a0eb) (@DanielleMaywood)
  • Clarify AI model price configuration (#28372, d58788cb23) (@ssncferreira)
  • Gate group settings page and fix unauthorized group patch (#28314, ab6601086a) (@ssncferreira)
  • Serialize empty MCP tool properties as {} not null for OpenAI (#28380, 5480299cef) (@DanielleMaywood)
  • <BuildingTemplateLoader /> icon sizes (#27733, 47ffa87fa5) (@jakehwll)
  • Dashboard: Use RotateCcwIcon for update actions (#28183, 376217423d) (@designertyler)
  • Dashboard: Scroll per-script logs selector on overflow (#28353, 05b78a0902) (@jakehwll)
  • Dashboard: Prevent duplicate menu when right-clicking chat kebab (#28391, e58a603949) (@tracyjohnsonux)
  • Dashboard: Hide kebab while archiving spinner shows (#28393, 93d5f82849) (@tracyjohnsonux)
  • Dashboard: Fix model selector trigger layout on form-style pages (#28399, b14bce12bf) (@ibetitsmike)
  • Dashboard: Freeze motion animations during Pixel captures (#28396, c940284e18) (@DanielleMaywood)
  • Dashboard: Stop completed process_output rows animating forever (#28414, 7970cd6d11) (@ibetitsmike)
  • Dashboard: Show chat instead of the right panel on small viewports (#28387, bb7f2f2332) (@bpmct)
  • Dashboard: Improve chat slash menu enter handling, anchoring, and placement (#28411, 6f1d225d2e) (@ibetitsmike)
  • Dashboard: Match Input height when empty (#28409, cfc7b825c2) (@tracyjohnsonux)
  • Server: Identify audit rows by content instead of order in diff tests (#27904, 952c0ce5e6) (@dylanhuff-at-coder)
  • Dashboard: Align settings header style and paywall spacing (#28418, 3ffb266af6) (@tracyjohnsonux)
  • Dashboard: Right-align DateTimeRangePicker dropdown to match other dropdowns (#28428, fd09112e28) (@tracyjohnsonux)
  • Dashboard: Auto-select MCP server after successful OAuth (#28155, 05fcd06979) (@ibetitsmike)
  • Dashboard: Repair failing storybook interaction tests and pixel captures (#28417, 58c1248cf3) (@ibetitsmike)
  • Dashboard: Sync paywall copy with the latest copy doc (#28436, b8fcdbd32f) (@david-fraley)
  • Dashboard: Use the browser-only bullets from the copy doc (#28434, 9ce42293b0) (@david-fraley)
  • Dashboard: Point queued-capacity trial link to /deployment/premium (#28437, ee87ad6521) (@mattvollmer)
  • Dashboard: Keep TemplateCard official badge inline under preflight (#28433, 7b72f5d86b) (@jeremyruppel)
  • Dashboard: Disable archive actions for active chats (#28264, 610f321d52) (@ibetitsmike)
  • Dashboard: Update Coder Agents license copy (#28432, c9a1e2bcee) (@jaaydenh)
  • Server: Prevent stale chat model config writes (#27968, cd1362abfd) (@ethanndickson)
  • Require audit capture for chat settings (#28394, 2aba2685ad) (@ethanndickson)
  • Move organization model overrides from Models to Coder Agents settings (#28473, d935313383) (@ethanndickson)
  • Dashboard: Harden organization-scoped model loading (#28495, f5f4032aaf) (@ethanndickson)
  • Dashboard: Remove redundant model warning (#28484, 1e509dca93) (@ethanndickson)
  • Surface duplicate AI provider hostname as warning, not error (#28208, 9b609dce49) (@johnstcn)
  • Avoid 500 when generating chat title from rename dialog and remove unused endpoint (#28306, 67db41cd5c) (@f0ssel)
  • Dashboard: Clarify chat model permission labels (#28579, 3e0fc60ce6) (@ethanndickson)
  • Documentation: Document org-scoped admin configuration for agents (#28482, d7fef22611) (@ethanndickson)
  • Stem chat search terms with the english text search config (#28319, 31e8160ede) (@f0ssel)
  • Prevent markdown injection in notifications (#28340, f24d6710cc) (@BobbyHo)
  • Dashboard: Distinguish cross-org budgets (#28596, d99f257f1f) (@ssncferreira)
  • Dashboard: Show Manage agents link to organization model admins (#28637, 71cf4d0ed3) (@ethanndickson)
  • Server: HTML-escape the email template values (#28397, 29cae5f954) (@BobbyHo)
  • Server: Reject agent requests from suspended owners (#28513, dbd479bbda) (@hwang251)
  • Dashboard: Gate browser-only paywall on entitlement (#28660, 50bd5fcd70) (@david-fraley)
  • Batch backport tracyjohnsonux UI fixes for Agents and Coder admin area to release/2.37 (#28673, ba7e1844ac)
  • Dashboard: Repair failing Storybook stories (#28462, 1cea7ec3b7) (@ethanndickson)
  • Dashboard: Point MCP server ACL msw handlers at v2 paths (#28659, cc20e7ee27) (@ibetitsmike)
  • Clarify AI provider collision warnings (#28549, ccaeafdfcb) (@ssncferreira)
  • Dashboard: Standardize AI provider badge tooltips (#28624, 38b2a299ca) (@ssncferreira)
  • Update disabled state on AI provider rows (#28558, acc91a1c6d) (@tracyjohnsonux)
  • Make chat model sharing work for sharers without directory access (#28703, e1f017e2d6)
  • Dashboard: Let organization admins manage agent templates (#28636, ff22804779) (@ethanndickson)
  • Server: Keep NUL out of jsonb chat content (#28625, a73c8afe00) (@mafredri)
  • Use old_text/new_text vocabulary across edit_files (#28626, e06d16593b) (@mafredri)
  • Enable Copilot HTTP transport fallback (#28494, b7d7be9814) (@ssncferreira)
  • Add cache write accounting to OpenAI interceptors and service tier to TokenUsage metadata for all interceptors (#28714, 89df1c2ef5)
  • Server: Accept RFC 9728 resource metadata with array-valued resource (#28592, 79863650b0) (@f0ssel)
  • Dashboard: Adjust context usage indicator error states so it is readable (#28719, 749e5d4873) (@tracyjohnsonux)
  • Dashboard: Size chat pill selectors to content with an 8ch truncation floor (mobile and desktop fixes) (#28691, 9ed8ffbcc3) (@tracyjohnsonux)
  • Dashboard: Remove member-facing Models nav item (#28772, 152c5b1584) (@ethanndickson)

Documentation

  • Present AI Governance as included with Premium (#27545, 4987afada7) (@mattvollmer)
  • Add standalone AI Gateway docs (#27592, 18128b7b52) (@pawbana)
  • Document AI Gateway cost controls (#27643, 3f1973f45c) (@ssncferreira)
  • Update 2.35 latest release to v2.35.3 (#27511, 07073024ee) (@mtojek)
  • Add a glossary to the reference section (#27165, ee7e7ecb74) (@nickvigilante)
  • Lead with env vars in admin docs and add configuration reference (#26824, ba4779fc87) (@nickvigilante)
  • Note user secret target uniqueness and delivery boundary (#27532, fe4a73f8ab) (@dylanhuff-at-coder)
  • Bump AI Gateway client modules to latest and remove Coder Tasks refs (#27810, 84cdc17602) (@app/blinkagent)
  • Correct 2.35 stable version to v2.35.3 (#27842, 866eb970a4) (@mtojek)
  • Documentation: Fix self-violating examples (#27849, 10b366cb7c) (@nickvigilante)
  • Replace enterprise-base image references with example-base (#27025, 79723db2d2) (@bpmct)
  • Note bulk stop confirmation (#27908, 3e0b943333) (@jakehwll)
  • Add style-guide rule against "whose" for non-person antecedents (#27866, aa039479ed) (@nickvigilante)
  • Documentation: Adopt STE-derived prose rules (#27852, 2d320de71e) (@nickvigilante)
  • Document per-template agents_allowed (#27518, ee49107ea9) (@ethanndickson)
  • Refresh JFrog Artifactory integration guide for SaaS (#28005, b781be0fa2) (@matifali)
  • Remove beta references from Coder Agents docs and manifest (#27939, 75e0790cd7) (@mattvollmer)
  • Document prebuilds quota group behavior (#28015, e5629126b7) (@johnstcn)
  • Remove AI Governance Add-On references (#28073, 52bd05adb4) (@mattvollmer)
  • Use approximate spend and add Everyone group tip for AI Gateway cost controls (#28012, 3426f83a27) (@ssncferreira)
  • Add Coder Desktop stale-tunnel recovery and improve macOS log capture (#26735, 043bebb7bc) (@app/blinkagent)
  • Remove invalid --yes flag from coder template version promote (#28084, f3fd4c4a77) (@nickvigilante)
  • Fix prometheus metric name and slack webhook backtick (#28085, 3145cc8386) (@nickvigilante)
  • Fix Helm TLS/ingress value keys in admin/setup (#28087, 5b97d99a48) (@nickvigilante)
  • Fix P2/P3 typos and syntax errors from drift sweep (#28101, 1d189cc204) (@nickvigilante)
  • Correct nginx X-Forwarded-Proto and certbot instructions flavor (#28086, b0e93b6e3b) (@nickvigilante)
  • Correct broken CLI commands and flags from drift sweep (#28098, 58de9ab8f8) (@nickvigilante)
  • Rebrand Windsurf doc page to Devin Desktop (#28205, 062c0fdd3b) (@matifali)
  • Documentation: Fix self-violations found by audit (#27855, 0db25caad6) (@nickvigilante)
  • Add Licensing & Usage page and reorder agents manifest (#28263, 5f6eeda588) (@mattvollmer)
  • Remove inaccurate Agent Firewall filesystem protection claim (#28286, ddcffd8248) (@mattvollmer)
  • Note JetBrains client attribution in AI Gateway (#28296, 34e95c46bf) (@matifali)
  • Update Tallyman Agent Time reporting (#28275, ddf2d33665) (@mattvollmer)
  • Fix prebuilt-workspaces example syntax and defaults (#28088, 31e95f7096) (@nickvigilante)
  • Add markdown_url front matter so the About page links to /docs.md (#28281, fc6d6babfa) (@nickvigilante)
  • Fix broken callout on the AI Gateway Monitoring page (#28303, 71b5bc398f) (@nickvigilante)
  • Remove JetBrains Fleet references (#28301, 7268cada94) (@matifali)
  • Uppercase mixed-case GitHub-style callout markers [DOCS-681] (#28304, 2ee6f459b2) (@nickvigilante)
  • Remove space in GitHub-style callout markers [DOCS-680] (#28305, e003014ff8) (@nickvigilante)
  • Complete swagger annotations for organization-scoped MCP routes (#28064, f2bc9ab1f5) (@ibetitsmike)
  • Refresh workspace-management screenshots with current UI (#28356, d3b3aeaabc) (@jakehwll)
  • Clarify who can set AI model prices and how they are keyed (#28401, d989ae36cd) (@ssncferreira)
  • Streamline agent instructions (#28243, 9d6ef1e701) (@ibetitsmike)
  • Fix broken .style/ link and lift details block out of list item [DOCS-661] (#28180, c6deadbc6c) (@nickvigilante)
  • Address AI Gateway documentation review feedback (#28309, 4ce8e8ed56) (@pawbana)
  • Documentation: Document the chat search: full-text filter (#28474, da9a9ea0d2) (@f0ssel)
  • Remove early access label from chats API reference (#28761, e25a7dddd8)

Code refactoring

  • Make user AI budget and spend endpoints consistent (#27611, d6a5c8e9f8) (@ssncferreira)
  • Migrate story snapshot params to pixel (#26844, 2b28515d9b) (@aslilac)
  • Dashboard: Use uuid package instead of generateUUID helper (#27709, 218829d444) (@jeremyruppel)
  • Dashboard: Replace label/icon switches with tables and registry invariants (#27706, 46d01fca65)
  • Dashboard: Demui Form.stories.tsx stories (#27762, 0a42334f77) (@jakehwll)
  • Dashboard: Rename <404Page /> to <NotFoundPage /> (#27731, 26bae42c98) (@jakehwll)
  • Dashboard: Demui <NotificationEvents /> into dropdown (#27732, ce20ad8b2f) (@jakehwll)
  • Dashboard: Demui <ProvisionerTagsField /> (#27763, 5e29a878f2) (@jakehwll)
  • Dashboard: Migrate VS Code button menus off MUI (#27730, 0028fea0e5) (@jakehwll)
  • Dashboard: Remove mui components from <LicenseSettingsPage /> descendants (#27764, c350710aeb) (@jakehwll)
  • Dashboard: Migrate <Markdown /> and <InlineMarkdown /> off MUI (#27724, fba9f0d485) (@jakehwll)
  • Dashboard: Demui workspace build data and outdated tooltip (#27787, fc27714fcd) (@jakehwll)
  • Dashboard: Demui workspace topbar, schedule controls, and timings (#27790, 20ff957c74) (@jakehwll)
  • Dashboard: Demui PortForwardButton and popover view (#27786, 497ab9e1a6) (@jakehwll)
  • Server: Carry the resolved OpenAI transport on a model wrapper (#27703, b5c9e8e471) (@ibetitsmike)
  • Server: Read the OpenAI transport from the model (#27704, 0e16e356b0) (@ibetitsmike)
  • Server: Own provider option construction in one function (#27705, 404bb2f663) (@ibetitsmike)
  • Dashboard: Demui template settings forms (#27636, 209c990888) (@jakehwll)
  • Dashboard: Replace MUI update-check snackbar with <UpdateCheckNotice/> (#27728, d23d0d5313) (@jakehwll)
  • Dashboard: Demui create template gallery and form (#27788, df1700916e) (@jakehwll)
  • Dashboard: Demui AgentRow and AgentStatus (#27789, 3640b69533) (@jakehwll)
  • Remove introductory access banner from /agents page (#27865, 1c993c7c5c) (@mattvollmer)
  • Dashboard: Replace MUI Stack, TextField, and Link with shared components (#27817, 7a4ae2649e) (@jakehwll)
  • Server: Optimize chatdebug (#27129, c62079c053) (@johnstcn)
  • Dashboard: Show TableLoader in loading tables (#27870, 0a79610f7b) (@aqandrew)
  • Dashboard: Migrate chats query keys to collections/entities taxonomy (#27841, 0c88c2accc) (@DanielleMaywood)
  • SDK: Use ReadBodyAsJSON in typed endpoints (#27857, 76ae64391a) (@dylanhuff-at-coder)
  • SDK: Use shared error helpers in chat endpoints (#27858, ed10064748) (@dylanhuff-at-coder)
  • Dashboard: De-MUI custom role create/edit form (#27820, db4b6dc556) (@jakehwll)
  • Dashboard: Migrate WorkspacesButton to Combobox (#27723, a79031a3f5) (@jakehwll)
  • Dashboard: Migrate shared Pill to Badge (#27638, c98d6bb535) (@jakehwll)
  • Dashboard: Centralize chat cache operations in semantic cache functions (#27869, f96671d588) (@DanielleMaywood)
  • Dashboard: Demui <IconField /> (#27719, 7a9b4250aa) (@jakehwll)
  • Dashboard: Redesign <AppearanceSettingsPage /> (#27722, ad225269aa) (@jakehwll)
  • Dashboard: Move Add users into <SettingsHeader /> (#27906, b2cfc4e530) (@jakehwll)
  • Dashboard: Migrate organization settings form off MUI (#27718, b3acf7f75a) (@jakehwll)
  • Dashboard: Add <Drawer /> and migrate build logs drawer (#28009, 726e86cef7) (@jakehwll)
  • Dashboard: Render live assistant output as a chat timeline row (#28079, 7617b6bdcc) (@DanielleMaywood)
  • Remove MUI and Emotion (#27821, ea8ba0c678) (@jakehwll)
  • Dashboard: Show audit log retention and Premium paywall on observability settings (#27947, 0350bfd2ea) (@jakehwll)
  • Dashboard: Tidy secrets list layout (#27917, a749cf521f) (@jakehwll)
  • Move chat prompt sanitization into codersdk (#28283, 8a7e8d9d5b) (@bpmct)
  • Remove AI add-on badge, seat column, and add-on wording leftovers (#28004, dd43574990) (@tracyjohnsonux)
  • Server: Add related-data selection to workspace queries (#28302, f5d42a868e) (@spikecurtis)
  • Share the AI Gateway price book contract (#28310, 211f490910) (@evgeniy-scherbina)
  • refactor(aibridge): extract bedrock mantle SigV4 signing to bedrocksig (#28407, edd8bf8b9b) (@johnstcn)
  • Server: Unify LLM model-call construction behind a resolver (#28145, 9168dbf4d3) (@ibetitsmike)
  • Normalize workspace agent session metadata (#28124, c767cc5198) (@EhabY)
  • Upgrade golangci-lint to v2.0.2 (#28416, 5ca0143992) (@aslilac)
  • Clarify chat model resource names (#27958, 9bd8899359)
  • Server: Return PersistedStep directly from ExecuteLocalTools (#28359, 759ae8362a) (@jaaydenh)
  • Rename edit_files wire type to old_text/new_text (#28467, 8aad49e59f) (@mafredri)

Performance improvements

  • Server: Collapse org authorization to a set-membership test (#27244, 7e708b24ce) (@jeremyruppel)
  • Server: Build span role attributes only when recording (#27310, d9d6ce9ddf)
  • Server: Batch authcheck permissions via rbac.Filter (#27309, 51a9aa1bfc)
  • Server: Build the workspace build fan-out maps once per batch (#28074, 62f4afbb60) (@jscottmiller)

Tests

  • Don't use ptytest for client side of SSH session tests (#27681, dc31791c88) (@spikecurtis)
  • Fix tailnet connection teardown flake (#27768, 4dbb3a236c) (@ethanndickson)
  • Server: Drain dormancy audit log before reset in StartWakesUpDormantWorkspace (#27541, 76eb43a78e) (@Emyrk)
  • Agent: De-flake TestAgent_Session_EnvironmentVariables (#27803, 87494c4f88) (@dylanhuff-at-coder)
  • Dashboard: Isolate httptest server clients (#27769, cb992b35fd) (@ethanndickson)
  • Server: Accept query cancellation in subagent wait (#27818, 1702bbb816) (@ethanndickson)
  • Dashboard: Fix failing Storybook play functions (#27874, 05baba1e63) (@jakehwll)
  • Fix failing storybook stories (#27674, efd5ce3668) (@aslilac)
  • Skip racey tasks test (#28033, 0d0f5b4392) (@Emyrk)
  • CLI: Add standalone AI Gateway connection tests (#27860, 94f487b890) (@pawbana)
  • Dashboard: Cover version picker stacking (#28154, 6dfba5c567) (@david-fraley)
  • CLI: Add standalone AI Gateway tests against a live coderd (#27863, 0a34a37314) (@pawbana)
  • CLI: Wait for OAuth server readiness (#28358, 36bae07a9b) (@hugodutka)

Continuous integration

  • Explicitly specify bash in mise tools installation (#27666, dc1d6c3f3a) (@johnstcn)
  • ci(.github): retry build-tool downloads in Windows signing jobs (#27664, d210b311dc) (@BobbyHo)
  • Run test-go-pg mise tool install under bash on Windows (#27483, 0e1a9a9f05) (@nickvigilante)
  • Broaden linkspector Stack Overflow ignore for weekly docs check (#27799, 71c7e92084) (@nickvigilante)
  • ci(.github): retry Go module downloads (#27816, 1f946bb50b) (@ethanndickson)
  • Add scheduled audit-docs-paths workflow (#27245, 2f34e1abd0) (@nickvigilante)
  • Ignore flaky codeium.com and marketplace.visualstudio.com links (#28203, b674d40d39) (@matifali)
  • Skip oversized flake-check selections (#28293, 059546e92a) (@ethanndickson)
  • ci(.github): skip Playwright apt installation (#28292, cbb36e613d) (@ethanndickson)
  • Use dedicated release App token to publish releases (backport 2.37) (#28591, 10251b248d)

Chores

  • Dashboard: Demui <ScheduleForm /> component (#27563, 5f72c1525e) (@jakehwll)
  • Documentation: Update release docs for v2.34.7 (#27591, 3c61a9a939) (@mtojek)
  • Remove emyrk from coderowners of commonly touched rbac (#27596, 206938154a) (@Emyrk)
  • Scale Testing: Reduce workspace poll interval to 5s (#27548, e657d2ab9d) (@cstyan)
  • Remove ai-gateway-cost-control experiment flag (#27579, 3deecb481e) (@ssncferreira)
  • Drop stale cost control experiment params (#27650, 740f5f7e1e) (@ssncferreira)
  • Upgrade to @coder/pixel-storybook 0.3 (#27658, 95275d9659) (@aslilac)
  • Replace isChromatic with isPixel (#26832, 6cfefc0685)
  • Dashboard: Migrate all <Dialog />s off MUI (#27506, 79724ab0ba) (@jakehwll)
  • Dashboard: Remove unused SelectMenu component (#27800, cce5a21933) (@jakehwll)
  • Fix port availability check flake from aigatewaystart_internal… (#27784, a2287d6739) (@pawbana)
  • Documentation: Update release docs for v2.36.0 (#27828, 11b38272f6) (@mtojek)
  • Update model prices to include more providers (#27837, 60161fd375) (@johnstcn)
  • Add more known model prices to ChatModelAdminPanel (#27839, b169066773) (@johnstcn)
  • Dashboard: Use <TableEmpty /> for table empty states (#27583, 120ec1f318) (@jakehwll)
  • Add docs inline-HTML linter and backtick generated placeholders (#27399, 9dcb75cd56) (@nickvigilante)
  • Regenerate configuration-reference.md for bedrock placeholder (#27898, 4b6104229c) (@app/blinkagent)
  • Add agents_allowed to templates (#27284, b3485d9b3a) (@ethanndickson)
  • Remove legacy chat template allowlist (#27515, d2f9280138) (@ethanndickson)
  • Forbid direct response body JSON decode in codersdk (#27859, 9b27d12929) (@dylanhuff-at-coder)
  • Dashboard: Upgrade pierre diffs to 1.3.3 (#27932, e751b285ca) (@DanielleMaywood)
  • Documentation: Update release docs for v2.34.8 (#27970, 0414948454) (@mtojek)
  • Documentation: Update release docs for v2.35.4 (#27972, cfeae56bed) (@mtojek)
  • Dashboard: Remove Beta tag from agents navigation (#27986, a3a51228ee) (@mattvollmer)
  • Use 'AI spend' and 'approximate' in budget UI (#27977, 27414788f7) (@ssncferreira)
  • Update stale Chromatic comments (#27714, 09b0d8e108) (@aslilac)
  • Sync fantasy fork with upstream v0.40.0 and openai-go with v3.50.0 (#27981, c97f4da3ac) (@ibetitsmike)
  • Server: Bump computer-use models to current frontier releases (#28026, c6e3be5090) (@matifali)
  • Dashboard: Add generateConnectionSessionId helper function (#27935, b721935fc1) (@aqandrew)
  • Add NewUnstartedHTTPServer helper to disable keep-alives on test servers (#28052, e02d9adc11) (@johnstcn)
  • Add test coverage for chatd compaction (#28053, 3f9e8cca2a) (@johnstcn)
  • Retire mark3labs/mcp-go dependency (#28061, e92fd8e96f) (@ibetitsmike)
  • Update chatd ARCHITECTURE.md guidance in AGENTS.md (#28103, bfa937a36a) (@hugodutka)
  • Dashboard: Allow devin: URI scheme for Devin Desktop deep links (#28214, fb3ed7a56a) (@matifali)
  • Dashboard: Add devin icon (#28206, 753f3d95c6) (@matifali)
  • Correct AI Gateway metric provider label and cardinality notes (#28220, db3566c1a3) (@ssncferreira)
  • Add supabase icon (#28327, 64f26ef387) (@DevelopmentCats)
  • Documentation: Update release docs for v2.36.1 (#28357, 2529a54cfc) (@mtojek)
  • Refresh AI model price book (#28365, 5e0710de92) (@cdrci)
  • Remove retired go report from README (#28385, 54e64c2228) (@bpmct)
  • Refresh README links and streamline quickstart and support sections (#28386, 4ed03f5ee2) (@bpmct)
  • Backport post-2.37 merged PRs to release/2.37 (#28683, f7e068e8c9)
  • Refresh AI model price book (#28711, 4fef2216d9) (@cdrci)
  • Purge identified terraform modules via dbpurge (#28802, 8a148a9a57) (@Emyrk)

Reverts

  • "fix: markdown rendering improvements" (#27979, 8c2f7adeb1) (@jdomeracki-coder)

Other changes

  • refactor(site): demui template editor dialogs and create-template inputs (#27791, 0a30dc8184) (@jakehwll)
  • Change all windsurf.com links to devin.ai links (#28270, 27e3d0fb00) (@nickvigilante)
  • Revert "chore: add @coder/docs as a CODEOWNER for docs content and tooling" (#27802, 4e54f311bd) (@nickvigilante)
  • Update contributing link in CONTRIBUTING.md (#28029, 160964fc66) (@nickvigilante)

Compare: e96e7cfec23ca55d6700b684474b82df97cfd22b...v2.37.0

Container image

  • docker pull ghcr.io/coder/coder:2.37.0

Install/upgrade

Refer to our docs to install or upgrade Coder, or use a release asset below.

Source: README.md, updated 2026-09-01