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