DEV Container not opening, constantly loading

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Dev container is built, but not opening, constantly loading.

Devcontainer.json
{

  "name": "Go Development",

  "dockerFile": "Dockerfile",

  "context": "..",

  // Configure tool-specific properties

  "customizations": {

    "vscode": {

      // Extensions to install automatically when container is created

      "extensions": [

        // Go language support

        "golang.go",

        // Protocol Buffers support

        "zxh404.vscode-proto3",

        "pbkit.vscode-pbkit",

        // Docker support

        "ms-azuretools.vscode-docker",

        // Code quality

        "streetsidesoftware.code-spell-checker",

        // Makefile support

        "ms-vscode.makefile-tools",

        // YAML support (for docker-compose, configs)

        "redhat.vscode-yaml",

        // Markdown support

        "yzhang.markdown-all-in-one",

        "DavidAnson.vscode-markdownlint",

        "bierner.markdown-mermaid",

        // GitHub Copilot (optional - requires license)

        "github.copilot",

        "github.copilot-chat"

      ],

      // Workspace settings applied in container

      "settings": {

        // Go settings

        "go.useLanguageServer": true,

        "go.lintTool": "golangci-lint",

        "go.lintOnSave": "workspace",

        "go.testOnSave": false,

        "go.coverOnSave": false,

        "go.formatTool": "gofmt",

        "go.toolsManagement.autoUpdate": true,

        "[go]": {

          "editor.formatOnSave": true,

          "editor.codeActionsOnSave": {

            "source.organizeImports": "explicit"

          }

        },

        // Protobuf settings

        "protoc": {

          "path": "/usr/local/bin/protoc",

          "options": [

            "--proto_path=${workspaceFolder}/proto"

          ]

        },

        // General editor settings

        "editor.formatOnSave": true,

        "editor.formatOnPaste": false,

        "editor.rulers": [

          100,

          120

        ],

        "editor.tabSize": 2,

        "editor.insertSpaces": false,

        "files.eol": "\n",

        "files.insertFinalNewline": true,

        "files.trimTrailingWhitespace": true,

        // Terminal settings

        "terminal.integrated.defaultProfile.linux": "bash",

        "terminal.integrated.profiles.linux": {

          "bash": {

            "path": "/bin/bash",

            "icon": "terminal-bash"

          }

        },

        // File associations

        "files.associations": {

          "*.proto": "proto3",

          "Makefile": "makefile",

          "*.mk": "makefile",

          "docker-compose*.yml": "dockercompose"

        },

        // Files to exclude from explorer

        "files.exclude": {

          "**/.git": true

        },

        // Git settings

        "git.enableSmartCommit": true,

        "git.confirmSync": false,

        "git.autofetch": true,

        // Markdown settings

        "markdown.extension.toc.levels": "2..6",

        "[markdown]": {

          "editor.formatOnSave": true,

          "editor.defaultFormatter": "yzhang.markdown-all-in-one"

        },

        // YAML settings

        "[yaml]": {

          "editor.insertSpaces": true,

          "editor.tabSize": 2,

          "editor.autoIndent": "advanced"

        }

      }

    }

  },

  // Use 'forwardPorts' to make a list of ports inside the container available locally

  "forwardPorts": [

    50051 // gRPC upload service port

  ],

  // Port attributes for better labeling

  "portsAttributes": {

    "50051": {

      "label": "Upload Service",

      "onAutoForward": "notify"

    }

  },

  // Features to add to the dev container

  "features": {

    "
": {

      "version": "latest"

    },

    "
": {

      "version": "latest"

    }

  },

  // Commands to run after container is created

  "postCreateCommand": "go mod download && go install google.golang.org/protobuf/cmd/protoc-gen-go@latest && go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest",

  // Commands to run when container starts

  "postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder} || true && git config --global core.editor 'code --wait'",

  // Comment out to connect as root instead

  "remoteUser": "vscode",

  // Set environment variables

  "remoteEnv": {

    "GOPATH": "/home/vscode/go",

    "PATH": "${containerEnv:PATH}:/home/vscode/go/bin"

  },

  // Mount the workspace folder and additional volumes

  "mounts": [

    "source=${localEnv:HOME}/.ssh,target=/home/vscode/.ssh,type=bind,consistency=cached"

  ],

  // Fix SSH key permissions after container starts

  "postAttachCommand": "chmod 700 ~/.ssh 2>/dev/null || true; find ~/.ssh -type f -exec chmod 600 {} \\; 2>/dev/null || true"

}

Dockerfile

FROM mcr.microsoft.com/devcontainers/go:1.25-bookworm



# Avoid warnings by switching to noninteractive

ENV DEBIAN_FRONTEND=noninteractive




# Install only what's NOT already in the base image:

# Already included: git, curl, wget, vim, jq, make, gcc, build-essential, golangci-lint, gopls, delve

# We only need to add: protoc and gRPC-specific tools




# Install latest protoc (apt version might be old)

ARG PROTOC_VERSION=25.1

RUN ARCH=$(uname -m) \

    && if [ "$ARCH" = "x86_64" ]; then ARCH="x86_64"; elif [ "$ARCH" = "aarch64" ]; then ARCH="aarch_64"; fi \

    && curl -LO "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-${ARCH}.zip" \

    && unzip "protoc-${PROTOC_VERSION}-linux-${ARCH}.zip" -d /usr/local \

    && rm "protoc-${PROTOC_VERSION}-linux-${ARCH}.zip" \

    && chmod +x /usr/local/bin/protoc




# Install protoc plugins for Go (will be reinstalled via postCreateCommand for project-specific versions)

RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@latest \

    && go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest




# Install golangci-lint v2.6.0 explicitly (overrides version from base image)

ARG GOLANGCI_LINT_VERSION=2.6.0

RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v${GOLANGCI_LINT_VERSION}




# Verify installations (useful for debugging)

RUN echo "=== Installed Tool Versions ===" \

    && go version \

    && protoc --version \

    && golangci-lint version \

    && make --version \

    && git --version \

    && echo "=========================="




# Switch back to dialog for any ad-hoc use of apt-get

ENV DEBIAN_FRONTEND=dialog




# Default user is already 'vscode' in MS devcontainer image

# WORKDIR is already set to /workspaces in MS devcontainer image

Steps to Reproduce

Run DevContainer: Rebuild without cache, open in Container command

Expected Behavior

Dev Container opened

Screenshots / Screen Recordings

Operating System

Linux

Current Cursor Version (Menu → About Cursor → Copy)

Version: 2.0.77 (user setup)
VSCode Version: 1.99.3
Commit: ba90f2f88e4911312761abab9492c42442117cf0
Date: 2025-11-13T23:10:43.113Z
Electron: 37.7.0
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Windows_NT x64 10.0.26100

Additional Information

Repo runs from WSL Ubuntu 24.04. Also tried WSL Ubuntu 22.04, did not work. Main operating system Windows.

Does this stop you from using Cursor

Yes - Cursor is unusable

1 Like

Hello,
same problem with newest Cursor (2.1.17), but found similar problem Devctonainer issues on 2.0.75 - #11 by LordWaffleman
so after downgrade docker from 29.0.2 to 28.5.2 (docker-ce-28.5.2, docker-ce-cli-28.5.2) helps.

Problem is probably in extension for dev containers.

1 Like

Please fix this ASAP

This render Cursor unusable when developing with Dev Containers

Hi all, thank you for this bug report. Could you try upgrading to version 1.0.28 of the Anysphere Remote Containers extension? This version includes a newer version of the devcontainers CLI which should fix this issue.