Changelog
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.
Normally our mainline releases are 2.X.0. This mainline release is 2.X.1 due to release timing, but it should be considered a standard mainline release for customers.
BREAKING CHANGES
-
feat(cli)!: expire tokens by default (#21783, 4a3304f) (@johnstcn)
Calling this out as a breaking change in case existing consumers of the CLI depend on being able to see expired tokens OR being able to delete tokens immediately.
Updates the coder tokens rm command to immediately expire a token by ID, preserving the token record for audit trail purposes. Tokens can still be deleted by passing--delete. -
feat(site)!: add consent prompt for auto-creation with prefilled parameters (#22011, 60e3ab7) (@kacpersaw)
Links using
mode=auto(e.g., "Open in Coder" buttons) will no longer silently create workspaces. Users will now see a consent dialog and must explicitly confirm before the workspace is provisioned. Any existing integrations or automation relying on mode=auto for seamless workspace creation will now require manual user interaction. -
fix!: remove deprecated prometheus metrics (#21788, 036ed56) (@mtojek)
Removes the following deprecated Prometheus metrics:
-coderd_api_workspace_latest_build_total→ usecoderd_api_workspace_latest_buildinstead
-coderd_oauth2_external_requests_rate_limit_total→ usecoderd_oauth2_external_requests_rate_limitinstead
Features
AI Governance
- Add client column to
aibridge_interceptionstable (#21839, 90c11f3) (@pawbana) - Dashboard: Infer model family icon from model name in AI Bridge logs (#22022, 8e9638c) (@ssncferreira)
- Dashboard: Add Copilot as a provider option in AI Bridge logs filter (#22023, 5cf9795) (@ssncferreira)
- Implement AI Bridge client table column (#22228, adcdbfd) (@jakehwll)
- Add anthropic and gemini-monochrome icons (#22270, bf076fb) (@app/blinkagent)
Tasks
- Server: Return 409 Conflict for non-active task states (#21887, 2549fc7) (@mafredri)
- Implement ai governance consumption frontend (#21595, 62704eb) (@jakehwll)
- CLI: Show snapshots in task logs (#21787, efcfee8) (@mafredri)
- CLI: Add
coder task pausecommand (#22012, 6d41d98) (@DanielleMaywood) - CLI: Add
coder task resumecommand (#22066, d737f8c) (@DanielleMaywood) - Server: Return log snapshot for paused tasks (#21771, 21eabb1) (@mafredri)
- Dashboard: Add pause/resume action buttons to tasks table (#21728, d5ae72d) (@EhabY)
- Dashboard: Add pause/resume actions to task page (#21952, 8990a10) (@EhabY)
- Dashboard: Add missing Tasks API client methods (#22079, ebd7ab1) (@EhabY)
- Dashboard: Show task log preview in paused and failed states (#22063, 3fcd8c6) (@EhabY)
- Add an endpoint to manually pause a coder task (#21889, e6fbf50) (@SasSwart)
- Add an endpoint to manually resume a coder task (#21948, 47b8ca9) (@SasSwart)
- Notify on task auto pause, manual pause and manual resume (#22050, 31c1279) (@DanielleMaywood)
CLI
- Add organization delete command to cli (#21940, e3ce3c3) (@rowansmithau)
- Add organizations list command to coder cli (#21960, 683a7c0) (@rowansmithau)
- CLI: Add
coder login tokencommand to print session token (#21627, d09300e) (@kacpersaw)
Devontainers
- Provisioner: Associate resources with
coder_devcontainer(#21602, 1a94aa6) (@DanielleMaywood) - Agent: Add subagent ID fields to devcontainers in manifest (#21848, 2de8cdf) (@DanielleMaywood)
- Agent: Populate subagent ID for terraform-defined devcontainers (#21942, 6ccd20d) (@DanielleMaywood)
- Server: Support terraform-defined subagent ids (#21837, af0e171) (@DanielleMaywood)
Dashboard
- Add healthy filter for workspace queries (#21743, 22ece10) (@sreya)
- Add icon and description to
presetdropdown (#21694, 7a8d8d2) (@jakehwll) - Replace Inter with Geist variable font (#22060, c990981) (@jaaydenh)
Shared Workspaces
- Move Shared Workspaces from experiments to beta (#22206, 37a8e61) (@zenithwolf1000)
Misc
- Server: Filter expired API tokens server-side (#22263, 1e27406) (@kacpersaw)
- Server: Insert sub agent resource (#21699, 37aecda) (@DanielleMaywood)
- Dashboard: Add query param support to OAuth2 app creation page (#21821, 6ac77f2) (@app/blinkagent)
- VPN: Add Linux support for vpn-daemon and OS networking stack (#22051, adc7775) (@ibetitsmike)
- Add Prometheus metrics for license warnings and errors (#21749, 04b0253) (@mtojek)
- Add link for viewing raw build logs in workspace and template build jobs (#21727, 353ebd9) (@johnstcn)
- Add cachecompress package to compress static files for HTTP (#21915, 8aa9e9a) (@spikecurtis)
- Add standard encodings to binary cache (#21921, b84bb43) (@spikecurtis)
- Add e2e workspace build duration metric (#21739, 6035e45) (@sreya)
- Add provisioner job queue wait time histogram and jobs enqueued counter (#21869, 5f3be6b) (@cstyan)
- Remove license gate from workspace and task bulk actions (#22090, 0071338) (@app/blinkagent)
- Add support for agentsock on Windows (#22171, 1069ce6) (@spikecurtis)
- Add template toggle to disable module caching (#21931, efd98bd) (@Emyrk)
Bug fixes
- CLI: Ignore space in custom input mode (#21752, bb7b49d) (@mtojek)
- CLI: Allow site admins to use
coder create --orgfor any organization (#21528, 4b3889e) (@ethanndickson) - CLI: Allow new immutable parameters via
--parameterflag during update (#22221, 3c69d68) (@kacpersaw) - CLI: Proactively use active template version when
require_active_versionis set (#22033, 6c16794) (@f0ssel) - Server: Clean up task snapshots on task deletion (#21949, c60c373) (@mafredri)
- Server: Use BuildReasonTaskAutoPause for task workspaces (#22126, f8eea54) (@johnstcn)
- Server: Add role param to agent RPC to prevent false connectivity (#22052, f016d9e) (@kacpersaw)
- Server: Harden OAuth2 provider security (#22194, b776a14) (@ThomasK33)
- Database: Prevent AcquireProvisionerJob from grabbing canceled jobs (#21852, f75cbab) (@mafredri)
- Database: Correct task pending status logic (#21886, 96695ed) (@mafredri)
- Server: Support
client_secret_basicclient auth (#21793, dd6aec0) (@ThomasK33) - Server: Make workspace ACL disabled flag atomic (#21799, c60f802) (@geokat)
- Server: Prefer app session cookie over Authorization (#22041, fcf431c) (@cryptoluks)
- Helm: Allow overriding
CODER_PPROF_ADDRESSandCODER_PROMETHEUS_ADDRESS(#21714, 892b226) (@app/blinkagent) - Dashboard: Use
total_member_countfor group subtitles when sharing (#21744, f5d4926) (@geokat) - Dashboard: Use native thin scrollbar style for admin bar (#21825, c3ea544) (@kylecarbs)
- Dashboard: Filter build timeline events by agent ID (#21831, b612762) (@mafredri)
- Dashboard: Remove overflow-hidden (#22032, 0ab54fd) (@DanielleMaywood)
- Dashboard: Render username with content-primary, not white (#22172, 873e054) (@DanielleMaywood)
- Dashboard: Show when secret deployment options are configured (#22151, de4ff78) (@jeremyruppel)
- Dashboard: Respect meta user appearance preference as theme fallback (#22152, 0652664) (@jeremyruppel)
- Propagate correct agent exit code (#21718, 4f1fd82) (@sreya)
- Don't allow sharing admins to change own role (#21634, 4847920) (@jaaydenh)
- Use existing transaction to claim prebuild (#21862, 3c1db17) (@sreya)
- Use dynamic parameter resolution in the cli (#21734, b1e18f2) (@Emyrk)
- Resolve heading sizing (#21914, 9d887f2) (@jakehwll)
- Increase retry attempts for builtin postgres port conflicts (#21796, 953a615) (@f0ssel)
- Set content-primary text color instead of hardcoding white text (#21908, 62fa0e8) (@aqandrew)
- Always show
View Taskfor Tasks workspaces (#21970, edcee32) (@jakehwll) - Enable strict mode for swagger generation & upgrade swag (#21975, 456c0bc) (@mtojek)
- Limit doc-check comments by restricting to one sticky comment and updating logic (#21933, a5bc0eb) (@DevelopmentCats)
- Make boundary usage telemetry collection atomic (#21907, a31e476) (@zedkipp)
- Disable
Activity bumpwhenDefault autostopis0(#22112, 5e7b3c3) (@jakehwll) - Avoid re-using
AuthInstanceIDfor sub agents (#22196, 911d734) (@DanielleMaywood) - Allow users with
workspace:createfor any owner to list users (#21947, e8d6016) (@f0ssel) - Restore block to
Managed AgentsonEnterprise(#22210, d700f9e) (@jakehwll) - Ensure stopping a workspace before starting it when updating (#22201, e2cbf03) (@Emyrk)
- Floor provisioner job queue wait metric (#22184, 6a783fc) (@zedkipp)
- Exclude
provisioner_statefromworkspace_build_with_userview (#22159, 0a7a3da) (@sreya) - Use "idle timeout" as task auto-pause reason (#22287, 974ca3e) (@DanielleMaywood)
- Allow agent-reported final states, add SSE reconnection (#22286, 947b390) (@mafredri)
- Allow sharing ports >9999 (#22273, 93e8239) (@Emyrk)
- Avoid derp-related panic during wsproxy registration (backport release/2.31) (#22526, 107fd97) (@rowansmithau)
- Register task pause/resume routes under /api/v2 (#22544) (#22550, 22c2da5) (@EhabY)
Documentation
- Update AI Governance Add-On licensing information (#21899, 2add69a) (@mattvollmer)
- Clarify Tasks limit and AI Governance relationship (#21774, 5da28ff) (@app/blinkagent)
- Clarify that only Coder tokens work with AI Bridge authentication (#21791, b035843) (@app/blinkagent)
- Reorganize AI Bridge client documentation (#21794, b91622e) (@matifali)
- Add CLI method for retrieving session token (#21875, 72e89d3) (@app/blinkagent)
- Add AI Bridge Proxy documentation (#21801, 28b4e64) (@ssncferreira)
- Add Mux client configuration (#21888, b955e10) (@ibetitsmike)
- Clarify Tasks availability in Community and Premium deployments (#21943, 90faf51) (@app/blinkagent)
- Add AI Bridge Proxy client configuration (#21904, e3f7850) (@ssncferreira)
- Clarify Agent Workspace Build limits for Community deployments (#21961, a4296cb) (@app/blinkagent)
- Add upgrade best practices guide (#21656, e5c3d15) (@app/blinkagent)
- Add registry mirroring guide for Artifactory (#22025, 63563e5) (@matifali)
- Add Antigravity IDE integration documentation (#22177, fb027da) (@app/blinkagent)
- Document new terraform-managed devcontainers (#21978, 02a80ea) (@DanielleMaywood)
Performance improvements
- Improve memory use and cpu usage for OpenAI requests handled by bridge (#21838, b9d237b) (@SasSwart)
Chores
- Database: Add support for provisioner job timestamp control (#21944, 25a0c80) (@johnstcn)
- Enterprise: Ensure TestManagedAgentLimit differentiates between tasks and workspaces (#21731, c2c2250) (@johnstcn)
- Helm: Disable liveness probes by default, allow all probe settings (#21789, d0c67cc) (@dannykopping)
- Dashboard: Clarify Use permission in workspace sharing dropdown (#21861, 788fdca) (@app/blinkagent)
- Update paywall to mention AI governance-add on (#21659, 57ab991) (@bpmct)
- Log the OS signal prior to exiting in agent (#21941, 11e17b3) (@sreya)
- Integrate metrics scanner into Makefile (#21465, a613ffa) (@ssncferreira)
- Return 404, not 400 if missing or authz deny (#22069, 01f0667) (@Emyrk)
- Add id to template version output columns (#22163, 1c4dd78) (@rowansmithau)
- Add active field to template versions json output (#22165, c664e4f) (@rowansmithau)
- Helm - tolerations - change format from object to array (#22185, d9ec892) (@rowansmithau)
- Optionally prefix authentication related cookies (#22148, e5f64eb) (@Emyrk)
- Add oidc redirect url to override access url (#21521, efdaaa2) (@Emyrk)
- Use header auth over cookies for agents (#22226) (cherry-pick/v2.31) (#22313, c339aa9) (@Emyrk)
Compare: v2.30.3...v2.31.1
Container image
docker pull ghcr.io/coder/coder:v2.31.1
Install/upgrade
Refer to our docs to install or upgrade Coder, or use a release asset below.