In a DevContainer using anysphere.remote-containers SSH agent forwarding works fine for a while. After 15 to 20 minutes, the connection to the host’s agent gets lost and I obtain a Error connecting to agent: Connection refused when doing a ssh-add -l in the DevContainer.
I observed that the process listening to the socket in $SSH_AUTH_SOCK dies or that the counterpart in the extension host is not listening to the stdout of that process anymore.
Steps to Reproduce
Have the SSH agent running in the host system and have a key added to it. Open a DevContainer and check ssh-add -l for a while. After some time, the connection is lost.
Expected Behavior
The connection shall be kept open all the time the DevContainer is running.
Operating System
MacOS
Current Cursor Version (Menu → About Cursor → Copy)
Same issue here, but for me it happens within 1-2minutes consistently. I am using 1password’s ssh-agent. It used to work fine before switching to anypshere’s dev container extension today.
2025-07-10 16:17:07.531 [info] Server install command exit code: 0
2025-07-10 16:17:07.531 [info] Registering label formatter for dev-container*
2025-07-10 16:17:07.579 [info] [server install]: exit
2025-07-10 16:17:07.597 [info] Forwarding SSH agent /private/tmp/com.apple.launchd.qHDEdGOcrs/Listeners socket
2025-07-10 16:17:07.611 [info] Spawned process 22828: 'docker' 'exec' '-u' 'dannymanny' '-i' '7734731030b2d877d008755bd3b30c616bece96ba3ec7bc670424b9924a4a1e1' 'bash' '-c' '/home/dannymanny/.cursor-server/bin/3af362bc7c6ffdde67ee75328bc9be679d6f3a40/node -e "
const net = require('net');
const fs = require('fs');
process.stdin.pause();
const server = net.createServer(function (socket) {
console.error('Connection established');
socket.pipe(process.stdout);
process.stdin.pipe(socket);
});
server.listen({ path: '/tmp/cursor-remote-ssh-50030f2b-b7a8-4470-9561-8313eb8115a5.sock'});
server.on('close', function (hadError) {
console.error(hadError ? 'Remote close with error' : 'Remote close');
process.exit(hadError ? 1 : 0);
});
server.on('error', function (err) {
process.stderr.write(err && (err.stack || err.message) || String(err));
});
process.stdin.on('close', function (hadError) {
console.error(hadError ? 'Remote stdin close with error' : 'Remote stdin close');
process.exit(hadError ? 1 : 0);
});
process.on('uncaughtException', function (err) {
fs.writeSync(process.stderr.fd, 'error: ' + (err.stack || err.message) + '\n');
process.exit(1);
});
"'
2025-07-10 16:17:07.613 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-50030f2b-b7a8-4470-9561-8313eb8115a5.sock] created socket server in container and bound forwarder to it
2025-07-10 16:17:07.613 [info] Forwarding exec server locally via tcpForward method
2025-07-10 16:17:07.614 [info] Forwarding 127.0.0.1:38589 to 127.0.0.1:0 for container 7734731030b2d877d008755bd3b30c616bece96ba3ec7bc670424b9924a4a1e1
2025-07-10 16:17:07.614 [info] Spawned process 22829: '/Applications/Cursor.app/Contents/Frameworks/Cursor Helper (Plugin).app/Contents/MacOS/Cursor Helper (Plugin)' '/Users/dannymanny/.cursor/extensions/anysphere.remote-containers-1.0.10/dist/scripts/forwarder.js' 'port' '7734731030b2d877d008755bd3b30c616bece96ba3ec7bc670424b9924a4a1e1' '/home/dannymanny/.cursor-server/bin/3af362bc7c6ffdde67ee75328bc9be679d6f3a40/node' 'dannymanny' '127.0.0.1:0' '127.0.0.1:38589'
2025-07-10 16:17:08.039 [info] forwarderProcess stdout: forwarder: Forwarding (remote) 127.0.0.1:38589 to (local) 127.0.0.1:0 for container 7734731030b2d877d008755bd3b30c616bece96ba3ec7bc670424b9924a4a1e1
2025-07-10 16:17:08.048 [info] forwarderProcess stdout: forwarder: ====forwarderPort=58593====
2025-07-10 16:17:08.048 [info] Found forwarder port: 58593
2025-07-10 16:17:08.048 [info] [tcpForward][(remote) 127.0.0.1:58593 -> (local) 127.0.0.1:58593] Starting no-op local tunnel
2025-07-10 16:17:15.266 [error] [ssh_auth_socket][/tmp/cursor-remote-ssh-50030f2b-b7a8-4470-9561-8313eb8115a5.sock] forwarder process stderr: Connection established
2025-07-10 16:17:15.333 [error] [ssh_auth_socket][/tmp/cursor-remote-ssh-50030f2b-b7a8-4470-9561-8313eb8115a5.sock] forwarder process stderr: Connection established
2025-07-10 16:17:16.840 [info] forwarderProcess stdout: forwarder: handleClient subprocess exited with code 0 and signal null
2025-07-10 16:17:16.840 [info] forwarderProcess stdout: forwarder: handleClient subprocess closed
2025-07-10 16:17:17.438 [error] [ssh_auth_socket][/tmp/cursor-remote-ssh-50030f2b-b7a8-4470-9561-8313eb8115a5.sock] forwarder process stderr: error: Error: read ECONNRESET
at Pipe.onStreamRead (node:internal/stream_base_commons:218:20)
2025-07-10 16:17:17.448 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-50030f2b-b7a8-4470-9561-8313eb8115a5.sock] forwarder process stdout ended
2025-07-10 16:17:19.901 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-50030f2b-b7a8-4470-9561-8313eb8115a5.sock] SSH host stream ended
2025-07-10 16:17:19.901 [error] [ssh_auth_socket][/tmp/cursor-remote-ssh-50030f2b-b7a8-4470-9561-8313eb8115a5.sock] connection done
2025-07-10 16:17:21.116 [info] forwarderProcess stdout: forwarder: handleClient subprocess exited with code 0 and signal null
2025-07-10 16:17:21.117 [info] forwarderProcess stdout: forwarder: handleClient subprocess exited with code 0 and signal null
2025-07-10 16:17:21.117 [info] forwarderProcess stdout: forwarder: handleClient subprocess closed
2025-07-10 16:17:21.117 [info] forwarderProcess stdout: forwarder: handleClient subprocess closed
2025-07-10 16:17:47.209 [info] forwarderProcess stdout: forwarder: handleClient subprocess exited with code 0 and signal null
2025-07-10 16:17:47.209 [info] forwarderProcess stdout: forwarder: handleClient subprocess closed```
Hi @florian.lorenzen , @sbd , @someguynamedmike, and @dhawkins1234 – thank you for your patience as we worked through this issue. We just released version 1.0.15 of the Remote Containers extension, which has a completely new implementation for SSH socket forwarding to hopefully make it faster and more reliable. Could you try upgrading to the latest version of the extension?
Thanks! So far so good over here. I’ve been doing ssh -T [email protected] every few minutes and it’s consistently working. Before it stopped after about a minute.
This is a HUGE help. Thanks
2025-07-16 08:30:56.185 [info] [server install] stdout: cf658d8c9000f0e3e7cf3f0d: start
exitCode==0==
listeningOn==33737==
connectionToken==a4c83ea9-702e-4ea4-bd60-49f575144da4==
logFile==/home/vscode/.cursor-server/.a8e95743c5268be73767c46944a71f4465d05c90.log==
arch==aarch64==
remoteServerNodePath==/home/vscode/.cursor-server/bin/a8e95743c5268be73767c46944a71f4465d05c90/node==
platform==linux==
cf658d8c9000f0e3e7cf3f0d: end
2025-07-16 08:30:56.185 [info] Finished installing remote server in container. Parsing output...
2025-07-16 08:30:56.185 [info] Result map: {
"exitCode": "0",
"listeningOn": "33737",
"connectionToken": "a4c83ea9-702e-4ea4-bd60-49f575144da4",
"logFile": "/home/vscode/.cursor-server/.a8e95743c5268be73767c46944a71f4465d05c90.log",
"arch": "aarch64",
"remoteServerNodePath": "/home/vscode/.cursor-server/bin/a8e95743c5268be73767c46944a71f4465d05c90/node",
"platform": "linux"
}
2025-07-16 08:30:56.185 [info] Server install command exit code: 0
2025-07-16 08:30:56.185 [info] Registering label formatter for dev-container*
2025-07-16 08:30:56.190 [info] [server install]: exit
2025-07-16 08:30:56.201 [info] Forwarding SSH agent /Users/mike.nichie/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock socket
2025-07-16 08:30:56.202 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] Creating symlink /tmp/cursor-remote-ssh-69ac1e4d-d8d0-47c6-b6be-9602160db213.sock -> /tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock
2025-07-16 08:30:56.202 [info] Spawned process 22980: 'docker' 'exec' '-u' 'vscode' '2cddba925846ffe3e6b188d8131fd10035540d283ec33bfde447cffdcafa0670' 'ln' '-sf' '/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock' '/tmp/cursor-remote-ssh-69ac1e4d-d8d0-47c6-b6be-9602160db213.sock'
2025-07-16 08:30:56.202 [info] [symlink ssh_auth_sock]: Running command: docker
2025-07-16 08:30:56.288 [info] [symlink ssh_auth_sock]: Command completed with exit code 0
2025-07-16 08:30:56.289 [info] Forwarding (host) /Users/mike.nichie/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock to (container) /tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock for container 2cddba925846ffe3e6b188d8131fd10035540d283ec33bfde447cffdcafa0670
2025-07-16 08:30:56.289 [info] Spawned process 22981: '/Applications/Cursor.app/Contents/Frameworks/Cursor Helper (Plugin).app/Contents/MacOS/Cursor Helper (Plugin)' '/Users/mike.nichie/.cursor/extensions/anysphere.remote-containers-1.0.15/dist/scripts/forwarder.js' 'socket' '2cddba925846ffe3e6b188d8131fd10035540d283ec33bfde447cffdcafa0670' '/home/vscode/.cursor-server/bin/a8e95743c5268be73767c46944a71f4465d05c90/node' 'vscode' '/Users/mike.nichie/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock' '/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock'
2025-07-16 08:30:56.289 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] created socket server in container and bound forwarder to it
2025-07-16 08:30:56.289 [info] Forwarding exec server locally via tcpForward method
2025-07-16 08:30:56.289 [info] Forwarding remote port 127.0.0.1:8000 to 8000
2025-07-16 08:30:56.289 [info] Forwarding remote port 127.0.0.1:8001 to 8001
2025-07-16 08:30:56.289 [info] Forwarding remote port 127.0.0.1:35729 to 35729
2025-07-16 08:30:56.290 [info] Forwarding 127.0.0.1:33737 to 127.0.0.1:0 for container 2cddba925846ffe3e6b188d8131fd10035540d283ec33bfde447cffdcafa0670
2025-07-16 08:30:56.290 [info] Spawned process 22982: '/Applications/Cursor.app/Contents/Frameworks/Cursor Helper (Plugin).app/Contents/MacOS/Cursor Helper (Plugin)' '/Users/mike.nichie/.cursor/extensions/anysphere.remote-containers-1.0.15/dist/scripts/forwarder.js' 'port' '2cddba925846ffe3e6b188d8131fd10035540d283ec33bfde447cffdcafa0670' '/home/vscode/.cursor-server/bin/a8e95743c5268be73767c46944a71f4465d05c90/node' 'vscode' '127.0.0.1:0' '127.0.0.1:33737'
2025-07-16 08:30:56.392 [info] [tunnel-forwarding] stdout: forwarder: Forwarding (remote) 127.0.0.1:33737 to (local) 127.0.0.1:0
2025-07-16 08:30:56.395 [info] [tunnel-forwarding] stdout: forwarder: ====forwarderPort=52644====
2025-07-16 08:30:56.395 [info] Found forwarder port: 52644
2025-07-16 08:30:56.395 [info] [tcpForward][(remote) 127.0.0.1:52644 -> (local) 127.0.0.1:52644] Starting no-op local tunnel
2025-07-16 08:30:56.395 [info] Returning resolved authority
2025-07-16 08:30:56.397 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: ====socketForward=success====
2025-07-16 08:30:56.517 [info] [tunnel-forwarding] stdout: forwarder: handleClient stderr: Connection established
2025-07-16 08:30:56.741 [info] [tunnel-forwarding] stdout: forwarder: handleClient stderr: Connection established
2025-07-16 08:31:01.929 [info] Forwarding 0.0.0.0:35729 to 127.0.0.1:35729 for container 2cddba925846ffe3e6b188d8131fd10035540d283ec33bfde447cffdcafa0670
2025-07-16 08:31:01.929 [info] Spawned process 23039: '/Applications/Cursor.app/Contents/Frameworks/Cursor Helper (Plugin).app/Contents/MacOS/Cursor Helper (Plugin)' '/Users/mike.nichie/.cursor/extensions/anysphere.remote-containers-1.0.15/dist/scripts/forwarder.js' 'port' '2cddba925846ffe3e6b188d8131fd10035540d283ec33bfde447cffdcafa0670' '/home/vscode/.cursor-server/bin/a8e95743c5268be73767c46944a71f4465d05c90/node' 'vscode' '127.0.0.1:35729' '0.0.0.0:35729'
2025-07-16 08:31:02.002 [info] [tunnel-forwarding] stdout: forwarder: Forwarding (remote) 0.0.0.0:35729 to (local) 127.0.0.1:35729
2025-07-16 08:31:02.005 [info] [tunnel-forwarding] stdout: forwarder: ====forwarderPort=35729====
2025-07-16 08:31:02.005 [info] Found forwarder port: 35729
2025-07-16 08:31:02.005 [info] [tcpForward][(remote) 127.0.0.1:35729 -> (local) 127.0.0.1:35729] Starting no-op local tunnel
2025-07-16 08:31:02.007 [info] Forwarding 127.0.0.1:8000 to 127.0.0.1:8000 for container 2cddba925846ffe3e6b188d8131fd10035540d283ec33bfde447cffdcafa0670
2025-07-16 08:31:02.007 [info] Spawned process 23048: '/Applications/Cursor.app/Contents/Frameworks/Cursor Helper (Plugin).app/Contents/MacOS/Cursor Helper (Plugin)' '/Users/mike.nichie/.cursor/extensions/anysphere.remote-containers-1.0.15/dist/scripts/forwarder.js' 'port' '2cddba925846ffe3e6b188d8131fd10035540d283ec33bfde447cffdcafa0670' '/home/vscode/.cursor-server/bin/a8e95743c5268be73767c46944a71f4465d05c90/node' 'vscode' '127.0.0.1:8000' '127.0.0.1:8000'
2025-07-16 08:31:02.084 [info] [tunnel-forwarding] stdout: forwarder: Forwarding (remote) 127.0.0.1:8000 to (local) 127.0.0.1:8000
2025-07-16 08:31:02.086 [info] [tunnel-forwarding] stdout: forwarder: ====forwarderPort=8000====
2025-07-16 08:31:02.086 [info] Found forwarder port: 8000
2025-07-16 08:31:02.086 [info] [tcpForward][(remote) 127.0.0.1:8000 -> (local) 127.0.0.1:8000] Starting no-op local tunnel
2025-07-16 08:31:02.088 [info] Forwarding 127.0.0.1:8001 to 127.0.0.1:8001 for container 2cddba925846ffe3e6b188d8131fd10035540d283ec33bfde447cffdcafa0670
2025-07-16 08:31:02.088 [info] Spawned process 23059: '/Applications/Cursor.app/Contents/Frameworks/Cursor Helper (Plugin).app/Contents/MacOS/Cursor Helper (Plugin)' '/Users/mike.nichie/.cursor/extensions/anysphere.remote-containers-1.0.15/dist/scripts/forwarder.js' 'port' '2cddba925846ffe3e6b188d8131fd10035540d283ec33bfde447cffdcafa0670' '/home/vscode/.cursor-server/bin/a8e95743c5268be73767c46944a71f4465d05c90/node' 'vscode' '127.0.0.1:8001' '127.0.0.1:8001'
2025-07-16 08:31:02.169 [info] [tunnel-forwarding] stdout: forwarder: Forwarding (remote) 127.0.0.1:8001 to (local) 127.0.0.1:8001
2025-07-16 08:31:02.171 [info] [tunnel-forwarding] stdout: forwarder: ====forwarderPort=8001====
2025-07-16 08:31:02.171 [info] Found forwarder port: 8001
2025-07-16 08:31:02.171 [info] [tcpForward][(remote) 127.0.0.1:8001 -> (local) 127.0.0.1:8001] Starting no-op local tunnel
2025-07-16 08:31:02.373 [info] [tunnel-forwarding] stdout: forwarder: handleClient stderr: Connection established
2025-07-16 08:31:02.668 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Connection established 0
2025-07-16 08:31:02.995 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Socket end 0
2025-07-16 08:31:02.996 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Socket close 0
2025-07-16 08:31:02.996 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Connection not found: {"i":0,"end":true}
2025-07-16 08:31:08.387 [info] [tunnel-forwarding] stdout: forwarder: handleClient stderr: Remote close
2025-07-16 08:31:08.401 [info] [tunnel-forwarding] stdout: forwarder: handleClient subprocess exited with code 0 and signal null
2025-07-16 08:31:08.402 [info] [tunnel-forwarding] stdout: forwarder: handleClient subprocess closed
2025-07-16 08:33:29.140 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Connection established 1
2025-07-16 08:33:29.475 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Socket end 1
2025-07-16 08:33:29.476 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Socket close 1
2025-07-16 08:33:29.477 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Connection not found: {"i":1,"end":true}
2025-07-16 08:33:32.077 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Connection established 2
2025-07-16 08:33:32.410 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Socket end 2
2025-07-16 08:33:32.412 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Socket close 2
2025-07-16 08:33:32.414 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Connection not found: {"i":2,"end":true}
2025-07-16 08:34:17.409 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Connection established 3
2025-07-16 08:34:17.752 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Socket end 3
2025-07-16 08:34:17.753 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Socket close 3
2025-07-16 08:34:29.602 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Connection established 4
2025-07-16 08:34:29.917 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Socket end 4
Socket close 4
2025-07-16 08:34:47.343 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Connection established 5
2025-07-16 08:34:47.668 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Socket end 5
2025-07-16 08:34:47.668 [info] [ssh_auth_socket][/tmp/cursor-remote-ssh-c9937344-e4d7-403e-962c-62a06aa44adf.sock] forwarder process stdout: forwarder: handleClient stderr: Socket close 5