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-server

There 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

FieldTypeDefaultDescription
settingsobjectEditor settings, written to the remote machine settings file.
serverDirstring.vscode-serverThe 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:

EditorserverDir
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: true

Connect 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 settings are resolved inside the workstation before the file is written.