v1.16.4 2026-09-23
- Add
coder.connectionLogBuffer.sizeto keep recent below-level Coder output channel entries in memory and replay them into the channel when a connection fails terminally or you collect a support bundle, so Support can diagnose connection failures without asking you to reproduce with debug logging on. Set to0to disable.
- Stop retrying after an unrecoverable WebSocket close (
1002/1003) and replay the buffered connection logs instead. Close codes never reached the reconnect logic, so these closes retried forever. Server-initiated normal closes (1000/1001) keep reconnecting. - Repair permissions on the Windows SSH config files the extension generates, so connections stop failing with "Bad owner or permissions". Only you, SYSTEM, and Administrators keep access to them. The extension leaves your own SSH config untouched and needs no admin rights.
- Update a workspace in one build on Coder 2.36 and later. The connection's own autostart could take the build slot between the update's stop and start, so the workspace came back on the template version it already had.
- Ask whether to connect to the existing version when an update fails, instead of connecting to it with only a warning.
- Hide the Tasks panel on deployments before 2.29, which do not serve
/api/v2/tasksand answered every poll with a 404. - Remove the CLI download's progress log once the download finishes. A write still in flight could recreate the file after cleanup and leave it behind.
v1.16.3 2026-09-14
- Store your session token in the OS keyring by default on macOS and Windows,
shared with the
coderCLI: signing in here also signs in the CLI. Requires Coder CLI 2.29.0 or later; Linux and older CLIs keep using a file. To opt out, setcoder.useKeyringtofalse. - Ask whether to sign the
coderCLI out too when you sign out, or remove credentials with Coder: Manage Credentials, and the CLI shares your session. - Pass
coder.useKeyringto the CLI as--use-keyring, so it overrides theCODER_USE_KEYRINGenvironment variable. - Treat the
CODER_CONFIG_DIRenvironment variable like--global-configincoder.globalFlags. - Require Coder CLI 2.32.0 or later, up from 2.31.0, to sign in with the CLI's session or share its config directory.
- Ask before signing in with the
coderCLI's session when it belongs to a different user. - Show Open Settings when the CLI cannot store the token at login, and Show Output when signing out cannot remove every credential.
- Group the workspaces view's ... menu: Switch Deployment and Logout first, then Network Check.
- Pass
--allow-redirectsto Coder CLI 2.38.0 or later, which otherwise refuses a redirected deployment URL and failscoder login,coder logout, andcoder ssh.
v1.16.2 2026-08-25
- Reopen a workspace on the SSH host it was last opened on. v1.16.1 moved existing workspaces onto a host named after your editor, and an editor remembers a window by its full address, host included, so the workspace looked new: Cursor's chats, your window layout, and anything else kept per workspace appeared to be gone. Nothing was deleted. The host now follows the workspace wherever you open it from: the Coder panel, a dashboard or devcontainer link, or File > Open Recent, and whether it opens as a folder or as a multi-root workspace. Only a workspace you have never opened gets your editor's host.
- Mark the shared
coder-vscodehost as(legacy)in File > Open Recent, so a workspace listed on both hosts is no longer two identical lines. The folder picker lists each folder once. - Look for a workspace's remote logs under the host it opens on when collecting
a support bundle for a workspace you are not connected to. The lookup always
used a host named after your editor, so a
remote.SSH.serverInstallPathset for the shared host was missed and the bundle fell back to the default. - Serve the shared
coder-vscodehost from one generated SSH config file instead of one per editor, so a connection over it always uses the CLI and credentials of the editor that started it. Coder: Open Generated SSH Configuration File can open that file too.
v1.16.1 2026-08-24
- Add a Coder: Open Generated SSH Configuration File command that opens this editor's generated workspace hosts file in a read-only editor. A connected window opens its own deployment's file; a local window asks which deployment to open when there are several.
- Prefix every line in the Coder output channel with a per-session ID, and
send that same ID to your deployment and to the
coderCLI. Searching for it in the logs or a support bundle picks out everything one session did, even when several windows are connected at once. - Log workspace, agent, and lifecycle status changes as they happen, including agents that disappear. A slow or failed connection now leaves a record of what the workspace and its agents were doing at the time, instead of only the error at the end.
- Write workspace SSH hosts to generated files under your platform's data
directory (
coder.coder-remote/ssh) instead of into your SSH config. Your config now carries only an include of that directory, which moves back to the top on every connection. Because ssh uses the first value it finds for each option, global options in your config, such as a catch-allHost *, no longer change how the extension connects. To override the generated options, set them incoder.sshConfig, which still takes precedence. - Generate one file per editor and deployment, all behind the same include, so
VS Code, Cursor, Windsurf, and other forks no longer overwrite one another's
workspace hosts. Each fork keeps its own SSH host prefix, and legacy
coder-vscodeauthorities are migrated by automatically reopening the window once. - Stop aborting the connection with "Unexpected SSH Config Option". The include now sits at the top of your config, so the generated options always take effect and there is nothing left to warn about. Validation of the options your deployment sends is unchanged.
- The Tasks panel is deprecated. It is now titled Coder Tasks (Deprecated), and is hidden entirely on Coder 2.35 and newer.
- Ignore the SSH config file setting on Antigravity and Windsurf/Devin. They
launch ssh without pointing it at a config file, so it always reads
~/.ssh/config, and honoring the setting wrote the workspace host where the connection never looked. - Report a malformed response from your deployment or proxy as an error naming the endpoint that sent it, instead of an unrelated crash later on. Waiting on a workspace build now fails on a bad response rather than hanging forever.
- Stop showing stale progress in other windows waiting on the same CLI download.
v1.16.0 2026-08-06
- Show active deployment announcements in a megaphone status bar item, with a
popup for announcements you haven't seen yet (respecting
coder.disableNotifications; suppressed announcements highlight the status bar item instead). A new Coder: View Announcements command opens the full messages in a markdown preview. - Ask for confirmation before creating a support bundle, with a summary of the data it collects.
- Collect the remote editor's server logs from the workspace in support bundles, alongside the local extension and SSH logs (requires a Coder 2.36.0+ deployment).
- Filter the Shared Workspaces view with the server-side
shared_with_userquery instead of filteringshared:trueresults on the client, so fewer workspaces are fetched and the view loads faster. Deployments too old to support the new filter now show a message explaining why instead of an empty list. - Logging out now revokes the OAuth tokens at the server and warns when locally stored credentials could not be fully removed.
- Redact more sensitive data from HTTP logs: authorization and cookie headers
regardless of casing, OAuth credential fields in request and response bodies,
and headers produced by
coder.headerCommand. Shell command output and the header command's output no longer appear in logs or error messages.
- Reject SSH options sent by the deployment that could run code or change how
Coder connects, such as
ProxyCommand,LocalCommand, andMatch, matching the server's own validation of--ssh-config-options. One error reports every rejected option. Options you set yourself, in thecoder.sshConfigsetting or withcoder config-ssh --ssh-option, stay allowed because your value takes precedence. - Check the written SSH config the way OpenSSH reads it: option names are case-insensitive and the first value wins. Every unexpected value is reported in a single dialog.
- Ask for confirmation before a deep link connects to a deployment you have not logged in to before, and before a token in a link signs you in or switches accounts, naming the accounts involved. A link normally shows at most one of these prompts, and a link that signs in the same user on the same deployment stays silent.
- Write the SSH config to the file the active Remote-SSH extension actually
reads. Windsurf/Devin and Antigravity renamed the
remote.SSHsettings section, so a custom config file set asremote.devinSSH.configFile,remote.windsurfSSH.configFile, orremote.antigravitySSH.configFilewas ignored and the workspace host was written to~/.ssh/config, where those editors never looked. - Apply a 60-second default timeout to REST requests, so requests hung on a half-open TCP connection don't stall pollers forever.
- Change
coder.binarySource,coder.binaryDestination,coder.headerCommand,coder.tlsCertFile,coder.tlsKeyFile,coder.tlsCaFile,coder.tlsAltHost,coder.tlsCertRefreshCommand,coder.proxyLogDirectory,coder.proxyBypass,coder.sshConfig,coder.sshFlags, andcoder.globalFlagsfrommachinetoapplicationscope (stillignoreSync, unchanged from before). This keeps workspace/foldersettings.jsonfrom overriding them (the original SEC-200 goal) while fixing #1032, where amachine-scoped value could revert to its default in a remote window. - Delete the legacy file-based credentials after migrating them to secret storage, instead of leaving plaintext copies behind.
- Stop using saved logins that point at a different deployment than the one they were saved for, and warn instead of failing the connection when migrated file-based credentials carry such a mismatch.
v1.15.2 2026-06-30
Breaking: API requests now respect
http.proxySupport: off. Previously the extension applied VS Code's proxy settings (http.proxy,http.noProxy,coder.proxyBypass) to API requests even whenhttp.proxySupportwasoff. Nowoffignores those settings and only proxy environment variables are used. If you set those settings and relied on them while proxy support wasoff, either sethttp.proxySupporttoonto keep using them, or move the values into theHTTP_PROXY/HTTPS_PROXY(fromhttp.proxy) andNO_PROXY(fromhttp.noProxy/coder.proxyBypass) environment variables.
- Honor
http.proxySupport: offwhen deriving proxy settings for SSH and API connections, so VS Code's proxy settings are ignored while inherited proxy environment variables still apply.
v1.15.1 2026-06-26
- New Coder: Network Check command to run
coder netcheckfrom the command palette or the My Workspaces view menu. The report opens in a panel with an overall health banner, any warnings, a connectivity summary (UDP, IPv4/IPv6, NAT mapping, hairpinning, port mapping), per-region DERP/STUN results with latencies, and local interfaces. A View JSON action exposes the raw output. When a slow connection is detected, the network status bar tooltip also links to the network check alongside the latency test, for a deployment-wide view of the network path. - Share login with the terminal
coderCLI by setting--global-config=<dir>incoder.globalFlags; the extension reads file-based CLI credentials from that directory (requires a deployment on 2.31.0+).
-
File-based credentials are now written and cleared through
coder loginandcoder logoutrather than by the extension directly. The minimum supported Coder version is now v0.25.0. -
Workspace opens and
coder://URI handling now log more diagnostics (target workspace, agent, and handoff) to make failed opens easier to trace. URI parameter values, including tokens, are never logged.
- Propagate VS Code's proxy settings (
http.proxy,http.noProxy, andcoder.proxyBypass) to the SSH environment asHTTP_PROXY/HTTPS_PROXY/NO_PROXY, so thecoder sshProxyCommand connects through the configured proxy whether SSH runs as a child process or in a terminal.
v1.15.0 2026-06-12
- New Shared Workspaces view in the Coder sidebar that lists workspaces other users have shared with you, with search and refresh actions, so you can find and open them just like your own.
- New
coder.alternativeWebUrlsetting to open browser pages (dashboard, workspace pages, login) on a different URL than the one used for API, SSH, and CLI traffic. Useful when the API runs on a browser-restricted port (e.g. 7004) but the web UI is served on a standard one (e.g. 443). - Local extension telemetry to help diagnose issues. Events are recorded on
this machine only and never sent anywhere; payloads are bounded and never
include raw workspace names, paths, queries, or command output. Configure
via the new
coder.telemetry.levelsetting (localby default,offto disable); seecoder.telemetry.localfor tunables. Every event, property, and measurement is documented in EVENTS.md. Coverage:- Activation and commands: extension activation phases and every
coder.*command invocation, with durations and outcomes. - Auth and deployment: login/logout, token refresh, credential store/clear, recovery prompts, and session suspend/recover events.
- CLI: binary resolution, download and signature verification, and SSH configuration, with durations and typed failure categories.
- Remote setup: each phase of connecting to a workspace, from auth retrieval and workspace lookup through workspace and agent readiness, SSH config write, and connection handoff.
- Connections: SSH process discovery/loss/recovery with sampled network stats, and reconnecting WebSocket open/drop/reconnect state transitions.
- Workspaces and HTTP: workspace and agent state transitions with
observed durations, start/update/open flows, and per-route
http.requestsrollups for HTTP health without one event per request.
- Activation and commands: extension activation phases and every
- The new Coder: Export Telemetry command writes locally recorded
telemetry for a selected date range to a file you choose, as a JSON array
or an OTLP/JSON zip ready for OpenTelemetry tooling. The OTLP zip includes
a
manifest.jsonsummarizing the export: date range, source file and event counts, per-signal record counts, and the telemetry schema version. - Coder: Create Support Bundle now captures VS Code-side diagnostics in
the bundle: a snapshot of
coder.*andremote.*settings (values that can hold secrets are masked), recent extension and SSH proxy logs across sessions, and the local telemetry files, so a single bundle is usually enough to diagnose an issue. - Path-like settings (
coder.binaryDestination,coder.tlsCertFile,coder.tlsKeyFile,coder.tlsCaFile,coder.tlsAltHost,coder.proxyLogDirectory) and items incoder.globalFlagsnow support${env:VAR},${userHome}, and a leading~. For--flag=valueitems incoder.globalFlags, the expansion applies to the value half, so--cfg=~/coderworks.
- The Coder CLI is now spawned directly instead of through a shell, so
arguments reach the binary as-is. The extension no longer has to
shell-escape values by hand. That escaping was error-prone (especially
around
cmd.exeon Windows) and a recurring command-injection risk when deployment-supplied values like workspace names or template parameters contained spaces, quotes, or shell metacharacters.
- Updating a workspace from VS Code no longer hangs when the new template
version requires parameters. The extension now prompts for any missing
required values through VS Code input boxes and passes them to
coder updateso the CLI runs non-interactively. If the CLI still asks for input, the update fails fast and the workspace falls back to starting on its existing template version with a warning, instead of stalling indefinitely. - Updating a workspace on a CLI older than 2.24 (which can't run
coder updatenon-interactively) now passes newly-required template parameters into the REST API fallback build, instead of silently omitting them and letting the server reject the build. - Updating a workspace now re-prompts for an option or multi-select parameter whose stored value is no longer offered by the new template version, instead of carrying the stale value forward and failing the build. Immutable parameters without a stored value are prompted as well, matching the web dashboard's behavior.
- Workspaces on hostnames containing
--, such as internationalized (IDN) domains with Punycode (xn--) labels, can now be opened from recent connections. The SSH authority parser previously split these names at the wrong separator and rejected the host as invalid.
v1.14.6 2026-05-26
- Minimum supported VS Code lowered to 1.105 for Cursor compatibility.
- The "Coder Chat (Experimental)" secondary sidebar and its
agentsexperiment gate. Deeplinks that still includechatIdcontinue to open the workspace; the parameter is now silently ignored.
- Sessions suspended by an mTLS or
coder.headerCommandfailure now auto-recover once the setting is corrected; a 401 from a mid-flight settings change is retried silently with the new settings and fresh headers instead of escalating to an interactive prompt. - Logout, deployment switch, or dispose during an in-flight auth verify is no longer overwritten when the verify finishes, and no longer leaves stale deployment data in storage.
- Cross-window login keeps listening when the first token observed from another window is invalid, so a follow-up valid write still resolves the dialog.
- Config-change side-effects (reload prompt, recovery, reconnects) fire once after edits settle instead of on every event in a burst.
- Hardened the configuration scope of security-sensitive settings so that a
malicious
.vscode/settings.jsoncannot override them (SEC-200). Workspace and folder values are now ignored by VS Code for these settings. This closes a path where a workspace could redirect command execution (coder.headerCommand,coder.tlsCertRefreshCommand), substitute the CLI binary or its source (coder.binarySource,coder.binaryDestination,coder.disableSignatureVerification,coder.enableDownloads), inject CLI/SSH flags (coder.globalFlags,coder.sshFlags), swap TLS material or disable TLS verification (coder.tlsCertFile,coder.tlsKeyFile,coder.tlsCaFile,coder.tlsAltHost,coder.insecure), or override identity, networking, and credential storage (coder.defaultUrl,coder.autologin,coder.useKeyring,coder.proxyBypass,coder.proxyLogDirectory). - Path-, command-, and network-dependent settings use
"scope": "machine"(per-machine, not synced via Settings Sync), while user-wide preferences (coder.defaultUrl,coder.autologin,coder.useKeyring,coder.insecure,coder.disableSignatureVerification,coder.enableDownloads) use"scope": "application", which preserves Settings Sync across your machines while still blocking workspace overrides. This follows VS Code's recommended scope semantics.
v1.14.5 2026-04-30
coder.binaryDestinationnow accepts a full file path (e.g./usr/bin/coder) in addition to a directory. The extension checks the binary's version against the server and downloads a replacement when needed. When set to a directory, the simple name (coder/coder.exe) is tried as a fallback after the platform-specific name, so package-manager-installed CLIs work without symlinking.- New Coder: Speed Test Workspace command to run
coder speedtestfrom the command palette or workspace sidebar. Choose a running workspace, optionally set the test duration, and view results in an interactive throughput chart with hover tooltips, a summary header, and a real-time progress bar while the CLI runs. A View JSON action exposes the raw output. - New Coder: Ping Workspace command to run
coder pingfrom the command palette or workspace sidebar, with live connectivity diagnostics in a terminal. - New Coder: Create Support Bundle command to run
coder support bundlefrom VS Code and save the resulting diagnostics zip for troubleshooting. The bundle also includes VS Code-side logs (Remote SSH extension, SSH proxy, and extension output channels) for easier debugging. Available when your deployment supports support bundles. - Coder SSH connections now default to
ServerAliveInterval=10andServerAliveCountMax=3, helping keep sessions alive through NATs and firewalls while detecting dead connections within about 30 seconds. - New
coder.networkThreshold.latencyMssetting (default: 250ms, set to0to disable) to warn when workspace latency stays high. The network status bar indicator turns yellow and offers quick actions to run Coder: Ping Workspace or open the setting. - Opening a workspace that's already connected in another VS Code window now shows a prompt to Duplicate Window (preserving tabs and panels) or Open Without Folder, instead of just focusing the existing window with no way to open a second view of the same workspace.
- Cleanup of old/temp files in shared directories like
/usr/binis now scoped to the binary's own basename, preventing accidental removal of unrelated files. - The Coder: Update Workspace flow now goes through the normal startup path for more reliable updates and restarts, and reconnecting to a stopped outdated workspace now offers Start or Update and Start.
- Outdated workspace notifications are now deferred until setup completes, so they no longer appear during an in-progress update.
- Workspace build logs now reliably appear in the Coder: Workspace Build output channel during startup.
- The Coder: Workspace Build output channel is no longer created when reconnecting to an already-running workspace, so the Output panel doesn't pop open empty.
- Speed Test, Ping, Create Support Bundle, and the app status terminal now refresh the stored credential file (or keyring on supported systems) before each invocation, so they no longer fail with a stale token after the session has been refreshed since the workspace was first opened. mTLS deployments continue to work with an empty token.
- Cancelling a long-running CLI command no longer surfaces as a misleading CLI failure.
v1.14.3 2026-03-30
- Coder Chat panel: delegate development tasks to AI coding agents directly from VS Code's sidebar. Describe a task and the agent handles workspace provisioning and execution automatically. Requires Coder Agents (Early Access) to be enabled on your deployment.
- New
coder.disableNotificationssetting to suppress all notification prompts from the Coder deployment, including workspace update reminders and scheduling alerts. - Automatically set
reconnectionGraceTime,serverShutdownTimeout, andmaxReconnectionAttemptson first connection to prevent disconnects during overnight workspace sleep. - New Coder: Apply Recommended SSH Settings command to overwrite all recommended SSH settings at once.
- Proxy log directory now defaults to the extension's global storage when
coder.proxyLogDirectoryis not set, so SSH connection logs are always captured without manual configuration. Also respects theCODER_SSH_LOG_DIRenvironment variable as a fallback. - SSH options from
coder config-ssh --ssh-optionare now applied to VS Code connections, with priority order: VS Code setting >coder config-sshoptions > deployment config. - Re-introduced OS keyring support for session tokens (reverted in v1.13.2), now delegating
to the Coder CLI instead of native
@napi-rs/keyringbinaries. This keeps the credential format in sync with the CLI automatically.
- URI handler no longer falls back to the agent's
expanded_directorywhen thefolderquery parameter is absent. An absentfoldernow opens a bare remote window, restoring pre-v1.10.0 behavior. - Fixed SSH connections failing when a custom
RemoteCommandis configured in SSH config. - SSH connections now recover faster after laptop sleep/wake by detecting port changes and re-registering the label formatter.
- SSH process discovery now uses
ss->netstat->lsofon Linux andnetstat->lsofon macOS, fixing systems wherenetstatwas unavailable and the SSH PID could not be resolved, which broke network info display and log viewing. - Fixed SSH config writes failing on Windows when antivirus, cloud sync software, or another process briefly locks the file.
- Fixed Tasks view container not showing in Cursor when not authenticated.
--use-keyringand--global-configare now explicitly filtered from user-configured global CLI flags to prevent conflicts with the extension's auth mode.
- Breaking: Minimum VS Code version is now 1.106.0.
coder.useKeyringis now opt-in (default: false). Keyring storage requires CLI >= 2.29.0 for storage and logout sync, and >= 2.31.0 for syncing login from CLI to VS Code.- Session tokens are now saved to the OS keyring at login time (when enabled and CLI >= 2.29.0), not only when connecting to a workspace.
v1.13.2 2026-03-05
- Removed OS Keyring behavior changes
v1.13.1 2026-03-04
- Session tokens are now stored in the OS keyring (Keychain on macOS, Credential Manager on
Windows) instead of plaintext files, when using CLI >= 2.29.0. Falls back to file storage on
Linux, older CLIs, or if the keyring write fails. Controlled via the
coder.useKeyringsetting.
- Fixed CLI binary downloads failing when servers or proxies compress responses unexpectedly.
- Clarified CLI download progress notification wording.
v1.13.0 2026-03-03
- Tasks panel: a new sidebar panel to create, view, and manage AI tasks directly from VS Code. Includes a task list with status indicators, a detail view with chat-style log streaming and real-time workspace build logs, and the ability to send messages or pause the agent without leaving the editor.
- New "Switch Deployment" command to change deployments without clearing credentials.
- New "Manage Credentials" command to view and remove stored credentials for individual deployments.
- Logout now clears stored credentials for the current deployment.
- The workspace update confirmation button now reads "Update and Restart" to clarify that updating will restart the workspace.
v1.12.2 2026-01-27
- Support for VS Code's built-in proxy settings:
http.noProxy(as fallback whencoder.proxyBypassis not set),http.proxyAuthorization, andhttp.proxyStrictSSL.
- Fixed proxy scheme handling where URLs with schemes got duplicated and URLs without schemes were not normalized.
- WebSocket connections are now more robust and reconnect less frequently, only when truly necessary, reducing unnecessary disconnections and improving stability.
v1.12.1 2026-01-23
- Fixed GPG signature verification failing when public keys have been reformatted.
- Fixed race conditions when multiple VS Code windows access deployments simultaneously.
- Refined logging with clearer messages and more accurate severity levels for easier troubleshooting.
v1.12.0 2026-01-21
- Automatic TLS client certificate refresh via new
coder.tlsCertRefreshCommandsetting. Detects certificate errors (expired, revoked, etc.) and automatically refreshes and retries. - OAuth 2.1 authentication support (experimental): Enable via
coder.experimental.oauthsetting. When connecting to an OAuth-enabled Coder deployment, you can choose between OAuth (with automatic token refresh) or legacy session tokens. OAuth tokens refresh automatically in the background, eliminating manual re-authentication. - Multi-deployment support: The extension now remembers credentials for multiple Coder deployments. When you log into a different deployment, existing credentials are preserved and automatically restored if you log back in. Credentials sync automatically across VS Code windows.
- WebSocket connections now automatically reconnect when proxy, TLS, or header settings change
(
coder.headerCommand,coder.insecure,coder.tlsCertFile,coder.tlsKeyFile,coder.tlsCaFile,coder.tlsAltHost,http.proxy,coder.proxyBypass).
- Fixed
SetEnvSSH config parsing and accumulation with user-defined values. - Improved WebSocket error handling for more consistent behavior across connection failures.
- Commands now correctly appear/hide in the command palette based on login state and remote connection.
- Opening a workspace via URI (
vscode://coder.coder-remote/open?...) now properly prompts for login when credentials are missing. - Network info files are now automatically cleaned up, and the SSH process is re-detected after repeated failures to read network info.
- Proxy log files are now automatically cleaned up when the count exceeds 20 and the oldest files are more than 7 days old.
- Breaking: Minimum VS Code version is now 1.95.0.
v1.11.6 2025-12-15
- Log file picker when viewing logs without an active workspace connection.
- Fixed false "setting changed" notifications appearing when connecting to a remote workspace.
v1.11.5 2025-12-10
- Support for paths that begin with a tilde (
~). - Support for
coder sshflag configurations through thecoder.sshFlagssetting.
- Fixed race condition when multiple VS Code windows download the Coder CLI binary simultaneously. Other windows now wait and display real-time progress instead of attempting concurrent downloads, preventing corruption and failures.
- Remove duplicate "Cancel" buttons on the workspace update dialog.
- WebSocket connections now automatically reconnect on network failures, improving reliability when communicating with Coder deployments.
- Improved SSH process and log file discovery with better reconnect handling and support for VS Code forks (Cursor, Windsurf, Antigravity).
v1.11.4 2025-11-20
- Support for the
google.antigravity-remote-opensshRemote SSH extension.
- Improved workspace connection progress messages and enhanced the workspace build terminal with better log streaming. The extension now also waits for blocking startup scripts to complete before connecting, providing clear progress indicators during the wait.
v1.11.3 2025-10-22
- Fixed WebSocket connections not receiving headers from the configured header command
(
coder.headerCommand), which could cause authentication failures with remote workspaces.
v1.11.2 2025-10-07
- Updated Visual Studio Marketplace badge in README to use img.shields.io service instead of vsmarketplacebadges.
v1.11.1 2025-10-07
- Logging in or out in one VS Code window now properly updates the authentication status in all other open windows.
- Fix an issue with JSON stringification errors occurring when logging circular objects.
- Fix resource cleanup issues that could leave lingering components after extension deactivation.
- Support for
CODER_BINARY_DESTINATIONenvironment variable to set CLI download location (overridden by extension settingcoder.binaryDestinationif configured). - Search filter button to Coder Workspaces tree views for easier workspace discovery.
v1.11.0 2025-09-24
- Always enable verbose (
-v) flag when a log directory is configured (coder.proxyLogDirectory). - Automatically start a workspace without prompting if it is explicitly opened but not running.
- Add support for CLI global flag configurations through the
coder.globalFlagssetting. - Add logging for all REST traffic. Verbosity is configurable via
coder.httpClientLogLevel(none,basic,headers,body). - Add lifecycle logs for WebSocket creation, errors, and closures.
- Include UUIDs in REST and WebSocket logs to correlate events and measure duration.
1.10.1 2025-08-13
- The signature download fallback now uses only major.minor.patch without any extra labels (like the hash), since the releases server does not include those labels with its artifacts.
v1.10.0 2025-08-05
- Coder output panel enhancements: all log entries now include timestamps, and you can filter messages by log level in the panel.
- Update
/openDevContainerto support all dev container features when hostPath and configFile are provided. - Add
coder.disableUpdateNotificationssetting to disable workspace template update notifications. - Consistently use the same session for each agent. Previously, depending on how you connected, it could be possible to get two different sessions for an agent. Existing connections may still have this problem; only new connections are fixed.
- Add an agent metadata monitor status bar item, so you can view your active agent metadata at a glance.
- Add binary signature verification. This can be disabled with
coder.disableSignatureVerificationif you purposefully run a binary that is not signed by Coder (for example a binary you built yourself).
v1.9.2 2025-06-25
-
Use
--header-commandproperly when starting a workspace. -
Handle
agentparameter when opening workspace.
- The Coder logo has been updated.
v1.9.1 2025-05-27
- Missing or otherwise malformed
START CODER VSCODE/END CODER VSCODEblocks in${HOME}/.ssh/configwill now result in an error when attempting to update the file. These will need to be manually fixed before proceeding. - Multiple open instances of the extension could potentially clobber writes to
~/.ssh/config. Updates to this file are now atomic. - Add support for
anysphere.remote-sshRemote SSH extension.
v1.9.0 2025-05-15
- The connection indicator will now show for VS Code on Windows, Windsurf, and
when using the
jeanp413.open-remote-sshextension.
- The connection indicator now shows if connecting through Coder Desktop.
v1.8.0 (2025-04-22)
- Coder extension sidebar now displays available app statuses, and lets the user click them to drop into a session with a running AI Agent.
v1.7.1 (2025-04-14)
- Fix bug where we were leaking SSE connections
v1.7.0 (2025-04-03)
- Add new
/openDevContainerpath, similar to the/openpath, except this allows connecting to a dev container inside a workspace. For now, the dev container must already be running for this to work.
- When not using token authentication, avoid setting
undefinedfor the token header, as Node will throw an error when headers are undefined. Now, we will not set any header at all.
v1.6.0 (2025-04-01)
- Add support for Coder inbox.
v1.5.0 (2025-03-20)
- Fixed regression where autostart needed to be disabled.
- Make the MS Remote SSH extension part of an extension pack rather than a hard dependency, to enable using the plugin in other VSCode likes (cursor, windsurf, etc.)
v1.4.2 (2025-03-07)
- Remove agent singleton so that client TLS certificates are reloaded on every API request.
- Use Axios client to receive event stream so TLS settings are properly applied.
- Set
usage-app=vscodeoncoder sshto fix deployment session counting. - Fix version comparison logic for checking wildcard support in "coder ssh"
v1.4.1 (2025-02-19)
- Recreate REST client in spots where confirmStart may have waited indefinitely.
v1.4.0 (2025-02-04)
- Recreate REST client after starting a workspace to ensure fresh TLS certificates.
- Use
coder sshsubcommand in place ofcoder vscodessh.
v1.3.10 (2025-01-17)
- Fix bug where checking for overridden properties incorrectly converted host name pattern to regular expression.
v1.3.9 (2024-12-12)
- Only show a login failure dialog for explicit logins (and not autologins).
v1.3.8 (2024-12-06)
- When starting a workspace, shell out to the Coder binary instead of making an
API call. This reduces drift between what the plugin does and the CLI does. As
part of this, the
session_tokenfile was renamed tosessionsince that is what the CLI expects.
v1.3.7 (2024-11-04)
- New setting
coder.tlsAltHostto configure an alternative hostname to use for TLS verification. This is useful when the hostname in the certificate does not match the hostname used to connect.
v1.3.6 (2024-11-04)
- Default URL setting that takes precedence over CODER_URL.
- Autologin setting that automatically initiates login when the extension activates using either the default URL or CODER_URL.
- When a client certificate and/or key is configured, skip token authentication.
v1.3.5 (2024-10-16)
- Error messages from the workspace watch endpoint were not logged correctly.
- Delay notifying about workspaces shutting down since the connection might bump the activity, making the notification misleading.
v1.3.4 (2024-10-14)
- The "All Workspaces" view was not being populated due to visibility check.
- Log workspaces queries when running with
--log=debug. - Coder output logs will now have the date prefixed to each line.
v1.3.3 (2024-10-14)
- The plugin no longer immediately starts polling workspaces when connecting to a remote. It will only do this when the Coder sidebar is open.
- Instead of monitoring all workspaces for impending autostops and deletions, the plugin now only monitors the connected workspace.
v1.3.2 (2024-09-10)
- Previously, if a workspace stopped or restarted causing the "Start" dialog to appear in VS Code, the start button would fire a start workspace request regardless of the workspace status. Now we perform a check to see if the workspace is still stopped or failed. If its status has changed out from under the IDE, it will not fire a redundant start request.
- Fix a conflict with HTTP proxies and the library we use to make HTTP requests. If you were getting 400 errors or similar from your proxy, please try again.
- Previously, the extension would always log SSH proxy diagnostics to a fixed
directory. Now this must be explicitly enabled by configuring a new setting
coder.proxyLogDirectory. If you are having connectivity issues, please configure this setting and gather the logs before submitting an issue.
v1.3.1 (2024-07-15)
- Avoid deleting the existing token when launching with a link that omits the token.
v1.3.0 (2024-07-01)
- If there are multiple agents, the plugin will now ask which to use.
- If the workspace is stopping as the plugin tries to connect, it will wait for the stop and then try to start the workspace. Previously it would only start the workspace if it happened to be in a fully stopped state when connecting.
- Whenever the plugin wants to start a workspace, it will ask the user first to prevent constantly keeping a workspace up and defeating the point of auto-stop.
v1.2.1 (2024-06-25)
- Fix the update dialog continually reappearing.
v1.2.0 (2024-06-21)
- New setting
coder.proxyBypasswhich is the equivalent ofno_proxy. This only takes effect ifhttp.proxySupportisonoroff, otherwise VS Code overrides the HTTP agent the plugin sets.
v1.1.0 (2024-06-17)
- Workspace and agent statuses now show in the sidebar. These are updated every five seconds.
- Support
http.proxysetting and proxy environment variables. These only take effect ifhttp.proxySupportisonoroff, otherwise VS Code overrides the HTTP agent the plugin sets.
v1.0.2 (2024-06-12)
- Redirects will now be followed when watching a workspace build, like when a workspace is automatically started.
v1.0.1 (2024-06-07)
- Improve an error message for when watching a build fails.
v1.0.0 (2024-06-05)
- Support opening workspaces that belong to a different deployment than the one which is currently logged in. This will only work for new connections. If you have an existing connection that errors when connecting because of this, please connect it again using the plugin or the Coder dashboard. Optionally, you may also want to delete your old workspaces from the recents list.
- Escape variables in the header command. If you have a variable in the header
command itself, like
echo TEST=$CODER_URL, it will now work as expected instead of being substituted with a blank or erroneous value.
v0.1.37 (2024-05-24)
- openRecent query parameter to open the most recent workspace or directory for that remote.
- Setting to disable downloading the binary. When disabled, the existing binary will be used as-is. If the binary is missing, the plugin will error.
- Increased timeout will apply to reconnects as well.
- Show certificate errors under the token input.
v0.1.36 (2024-04-09)
- Automatically update a workspace if required by the template.
- Show more information when remote setup fails.
- Abort remote connection when remote setup fails.
v0.1.35 (2024-03-12)
- Support running within Cursor.
v0.1.34 (2024-03-03)
- Improve fetching the Coder binary. This is mostly just better logging but it also will avoid fetching if the existing binary version already matches, to support scenarios where the ETag is ignored.
v0.1.33 (2024-02-20)
- Prevent updating template when automatically starting workspace.