VS Code / Cursor Node Skill
Control a VS Code or Cursor IDE remotely through the OpenClaw Node protocol.
Related
Prerequisites
- Extension
openclaw-node-vscode installed and connected (status bar 🟢)
- Node visible in
nodes status
- Commands in Gateway's
allowCommands whitelist
Invocation Pattern
nodes invoke --node "<name>" --invokeCommand "<cmd>" --invokeParamsJson '{"key":"val"}'
Both invokeTimeoutMs (Gateway internal) and timeoutMs (HTTP layer, must be larger) are required for long operations.
Timeout guide:
| Type |
invokeTimeoutMs |
timeoutMs |
| File/editor/lang |
15000 |
20000 |
| Git |
30000 |
35000 |
| Test |
60000 |
65000 |
| Agent plan/ask |
180000 |
185000 |
| Agent run |
300000 |
305000 |
Command Categories
| Category |
Prefix |
Key Commands |
Reference |
| File |
vscode.file.* |
read, write, edit, delete |
commands/file.md |
| Directory |
vscode.dir.* |
list |
commands/file.md |
| Language |
vscode.lang.* |
definition, references, hover, symbols, rename, codeActions, format |
commands/language.md |
| Editor |
vscode.editor.* |
active, openFiles, selections |
commands/editor.md |
| Diagnostics |
vscode.diagnostics.* |
get |
commands/editor.md |
| Git |
vscode.git.* |
status, diff, log, blame, stage, commit, stash |
commands/git.md |
| Test |
vscode.test.* |
list, run, results |
commands/test-debug.md |
| Debug |
vscode.debug.* |
launch, stop, breakpoint, evaluate, stackTrace, variables |
commands/test-debug.md |
| Terminal |
vscode.terminal.* |
run (disabled by default) |
commands/terminal.md |
| Agent |
vscode.agent.* |
status, run, setup (Cursor only) |
commands/agent.md |
| Workspace |
vscode.workspace.* |
info |
commands/editor.md |
Quick Examples
Read a file
nodes invoke --node "my-vscode" --invokeCommand "vscode.file.read" --invokeParamsJson '{"path":"src/main.ts"}'
→ { content, totalLines, language }
Find all references
nodes invoke --node "my-vscode" --invokeCommand "vscode.lang.references" --invokeParamsJson '{"path":"src/main.ts","line":10,"character":5}'
→ { locations: [{ path, line, character }] }
Git status + commit
nodes invoke --node "my-vscode" --invokeCommand "vscode.git.status"
→ { branch, staged, modified, untracked, ahead, behind }
nodes invoke --node "my-vscode" --invokeCommand "vscode.git.stage" --invokeParamsJson '{"paths":["src/main.ts"]}'
nodes invoke --node "my-vscode" --invokeCommand "vscode.git.commit" --invokeParamsJson '{"message":"fix: resolve type error"}'
Delegate to Cursor Agent
nodes invoke --node "my-vscode" --invokeCommand "vscode.agent.run" --invokeParamsJson '{"prompt":"Add error handling to all API endpoints","mode":"plan"}' --invokeTimeoutMs 180000 --timeoutMs 185000
→ { output, exitCode }
Common Workflows
See references/workflows.md for detailed step-by-step workflows:
- Fix a type error
- Safe cross-file refactor
- Delegate complex task to Cursor Agent
Error Handling
| Error |
Cause |
Solution |
node command not allowed |
Not in Gateway whitelist |
Add to gateway.nodes.allowCommands |
node not found |
Extension not connected |
Check extension status bar |
timeout |
Operation too long |
Increase both timeout params |
path traversal blocked |
Path outside workspace |
Use relative paths only |
read-only mode |
Extension in read-only |
Disable openclaw.readOnly setting |
Security
- All paths are relative to workspace root — absolute paths and
../ blocked
- Writes respect
readOnly and confirmWrites extension settings
- Terminal disabled by default, whitelist-only when enabled
- Each device has unique Ed25519 identity, must be approved by Gateway
1---2name: vscode-node3description: Operate on code through a VS Code/Cursor IDE connected as an OpenClaw Node. Provides 40+ commands for file operations, language intelligence, git, testing, debugging, and Cursor Agent CLI integration. Use when you need to read/write/edit code, navigate definitions/references, run tests, debug, or delegate coding tasks to Cursor Agent.4---5
6# VS Code / Cursor Node Skill
7
8Control a VS Code or Cursor IDE remotely through the OpenClaw Node protocol.
9
10## Related
11
12- **[OpenClaw Node for VS Code](https://marketplace.visualstudio.com/items?itemName=xiaoyaner.openclaw-node-vscode)** — The VS Code/Cursor extension you need to install (required)
13- **[cursor-ide-agent](https://clawhub.ai/xiaoyaner0201/cursor-ide-agent)** — Combined skill with both CLI and Node paths (install this instead if you also use Cursor CLI)
14- **Source**: [github.com/xiaoyaner-home/openclaw-vscode](https://github.com/xiaoyaner-home/openclaw-vscode)
15
16## Prerequisites
17
18- Extension `openclaw-node-vscode` installed and connected (status bar 🟢)
19- Node visible in `nodes status`
20- Commands in Gateway's `allowCommands` whitelist
21
22## Invocation Pattern
23
24```
25nodes invoke --node "<name>" --invokeCommand "<cmd>" --invokeParamsJson '{"key":"val"}'
26```
27
28Both `invokeTimeoutMs` (Gateway internal) and `timeoutMs` (HTTP layer, must be larger) are required for long operations.
29
30**Timeout guide:**
31
32| Type | invokeTimeoutMs | timeoutMs |
33|------|----------------|-----------|
34| File/editor/lang | 15000 | 20000 |
35| Git | 30000 | 35000 |
36| Test | 60000 | 65000 |
37| Agent plan/ask | 180000 | 185000 |
38| Agent run | 300000 | 305000 |
39
40## Command Categories
41
42| Category | Prefix | Key Commands | Reference |
43|----------|--------|-------------|-----------|
44| **File** | `vscode.file.*` | read, write, edit, delete | [commands/file.md](references/commands/file.md) |
45| **Directory** | `vscode.dir.*` | list | [commands/file.md](references/commands/file.md) |
46| **Language** | `vscode.lang.*` | definition, references, hover, symbols, rename, codeActions, format | [commands/language.md](references/commands/language.md) |
47| **Editor** | `vscode.editor.*` | active, openFiles, selections | [commands/editor.md](references/commands/editor.md) |
48| **Diagnostics** | `vscode.diagnostics.*` | get | [commands/editor.md](references/commands/editor.md) |
49| **Git** | `vscode.git.*` | status, diff, log, blame, stage, commit, stash | [commands/git.md](references/commands/git.md) |
50| **Test** | `vscode.test.*` | list, run, results | [commands/test-debug.md](references/commands/test-debug.md) |
51| **Debug** | `vscode.debug.*` | launch, stop, breakpoint, evaluate, stackTrace, variables | [commands/test-debug.md](references/commands/test-debug.md) |
52| **Terminal** | `vscode.terminal.*` | run (disabled by default) | [commands/terminal.md](references/commands/terminal.md) |
53| **Agent** | `vscode.agent.*` | status, run, setup (Cursor only) | [commands/agent.md](references/commands/agent.md) |
54| **Workspace** | `vscode.workspace.*` | info | [commands/editor.md](references/commands/editor.md) |
55
56## Quick Examples
57
58### Read a file
59```
60nodes invoke --node "my-vscode" --invokeCommand "vscode.file.read" --invokeParamsJson '{"path":"src/main.ts"}'
61→ { content, totalLines, language }
62```
63
64### Find all references
65```
66nodes invoke --node "my-vscode" --invokeCommand "vscode.lang.references" --invokeParamsJson '{"path":"src/main.ts","line":10,"character":5}'
67→ { locations: [{ path, line, character }] }
68```
69
70### Git status + commit
71```
72nodes invoke --node "my-vscode" --invokeCommand "vscode.git.status"
73→ { branch, staged, modified, untracked, ahead, behind }
74
75nodes invoke --node "my-vscode" --invokeCommand "vscode.git.stage" --invokeParamsJson '{"paths":["src/main.ts"]}'
76nodes invoke --node "my-vscode" --invokeCommand "vscode.git.commit" --invokeParamsJson '{"message":"fix: resolve type error"}'
77```
78
79### Delegate to Cursor Agent
80```
81nodes invoke --node "my-vscode" --invokeCommand "vscode.agent.run" --invokeParamsJson '{"prompt":"Add error handling to all API endpoints","mode":"plan"}' --invokeTimeoutMs 180000 --timeoutMs 185000
82→ { output, exitCode }
83```
84
85## Common Workflows
86
87See [references/workflows.md](references/workflows.md) for detailed step-by-step workflows:
88- Fix a type error
89- Safe cross-file refactor
90- Delegate complex task to Cursor Agent
91
92## Error Handling
93
94| Error | Cause | Solution |
95|-------|-------|----------|
96| `node command not allowed` | Not in Gateway whitelist | Add to `gateway.nodes.allowCommands` |
97| `node not found` | Extension not connected | Check extension status bar |
98| `timeout` | Operation too long | Increase both timeout params |
99| `path traversal blocked` | Path outside workspace | Use relative paths only |
100| `read-only mode` | Extension in read-only | Disable `openclaw.readOnly` setting |
101
102## Security
103
104- All paths are **relative to workspace root** — absolute paths and `../` blocked
105- Writes respect `readOnly` and `confirmWrites` extension settings
106- Terminal disabled by default, whitelist-only when enabled
107- Each device has unique Ed25519 identity, must be approved by Gateway