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.
BREAKING CHANGES
- Route connection logs to Connection log instead of Audit log (#18340, 08e17a07f) (@ethanndickson)
Connections to workspaces (via SSH, workspace apps, or browser port-forwarding) will no longer create entries in the audit log. Those events will now be included in the 'Connection Log'. Please see the 'Connection Log' page in the dashboard, and the Connection Log documentation for details. Those with permission to view the Audit Log will also be able to view the Connection Log. The new Connection Log has the same licensing restrictions as the Audit Log, and requires a Premium Coder deployment.
- Delete old connection events from audit log (#18735, f42de9fe1) (@ethanndickson)
With new connection events appearing in the Connection Log, connection events older than 90 days will now be deleted from the Audit Log. If you require this legacy data, we recommend querying it from the REST API or making a backup of the database/these events before upgrading your Coder deployment. Please see the PR for details on what exactly will be deleted. Note: There are currently no plans to delete connection events from the Connection Log.
- Add ability to cancel pending workspace build (#18713, 8202514ce) (@kacpersaw)
CancelWorkspaceBuild method in codersdk now accepts an optional
request
parameter. - Use devcontainer ID when rebuilding a devcontainer (#18604, f2d229eed) (@DanielleMaywood)
Minor breaking change for workspaces enabled by our devcontainer integration. Allows rebuilding a devcontainer without a valid devcontainer ID.
- CLI: Add CLI support for creating workspace with presets (#18912, b975d6d9b) (@ssncferreira)
This breaking change impacts the
coder create
CLI command only for templates which contain presets.It introduces a
--preset
flag to the create command, which modifies the behavior when no preset is explicitly provided: - If the template includes presets and a default preset, the default will be automatically applied. The user will be notified, but not prompted. - If the template includes presets without a default, the user will be prompted to choose a preset.This breaks existing workflows for templates with presets that: - Expect the create command to proceed without applying a preset - Rely on non-interactive scripts or automated workflows, which will now fail or hang due to unexpected prompts
Features
- Dynamic Parameters is now generally available:
- Remove beta labels for dynamic parameters (#18976, d7b12535d) (@jaaydenh)
- Allow new immutable parameters for existing workspaces (#18579, e396b06c2) (@Emyrk)
- Allow masking workspace parameter inputs (#18595, 0b82f41a2) (@aslilac)
- Support dynamic parameters on create template request (#18636, 4072d228c) (@Emyrk)
- Display descriptions in multi-select component (#18730, 61b6562f9) (@jaaydenh)
- Add search to parameter dropdowns (#18729, 52c4b6139) (@aslilac)
- Include template variables in dynamic parameter rendering (#18819, aedc019b4) (@Emyrk)
- Improve workspace upgrade flow when template parameters change (#18917, 19afeda98) (@aslilac)
- Make dynamic parameters opt-in by default for new templates (#19006, 1320b8d5b) (@jaaydenh)
- Coder may now be used as an OAuth2 provider (experimental):
- Add authorization server metadata endpoint, PKCE support (#18548, 6f2834f62) (@ThomasK33)
- Add RFC 8707 resource indicators, audience validation (#18575, f0c9c4dbc) (@ThomasK33)
- Add protected resource metadata endpoint for RFC 9728 (#18643, 33bbf18a4) (@ThomasK33)
- Implement OAuth2 dynamic client registration (RFC 7591/7592) (#18645, 74e1d5c4b) (@ThomasK33)
- Add experimental OAuth2 provider functionality (#18692, 15551541e) (@ThomasK33)
- Implement RFC 6750 Bearer token authentication (#18644, 09c50559f) (@ThomasK33)
- Add RFC 9728 OAuth2 resource metadata support (#18920, 071383bbe) (@ThomasK33)
- The external Coder MCP server is now available as an experiment:
Use any agent to create coder workspaces.
- Implement MCP HTTP server endpoint with authentication (#18670, 494dccc51) (@ThomasK33)
- Add MCP HTTP server experiment and improve experiment middleware (#18712, 7fbb3ced5) (@ThomasK33)
- Add workspace SSH execution tool for AI SDK (#18924, 326c02459) (@ThomasK33)
- SDK: Add MCP workspace bash background parameter (#19034, b666d5217) (@hugodutka)
- Added new connection logs as a separate entity from audit logs
- Dashboard: Add connection log page (#18708, b5260d569) (@ethanndickson)
- Add
connectionlogs
API (#18628, 7a339a1ff) (@ethanndickson) - Improvements to Coder Tasks:
- Add task link in the workspace page when it is running a task (#18591, 2d44add81) (@BrunoQuaresma)
- Redirect to the task page after creation (#18626, 29ef3a8ed) (@BrunoQuaresma)
- Make task panels resizable (#18590, 8eebb4fa4) (@BrunoQuaresma)
- Add preset selector in TasksPage (#19012, 9a05a8a28) (@johnstcn)
- Improvements to our Devcontainers integration:
- Agent: Automaticall detect dev containers (#18950, f41275eb3) (@DanielleMaywood)
- Agent: Allow auto start for discovered containers (#19040, 66cf90c73) (@DanielleMaywood)
- CLI: Improve devcontainer support for
coder show
(#18793, 5f50dcce5) (@mafredri) - CLI: Replace open vscode container with devcontainer subagent (#18765, 6c4db7a2b) (@mafredri)
- Install dotfiles if present (#18606, 872aef3af) (@mafredri)
- Administrators can now track usage of agentic AI workspaces:
Premium licensed customers have a default of 800 agentic workspaces per user. This limit will likely never be hit.
- Add
managed_agent_limit
licensing feature (#18876, 183a6ebbd) (@deansheather) - Add managed ai usage consumption to license view (#18934, 36d2e0147) (@ibetitsmike)
- Allow users to pause prebuilt workspace reconciliation (#18700, 01163ea57) (@SasSwart)
- Use parameter preview engine to compute workspace tags from terraform (#18720, a099a8a25) (@Emyrk)
- Add publishing of helm charts to ghcr registry (#18316, 10c1e36ff) (@a1994sc)
- Automatically reconnect the terminal (#18796, 5a8a19be7) (@BrunoQuaresma)
- Publish CLI binaries and detached signatures to releases.coder.com (#18874, e4d3453e2) (@jdomeracki-coder)
- Add managed agent license limit checks (#18937, 9a6dd73f6) (@deansheather)
- Extend workspace build reasons to track connection types (#18827, 482463c51) (@kacpersaw)
- Add View Source button for template administrators in workspace creation (#18951, 28789d720) (@app/blink-so)
- Add timeout support to workspace bash tool (#19035, 398e80f00) (@ThomasK33)
- Support icon and description in preset (#18977, 0672bf508) (@ssncferreira)
- Support shift+enter in terminal (#19021, 558e25d59) (@code-asher)
- CLI: Add CLI support for listing presets (#18910, 931b97caa) (@ssncferreira)
- CLI: Support description in create and presets list CLI commands (#19079, 4e7331a9c) (@ssncferreira)
- Helm: Add pod-level securityContext support for certificate mounting (#19041, faac75389) (@ausbru87)
- Dashboard: Support icon and description in preset (#19063, 71738f6db) (@ssncferreira)
Bug fixes
- Hide the preset parameter visibility switch when it has no effect (#18574, 634144f94) (@SasSwart)
- Pin Nix version to 2.28.4 to avoid JSON type error (#18612, 1b1d09158) (@ThomasK33)
- Cap max X11 forwarding ports and evict old (#18561, 9e1cf1693) (@spikecurtis)
- Use memmap file system for TestServer_X11 (#18562, 6bebfd0ec) (@spikecurtis)
- Use default preset when creating a workspace for task (#18623, 6d305df67) (@BrunoQuaresma)
- Use only template version ID to create task workspace (#18642, 409533004) (@BrunoQuaresma)
- Display error message when delete workspace fails (#18654, ad6773360) (@jaaydenh)
- Use client preferred URL for the default DERP (#18911, a1b87a67c) (@deansheather)
- Prioritise human-initiated builds over prebuilds in provisioner queue (#18933, c4b69bbe6) (@johnstcn)
- Debounce parameter slider to avoid laggy behavior (#18980, dd2fb896e) (@jaaydenh)
- Avoid duplicating logs on Coder Connect Windows (#19052, 2a430ab43) (@deansheather)
- Sanitize app status summary to resolve confusing errors in coder tasks (#19075, 812d72c5b) (@johnstcn)
- Agent: Delay containerAPI init to ensure startup scripts run before (#18630, 7e99fb7d7) (@mafredri)
- Agent: Fix script filtering for devcontainers (#18635, 8ee2668b3) (@mafredri)
- Agent: Disable dev container integration inside sub agents (#18781, 0118e7500) (@DanielleMaywood)
- Agent: Stop logging empty lines (#18605, 98c77fece) (@DanielleMaywood)
- Agent: Respect ignore files (#19016, 25d70ce7b) (@DanielleMaywood)
- CLI: Calculate
coder ping max
correctly (#18734, 7500aa4d6) (@ethanndickson) - fix(.devcontainer): add home volume and fix code-server and filebrowser (#18648, d814fdfa1) (@mafredri)
- Dashboard: Update vscode.dev container button URLs (#18696, 8b6d70bf1) (@mafredri)
- Dashboard: Only attempt to watch containers when agent connected (#18873, 089f9603e) (@DanielleMaywood)
- Dashboard: Exclude workspace schedule settings for prebuilt workspaces (#18826, dad033ee3) (@ssncferreira)
- Dashboard: Only attempt to watch when dev containers enabled (#18892, bfb9aa464) (@DanielleMaywood)
- Dashboard: Speed up state syncs and validate input for debounce hook logic (#18877, f47efc62e) (@Parkreiner)
Performance Optimization
- Optimize GetPrebuiltWorkspaces query (#18717, 0367dbac4) (@johnstcn)
- Database: Optimize AuditLogs queries (#18600, 695de6e0c) (@kacpersaw)
- Database: Optimize GetRunningPrebuiltWorkspaces (#18588, 258a839d2) (@johnstcn)
- Populate connectionlog count using a separate query (#18629, 7c077d39c) (@ethanndickson)
- Replace original GetPrebuiltWorkspaces with optimized version (#18832, 198d50dbc) (@johnstcn)
- CLI: Increase reconciliation interval to 1 minute (#18690, dbfbef6ec) (@johnstcn)
- Dashboard: Reduce fetch interval on workspaces page (#18725, 1195f3102) (@johnstcn)
Documentation
- Add Coder Desktop to remote desktop docs (#18326, fb0e7a21a) (@matifali)
- Add warning about prebuilds incompatibility with certain features (#18689, 57a6d59d8) (@ssncferreira)
- Add section about how to disable path based apps to security best practices (#18419, ab254adfb) (@EdwardAngert)
- Mention Windsurf module in Windsurf documentation (#18715, 91aa583ea) (@app/blink-so)
- Add comprehensive development documentation for claude (#18646, 4dcf0c3e7) (@ThomasK33)
- Simplify PostgreSQL K8s setup [guide](https://coder.com/docs/install/kubernetes#2 by using 'postgresql' as release name (#18754, 39ed0c32e) (@app/blink-so)
- Add note about incompatible immutable parameters behavior to parameters doc (#18814, 78af5e0f5) (@EdwardAngert)
- Document known issue with MacOS coder desktop behind VPN (#18855, 7cf3263fb) (@EdwardAngert)
- Add connection logs page covering the new location (#18739, 6b17aee42) (@ethanndickson)
- Improve audit logs documentation copy (#18807, de4a27031) (@ethanndickson)
- Add cloud-specific database instance recommendations (#18862, 87e5365f7) (@app/blink-so)
- Update port forwarding docs to include Coder Desktop (#18870, ca6b5e341) (@matifali)
- Add documentation for contributing community modules and community templates (#18820, 6746e1650) (@DevelopmentCats)
- Remove dbmem references from documentation files for claude context (#18861, 0d3b7703f) (@ThomasK33)
- Add suggestions to the tasks docs (#18766, 1e715e2f6) (@hugodutka)
- Update tasks docs (#18659, b26c9e243) (@bpmct)
Compare: v2.24.2...v2.25.0
Container image
docker pull ghcr.io/coder/coder:v2.25.0
Install/upgrade
Refer to our docs to install or upgrade Coder, or use a release asset below.