{"id":26241103,"url":"https://github.com/coder/coder-jetbrains-toolbox","last_synced_at":"2026-02-03T22:08:35.855Z","repository":{"id":278458638,"uuid":"934758256","full_name":"coder/coder-jetbrains-toolbox","owner":"coder","description":"Coder plugin for remote development support in JetBrains Toolbox","archived":false,"fork":false,"pushed_at":"2025-04-17T21:53:14.000Z","size":368,"stargazers_count":7,"open_issues_count":10,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-18T08:52:23.259Z","etag":null,"topics":["cde","coder","ide","intellij","jetbrains","remote","remote-development","toolbox"],"latest_commit_sha":null,"homepage":"https://coder.com","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"vladertel/toolbox-remote-dev-sample","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coder.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-18T11:03:12.000Z","updated_at":"2025-04-18T06:14:09.000Z","dependencies_parsed_at":"2025-04-10T19:26:14.195Z","dependency_job_id":"1a314e73-0f3b-4c17-b42b-881fd28a8dcd","html_url":"https://github.com/coder/coder-jetbrains-toolbox","commit_stats":null,"previous_names":["coder/coder-jetbrains-toolbox-plugin","coder/coder-jetbrains-toolbox"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder%2Fcoder-jetbrains-toolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder%2Fcoder-jetbrains-toolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder%2Fcoder-jetbrains-toolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coder%2Fcoder-jetbrains-toolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coder","download_url":"https://codeload.github.com/coder/coder-jetbrains-toolbox/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250372607,"owners_count":21419719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cde","coder","ide","intellij","jetbrains","remote","remote-development","toolbox"],"created_at":"2025-03-13T08:19:16.546Z","updated_at":"2026-02-03T22:08:35.848Z","avatar_url":"https://github.com/coder.png","language":"Kotlin","readme":"# Coder Toolbox plugin\n\n[![\"Join us onDiscord\"](https://img.shields.io/badge/join-us%20on%20Discord-gray.svg?longCache=true\u0026logo=discord\u0026colorB=purple)](https://discord.gg/coder)\n[![Twitter Follow](https://img.shields.io/twitter/follow/CoderHQ?label=%40CoderHQ\u0026style=social)](https://twitter.com/coderhq)\n[![Coder Toolbox Plugin Build](https://github.com/coder/coder-jetbrains-toolbox/actions/workflows/build.yml/badge.svg)](https://github.com/coder/coder-jetbrains-toolbox/actions/workflows/build.yml)\n\nConnects your JetBrains IDE to Coder workspaces\n\n## Getting Started\n\nTo install this plugin using JetBrains Toolbox, follow the steps below.\n\n1. Install [JetBrains Toolbox](https://www.jetbrains.com/toolbox-app/). Make sure it's the `2.6.0.40632` release or\n   above.\n2. Launch the Toolbox app and sign in with your JetBrains account (if needed).\n\n### Install Coder plugin via URI\n\nYou can quickly install the plugin using this JetBrains hyperlink:\n\n👉 \u003cjetbrains://gateway/com.coder.toolbox\u003e\n\nThis will open JetBrains Toolbox and prompt you to install the Coder Toolbox plugin automatically.\n\nAlternatively, you can paste `jetbrains://gateway/com.coder.toolbox` into a browser.\n\n### Manual install\n\nThere are two ways Coder Toolbox plugin can be installed. The first option is to manually download the plugin\nartifact from [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/26968-coder/versions)\nor from [Coder's Github Release page](https://github.com/coder/coder-jetbrains-toolbox/releases).\n\nThe next step is to copy the zip content to one of the following locations, depending on your OS:\n\n* Windows: `%LocalAppData%/JetBrains/Toolbox/plugins/com.coder.toolbox`\n* macOS: `~/Library/Caches/JetBrains/Toolbox/plugins/com.coder.toolbox`\n* Linux: `~/.local/share/JetBrains/Toolbox/plugins/com.coder.toolbox`\n\nAlternatively, you can install it using the _Gradle_ tasks included in the project:\n\n```shell\n\n./gradlew cleanAll build copyPlugin\n```\n\nMake sure Toolbox is closed before running the command.\n\n## Connect to a Coder Workspace via JetBrains Toolbox URI\n\nYou can use specially crafted JetBrains Gateway URIs to automatically:\n\n1. Open Toolbox\n\n2. Install the Coder Toolbox plugin (if not already installed)\n\n3. Connect to a specific Coder deployment using a URL and a token.\n\n4. Select a running workspace\n\n5. Install a specified JetBrains IDE on that Workspace\n\n6. Open a project folder directly in the remote IDE\n\n### Example URIs\n\n```text\njetbrains://gateway/com.coder.toolbox?url=https%3A%2F%2Fdev.coder.com\u0026token=zeoX4SbSpP-j2qGpajkdwxR9jBdcekXS2\u0026workspace=bobiverse-bob\u0026agent_name=dev\u0026ide_product_code=GO\u0026ide_build_number=241.23774.119\u0026folder=%2Fhome%2Fcoder%2Fworkspace%2Fhello-world-rs\n\njetbrains://gateway/coder?url=https%3A%2F%2Fj5gj2r1so5nbi.pit-1.try.coder.app%2F\u0026token=gqEirOoI1U-FfCQ6uj8iOLtybBIk99rr8\u0026workspace=bobiverse-riker\u0026agent_name=dev\u0026ide_product_code=RR\u0026ide_build_number=243.26053.17\u0026folder=%2Fhome%2Fcoder%2Fworkspace%2Fhello-world-rs\n```\n\n### URI Breakdown\n\n```text\njetbrains://gateway/com.coder.toolbox\n  ?url=http(s)://\u003cyour-coder-deployment\u003e\n  \u0026token=\u003cauth-token\u003e\n  \u0026workspace=\u003cworkspace-name\u003e\n  \u0026agent_name=\u003cagent-name\u003e\n  \u0026ide_product_code=\u003cIDE-code\u003e\n  \u0026ide_build_number=\u003cIDE-build\u003e\n  \u0026folder=\u003cabsolute-path-to-a-project-folder\u003e\n```\n\nStarting from Toolbox 2.7, you can use `coder` as a shortcut in place of the full plugin ID. The URI can be simplified\nas:\n\n```text\njetbrains://gateway/coder?url=http(s)://\u003cyour-coder-deployment\u003e\n```\n\n| Query param      | \tDescription                                                                                       | Mandatory |\n|------------------|----------------------------------------------------------------------------------------------------|-----------|\n| url              | \tYour Coder deployment URL (encoded)                                                               | Yes       |\n| token            | \tCoder authentication token                                                                        | Yes       |\n| workspace        | \tName of the Coder workspace to connect to.                                                        | Yes       |\n| agent_name       | \tThe name of the agent with the workspace                                                          | No        |\n| ide_product_code | \tJetBrains IDE product code (e.g., GO for GoLand, RR for Rider)                                    | No        |\n| ide_build_number | \tSpecific build number or placeholder (see below) of the JetBrains IDE to install on the workspace | No        |\n| folder           | \tAbsolute path to the project folder to open in the remote IDE (URL-encoded)                       | No        |\n\n\u003e [!NOTE]\n\u003e If only a single agent is available, specifying an agent name is optional. However, if multiple agents exist, you must\n\u003e provide the\n\u003e agent name. Note that this version of the Coder Toolbox plugin does not automatically start agents if they\n\u003e are offline, so please ensure the selected agent is running before proceeding.\n\nIf `ide_product_code` and `ide_build_number` is missing, Toolbox will only open and highlight the workspace environment\npage. Coder Toolbox will attempt to start the workspace if it’s not already running; however, for the most reliable\nexperience, it’s recommended to ensure the workspace is running prior to initiating the connection.\n\n### Resolving IDE and Build Number\n\nWhen handling URIs, the Coder Toolbox plugin can resolve the IDE and its build number in several ways. This allows for\nflexible and automated IDE management.\n\nThe `ide_build_number` parameter supports the following values:\n\n- `latest_eap`:  Finds the latest available Early Access Program (EAP) version of the specified `ide_product_code`.\n    - **Fallback**: If no EAP version is found, it falls back to the latest available build (release or EAP). If no\n      builds are available at all, an error is shown.\n- `latest_release`: Finds the latest available stable release version of the specified `ide_product_code`.\n    - **Fallback**: If no release version is found, it falls back to the latest available build (release or EAP). If no\n      builds are available at all, an error is shown.\n- `latest_installed`: Uses the latest installed version of the IDE on the Coder workspace.\n    - **Fallback**: If no IDE is installed, it falls back to the latest available version for installation. If no builds\n      are available for installation, an error is shown.\n- A specific build number (e.g., `241.14494.240`):  The plugin will look for and use this exact build number.\n    - **Fallback**: If the specific build number is not found among installed or available IDEs, an error is shown.\n\nThe plugin first checks for installed IDEs on the remote workspace, then queries for all available (but not yet\ninstalled) IDEs. Based on the `ide_build_number` hint, it will either pick an already installed IDE or install a new\none.\n\n### Offline Mode\n\nThe Coder Toolbox plugin supports an offline mode, which allows it to function without an internet connection. This is\nparticularly useful in environments with restricted network access.\n\nTo enable offline mode, the JetBrains Toolbox must be launched with the `--offline-mode` flag. In this mode, the plugin\nrelies on local JSON files (`release.json` and `eap.json`) that you must provide in the plugin's data directory. The\nplugin does **not** cache these files automatically.\n\nWhile online, the plugin fetches the latest IDE feeds from JetBrains' data services. In offline mode, it bypasses these\nnetwork requests and uses the local files instead.\n\n#### Offline Mode File Schema and Location\n\nThe feed files must be placed in the plugin's data directory, which varies by operating system:\n\n- **macOS**: `~/Library/Application Support/coder-toolbox/`\n- **Linux**: `~/.local/share/coder-toolbox/`\n- **Windows**: `%LOCALAPPDATA%/coder-toolbox/`\n\nTwo files are used for the feeds:\n\n- `release.json`: Contains the stable release versions of JetBrains IDEs.\n- `eap.json`: Contains the Early Access Program (EAP) versions.\n\nYou can obtain these files by downloading them from the following URLs:\n\n- **Release feed\n  **: [https://data.services.jetbrains.com/products?type=release](https://data.services.jetbrains.com/products?type=release)\n- **EAP feed\n  **: [https://data.services.jetbrains.com/products?type=eap](https://data.services.jetbrains.com/products?type=eap)\n\nThe schema for these JSON files is a list of `IdeProduct` objects. Each `IdeProduct` contains a list of `IdeRelease`\nobjects.\n\n**Example `release.json` entry:**\n\n```json\n[\n  {\n    \"code\": \"RR\",\n    \"intellijProductCode\": \"RR\",\n    \"name\": \"RustRover\",\n    \"releases\": [\n      {\n        \"build\": \"241.14494.240\",\n        \"version\": \"2024.1\",\n        \"type\": \"release\",\n        \"date\": \"2024-04-03\"\n      }\n    ]\n  }\n]\n```\n\n**Example `eap.json` entry:**\n\n```json\n[\n  {\n    \"code\": \"RR\",\n    \"intellijProductCode\": \"RR\",\n    \"name\": \"RustRover\",\n    \"releases\": [\n      {\n        \"build\": \"241.14494.120\",\n        \"version\": \"2024.1 EAP 5\",\n        \"type\": \"eap\",\n        \"date\": \"2024-03-15\"\n      }\n    ]\n  }\n]\n```\n\nBy providing these files, the plugin can resolve and launch the correct IDE version even when it cannot access the\ninternet.\n\n## GPG Signature Verification\n\nThe Coder Toolbox plugin starting with version *0.5.0* implements a comprehensive GPG signature verification system to\nensure the authenticity and integrity of downloaded Coder CLI binaries. This security feature helps protect users from\nrunning potentially malicious or tampered binaries.\n\n### How It Works\n\n1. **Binary Download**: When connecting to a Coder deployment, the plugin downloads the appropriate Coder CLI binary for\n   the user's operating system and architecture from the deployment's `/bin/` endpoint.\n\n2. **Signature Download**: After downloading the binary, the plugin attempts to download the corresponding `.asc`\n   signature file from the same location. The signature file is named according to the binary (e.g.,\n   `coder-linux-amd64.asc` for `coder-linux-amd64`).\n\n3. **Fallback Signature Sources**: If the signature is not available from the deployment, the plugin can optionally fall\n   back to downloading signatures from `releases.coder.com`. This is controlled by the `fallbackOnCoderForSignatures`\n   setting.\n\n4. **GPG Verification**: The plugin uses the BouncyCastle library to verify the detached GPG signature against the\n   downloaded binary using Coder's trusted public key.\n\n5. **User Interaction**: If signature verification fails or signatures are unavailable, the plugin presents security\n   warnings to users, allowing them to accept the risk and continue or abort the operation.\n\n### Verification Process\n\nThe verification process involves several components:\n\n- **`GPGVerifier`**: Handles the core GPG signature verification logic using BouncyCastle\n- **`VerificationResult`**: Represents the outcome of verification (Valid, Invalid, Failed, SignatureNotFound)\n- **`CoderDownloadService`**: Manages downloading both binaries and their signatures\n- **`CoderCLIManager`**: Orchestrates the download and verification workflow\n\n### Configuration Options\n\nUsers can control signature verification behavior through plugin settings:\n\n- **`disableSignatureVerification`**: When enabled, skips all signature verification. This is useful for clients running\n  custom CLI builds, or customers with old deployment versions that don't have a signature published on\n  `releases.coder.com`.\n- **`fallbackOnCoderForSignatures`**: When enabled, allows downloading signatures from `releases.coder.com` if not\n  available from the deployment.\n\n### Security Considerations\n\n- The plugin embeds Coder's trusted public key in the plugin resources\n- Verification uses detached signatures, which are more secure than attached signatures\n- Users are warned about security risks when verification fails\n- The system gracefully handles cases where signatures are unavailable\n- All verification failures are logged for debugging purposes\n\n### Error Handling\n\nThe system handles various failure scenarios:\n\n- **Missing signatures**: Prompts user to accept risk or abort\n- **Invalid signatures**: Warns user about potential tampering and prompts user to accept risk or abort\n- **Verification failures**: Prompts user to accept risk or abort\n\nThis signature verification system ensures that users can trust the Coder CLI binaries they download through the plugin,\nprotecting against supply chain attacks and ensuring binary integrity.\n\n## Configuring and Testing workspace polling with HTTP \u0026 SOCKS5 Proxy\n\nThis section explains how to set up a local proxy and verify that\nthe plugin’s REST client works correctly when routed through it.\n\nWe’ll use [mitmproxy](https://mitmproxy.org/) for this — it can act as both an HTTP and SOCKS5 proxy with SSL\ninterception.\n\n### Install mitmproxy\n\n1. Follow the [mitmproxy Install Guide](https://docs.mitmproxy.org/stable/overview-installation/) steps for your OS.\n2. Start the proxy:\n\n```bash\nmitmweb --ssl-insecure --set stream_large_bodies=\"10m\"\n ```\n\n### Configure Mitmproxy\n\nmitmproxy can do HTTP and SOCKS5 proxying. To configure one or the other:\n\n1. Open http://127.0.0.1:8081 in browser;\n2. Navigate to `Options -\u003e Edit Options`\n3. Update the `Mode` field to `regular` in order to activate HTTP/HTTPS or to `socks5`\n4. Proxy authentication can be enabled by updating the `proxyauth` to `username:password`\n5. Alternatively you can run the following commands:\n\n```bash\nmitmweb --ssl-insecure --set stream_large_bodies=\"10m\" --mode regular --proxyauth proxyUsername:proxyPassword\nmitmweb --ssl-insecure --set stream_large_bodies=\"10m\" --mode socks5\n```\n\n### Configure Proxy in Toolbox\n\n1. Start Toolbox\n2. From Toolbox hexagonal menu icon go to `Settings -\u003e Proxy`\n3. There are two options, to use system proxy settings or to manually configure the proxy details.\n4. If we go manually, add `127.0.0.1` to the host and port `8080` for HTTP/HTTPS or `1080` for SOCKS5.\n5. Before authenticating to the Coder deployment we need to tell the plugin where can we find mitmproxy\n   certificates. In Coder's Settings page, set the `TLS CA path` to `~/.mitmproxy/mitmproxy-ca-cert.pem`\n\n\u003e [!NOTE]\n\u003e Coder Toolbox plugin handles only HTTP/HTTPS proxy authentication.\n\u003e SOCKS5 proxy authentication is currently not supported due to limitations\n\u003e described\n\u003e\nin: https://youtrack.jetbrains.com/issue/TBX-14532/Missing-proxy-authentication-settings#focus=Comments-27-12265861.0-0\n\n### Mitmproxy returns 502 Bad Gateway to the client\n\nWhen running traffic through mitmproxy, you may encounter 502 Bad Gateway errors that mention HTTP/2 protocol error: *\n*Received header value surrounded by whitespace**.\nThis happens because some upstream servers (including dev.coder.com) send back headers such as Content-Security-Policy\nwith leading or trailing spaces.\nWhile browsers and many HTTP clients accept these headers, mitmproxy enforces the stricter HTTP/2 and HTTP/1.1 RFCs,\nwhich forbid whitespace around header values.\nAs a result, mitmproxy rejects the response and surfaces a 502 to the client.\n\nThe workaround is to disable HTTP/2 in mitmproxy and force HTTP/1.1 on both the client and upstream sides. This avoids\nthe strict header validation path and allows\nmitmproxy to pass responses through unchanged. You can do this by starting mitmproxy with:\n\n```bash\nmitmproxy --set http2=false --set upstream_http_version=HTTP/1.1\n```\n\nThis ensures coder toolbox http client ↔ mitmproxy ↔ server connections all run over HTTP/1.1, preventing the whitespace\nerror.\n\n## Debugging and Reporting issues\n\nEnabling debug logging is essential for diagnosing issues with the Toolbox plugin, especially when SSH\nconnections to the remote environment fail — it provides detailed output that includes SSH negotiation\nand command execution, which is not visible at the default log level.\n\nIf you encounter a problem with Coder's JetBrains Toolbox plugin, follow the steps below to gather more\ninformation and help us diagnose and resolve it quickly.\n\n### Enable Debug Logging\n\nTo help with troubleshooting or to gain more insight into the behavior of the plugin and the SSH connection to\nthe workspace, you can increase the log level to _DEBUG_.\n\nSteps to enable debug logging:\n\n1. Open Toolbox\n\n2. Navigate to the Toolbox App Menu (hexagonal menu icon) \u003e Settings \u003e Advanced.\n\n3. In the screen that appears, select _DEBUG_ for the `Log level:` section.\n\n4. Hit the back button at the top.\n\nThere is no need to restart Toolbox, as it will begin logging at the __DEBUG__ level right away.\n\n\u003e [!WARNING]\n\u003e Toolbox does not persist log level configuration between restarts.\n\n#### Viewing the Logs\n\nOnce enabled, debug logs will be written to the Toolbox log files. You can access logs directly\nvia Toolbox App Menu \u003e About \u003e Show log files.\n\nAlternatively, you can generate a ZIP file using the Workspace action menu, available either on the main\nWorkspaces page in Coder or within the individual workspace view, under the option labeled _Collect logs_.\n\n### HTTP Request Logging\n\nThe Coder Toolbox plugin includes comprehensive HTTP request logging capabilities to help diagnose API communication\nissues with Coder deployments.\nThis feature allows you to monitor all HTTP requests and responses made by the plugin.\n\n#### Configuring HTTP Logging\n\nYou can configure HTTP logging verbosity through the Coder Settings page:\n\n1. Navigate to the Coder Workspaces page\n2. Click on the deployment action menu (three dots)\n3. Select \"Settings\"\n4. Find the \"HTTP logging level\" dropdown\n\n#### Available Logging Levels\n\nThe plugin supports four levels of HTTP logging verbosity:\n\n- **None**: No HTTP request/response logging (default)\n- **Basic**: Logs HTTP method, URL, and response status code\n- **Headers**: Logs basic information plus sanitized request and response headers\n- **Body**: Logs headers plus request and response body content\n\n#### Log Output Format\n\nHTTP logs follow this format:\n\n```\nrequest --\u003e GET https://your-coder-deployment.com/api/v2/users/me\nUser-Agent: Coder Toolbox/1.0.0 (darwin; amd64)\nCoder-Session-Token: \u003credacted\u003e\n\nresponse \u003c-- 200 https://your-coder-deployment.com/api/v2/users/me\nContent-Type: application/json\nContent-Length: 245\n\n{\"id\":\"12345678-1234-1234-1234-123456789012\",\"username\":\"coder\",\"email\":\"coder@example.com\"}\n```\n\n#### Use Cases\n\nHTTP logging is particularly useful for:\n\n- **API Debugging**: Diagnosing issues with Coder API communication\n- **Authentication Problems**: Troubleshooting token or certificate authentication issues\n- **Network Issues**: Identifying connectivity problems with Coder deployments\n- **Performance Analysis**: Monitoring request/response times and payload sizes\n\n#### Troubleshooting with HTTP Logs\n\nWhen reporting issues, include HTTP logs to help diagnose:\n\n1. **Authentication Failures**: Check for 401/403 responses and token headers\n2. **Network Connectivity**: Look for connection timeouts or DNS resolution issues\n3. **API Compatibility**: Verify request/response formats match expected API versions\n4. **Proxy Issues**: Monitor proxy authentication and routing problems\n\n## Coder Settings\n\nThe Coder Settings allows users to control CLI download behavior, SSH configuration, TLS parameters, and data\nstorage paths. The options can be configured from the plugin's main Workspaces page \u003e deployment action menu \u003e Settings.\n\n### CLI related settings\n\n- `Binary source` specifies the source URL or relative path from which the Coder CLI should be downloaded.\n  If a relative path is provided, it is resolved against the deployment domain.\n\n- `Enable downloads` allows automatic downloading of the CLI if the current version is missing or outdated.\n\n- `Binary directory` specifies the directory where CLI binaries are stored. If omitted, it defaults to the data\n  directory.\n\n- `Enable binary directory fallback` if enabled, falls back to the data directory when the specified binary\n  directory is not writable.\n\n- `Data directory` directory where plugin-specific data such as session tokens and binaries are stored if not\n  overridden by the binary directory setting.\n\n- `Header command` command that outputs additional HTTP headers. Each line of output must be in the format key=value.\n  The environment variable CODER_URL will be available to the command process.\n\n- `lastDeploymentURL` the last Coder deployment URL that Coder Toolbox successfully authenticated to.\n\n- `workspaceViewUrl` specifies the dashboard page full URL where users can view details about a workspace.\n  Helpful for customers that have their own in-house dashboards. Defaults to the Coder deployment workspace page.\n  This setting supports `$workspaceOwner` and `$workspaceName` as placeholders.\n\n- `workspaceCreateUrl` specifies the dashboard page full URL where users can create new workspaces.\n  Helpful for customers that have their own in-house dashboards. Defaults to the Coder deployment templates page.\n  This setting supports `$workspaceOwner` as placeholder with the replacing value being the username that logged in.\n\n### TLS settings\n\nThe following options control the secure communication behavior of the plugin with Coder deployment and its available\nAPI.\n\n- `TLS cert path` path to a client certificate file for TLS authentication with Coder deployment.\n  The certificate should be in X.509 PEM format.\n\n- `TLS key path` path to the private key corresponding to the TLS certificate from above.\n  The certificate should be in X.509 PEM format.\n\n- `TLS CA path` the path of a file containing certificates for an alternate certificate authority used to verify TLS\n  certs returned by the Coder deployment. The file should be in X.509 PEM format. This option can also be used to verify\n  proxy certificates.\n\n- `TLS alternate hostname` overrides the hostname used in TLS verification. This is useful when the hostname\n  used to connect to the Coder deployment does not match the hostname in the TLS certificate.\n\n### SSH settings\n\nThe following options control the SSH behavior of the Coder CLI.\n\n- `Disable autostart` adds the --disable-autostart flag to the SSH proxy command, preventing the CLI from keeping\n  workspaces constantly active.\n\n- `Enable SSH wildcard config` enables or disables wildcard entries in the SSH configuration, which allow generic\n  rules for matching multiple workspaces.\n\n- `SSH connnection timeout (seconds)` controls how long the SSH client will wait while trying to establish a TCP\n  connection to the remote host before giving up. Defaults to 0 seconds which means it uses the system’s TCP timeout\n  settings instead.\n\n- `SSH proxy log directory` directory where SSH proxy logs are written. Useful for debugging SSH connection issues.\n\n- `SSH network metrics directory` directory where network information used by the SSH proxy is stored.\n\n- `Extra SSH options` additional options appended to the SSH configuration. Can be used to customize the behavior of\n  SSH connections.\n\n### Saving Changes\n\nChanges made in the settings page are saved by clicking the Save button. Some changes, like toggling SSH wildcard\nsupport, may trigger regeneration of SSH configurations.\n\n### Security considerations\n\n\u003e [!IMPORTANT]\n\u003e Token authentication is required when TLS certificates are not configured.\n\n## Releasing\n\n1. Check that the changelog lists all the important changes.\n2. Update the `gradle.properties` version.\n3. Publish the resulting draft release after validating it.\n4. Merge the resulting changelog PR.\n5. **Compliance Reminder for auto-approval**  \n   JetBrains enabled auto-approval for the plugin, so we need to ensure we continue to meet the following requirements:\n    - do **not** use Kotlin experimental APIs.\n    - do **not** add any lambdas, handlers, or class handles to Java runtime hooks.\n   - do **not** create threads manually (including via libraries). If you must, ensure they are properly cleaned up in\n     the plugin's `CoderRemoteProvider#close()` method.\n    - do **not** bundle libraries that are already provided by Toolbox.\n    - do **not** perform any ill-intentioned actions.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoder%2Fcoder-jetbrains-toolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoder%2Fcoder-jetbrains-toolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoder%2Fcoder-jetbrains-toolbox/lists"}