Hey, I am surely mising something. When I am using Cursor in classic VS Code mode to make use of devcontainers. Currently, I am working on a web project and want to use the built-in browser to take screenshots and conduct testing. As long as I am on my machine running cursor on my local repo, I can use the browser with @browser just fine. But when I open the project in my devcontainer (“Rebuild and reopen in container”) Cursor tells me, it cannot access the browser MCP and I must install `cursor-ide-browser`.
I have all the necessary settings enabled to use the built-in browser and, as I said, locally, it works. But I cannot get it to work in the devcontainer.
to my user settings JSON but I still get this error in the Cursor IDE Browser Log:
[2026-05-08T05:26:27.449Z] [INFO] [general] Cursor Browser Automation extension activated
[2026-05-08T05:26:27.449Z] [INFO] [general] Using Browser MCP provider
[2026-05-08T05:26:27.450Z] [INFO] [general] Browser Automation MCP Provider initialized with direct execution
[2026-05-08T05:26:27.450Z] [INFO] [general] injectBrowserUIScript called
[2026-05-08T05:26:27.461Z] [ERROR] [general] Failed to inject browser UI script:: No browser view available
[2026-05-08T05:26:27.461Z] [ERROR] [general] Error: No browser view available
at mmn (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:41817:100190)
at vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:41817:101742
at wNm.invokeFunction (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:42043:1028)
at vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:41602:3251
at GNw (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:62:57350)
at oGe (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:62:57311)
at atm._tryExecuteCommand (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:41602:3103)
at atm.executeCommandImpl (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:41602:2286)
at atm.executeCommand (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:41602:1937)
at vpy.$executeCommand (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:38775:693)
at vJn._doInvokeHandler (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:41621:25436)
at vJn._invokeHandler (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:41621:25178)
at vJn._receiveRequest (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:41621:23701)
at vJn._receiveOneMessage (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:41621:22158)
at bRr.value (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:41621:20090)
at gt._deliver (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:55:2962)
at gt.fire (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:55:3283)
at lKi.fire (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:38798:12646)
at MessagePort.<anonymous> (vscode-file://vscode-app/Applications/Cursor.app/Contents/Resources/app/out/vs/workbench/workbench.desktop.main.js:46480:21768)
Hey Good news — that log line isn’t what’s blocking you.
“No browser view available” fires because the extension tries to inject its UI helper on activation, before any browser tab exists. It’s harmless, happens locally too, and clears once a tab is open.
Your remote.extensionKind override did the key part: the log shows “Cursor Browser Automation extension activated,” so it’s now running on the local (UI) side — exactly where it needs to be, since the browser view lives in the desktop app, not the container.
Two things to check:
In Settings → Tools & MCP, confirm that Browser Automation is enabled. This can tend to get disabled on updates in my experience so you should double check it even if you have enabled it in the past.
Because the browser runs in the local app, “localhost:PORT” points at your host, not the container. If your dev server runs inside the devcontainer, make sure that port is forwarded (Ports panel / forwardPorts).
If you still have trouble let us know and we’ll take another look.