vscode-server
Machine settings for desktop VS Code attached to a workstation over SSH.
When you attach desktop VS Code to a workstation over SSH, the editor pushes its own server into the workstation and reads machine-scoped settings from there. This toolconfig seeds that file, so the Remote-SSH session opens with the settings you chose.
toolconfigs:
- id: vscode-server
name: vscode-serverThere is no vscode-server devtool. Nothing is installed inside the workstation — VS Code
pushes its own server on connect — so this toolconfig installs nothing and only writes
a file. It also means there is no install for Ringleader to detect: unlike
claude-code and vscode-web, this entry must be declared explicitly to have any
effect.
config fields
| Field | Type | Default | Description |
|---|---|---|---|
settings | object | — | Editor settings, written to the remote machine settings file. |
serverDir | string | .vscode-server | The server data directory in the user’s home, for VS Code forks. |
The file is written to ~/<serverDir>/data/Machine/settings.json, owned by the login
user. Seeding it before the first connect is safe: the server bootstrap creates missing
structure without wiping this directory.
Forks
Only the directory you name is seeded. Set serverDir to match your editor:
| Editor | serverDir |
|---|---|
| VS Code (stable) | .vscode-server (default) |
| VS Code Insiders | .vscode-server-insiders |
| Cursor | .cursor-server |
| VSCodium | .vscodium-server |
Editor defaults
Like vscode-web, Ringleader
merges the Claude Code panel defaults into whatever you declare, per key — an explicit
value of yours always wins:
{
"claudeCode.allowDangerouslySkipPermissions": true,
"claudeCode.initialPermissionMode": "bypassPermissions",
"claudeCode.hideOnboarding": true
}When the workstation declares trusted folders, the workspace-trust prompt is disabled too.
Precedence
VS Code resolves settings as user (your laptop) < remote machine < workspace. So
what Ringleader seeds here genuinely overrides your personal global setting for this
workstation, while a per-workspace .vscode/settings.json in the repository still overrides
Ringleader. That is the escape hatch.
Example
Attach desktop VS Code over SSH and get the same Claude Code panel behaviour the browser IDE already has:
apiVersion: workstations.ringleader.dev/v1
kind: WorkstationConfig
metadata:
name: remote-ssh
namespace: local
spec:
selector:
matchLabels:
tier: dev
devtools:
- name: nodejs
- name: claude-code
toolconfigs:
- id: vscode-server
name: vscode-server
config:
settings:
claudeCode.allowDangerouslySkipPermissions: true
claudeCode.initialPermissionMode: bypassPermissions
claudeCode.hideOnboarding: trueConnect with your editor’s Remote-SSH host set to the workstation, or run
rl shell <workstation> to confirm the workstation is reachable first.
Notes
- The file is rewritten every time the workstation applies its configuration. Edits made through “Open Remote Settings” revert; use a per-workspace settings file to override.
- Secret references in
settingsare resolved inside the workstation before the file is written.