Python Ruff extension is broken with Remote SSH session

Describe the Bug

Python Ruff extension is broken with Remote SSH session.

When I open the Remote session, the error message pops up, saying Ruff has problem with resolving settings. But the log says nothing.

So I Ruff formatter still works but it ignores my pyproject.toml config.

Everything works fine with local Cursor.
Also work fine with original VSCode with remote session.

Steps to Reproduce

settings.json

{
  "notebook.codeActionsOnSave": {
    "notebook.source.fixAll": "explicit",
    "notebook.source.organizeImports": "explicit"
  },
  "[python]": {
    "editor.formatOnSave": true,
    "editor.codeActionsOnSave": {
      "source.fixAll": "explicit",
      "source.organizeImports": "explicit"
    },
    "editor.defaultFormatter": "charliermarsh.ruff"
  },
  "python.testing.pytestEnabled": true,
  "python.testing.autoTestDiscoverOnSaveEnabled": true,
  "python.analysis.typeCheckingMode": "basic",
  "python.analysis.inlayHints.callArgumentNames": "all",
  "python.analysis.inlayHints.functionReturnTypes": true,
  "python.analysis.inlayHints.pytestParameters": true,
  "python.analysis.inlayHints.variableTypes": true,
  "cursorpyright.analysis.inlayHints.callArgumentNames": "all",
  "cursorpyright.analysis.inlayHints.functionReturnTypes": true,
  "cursorpyright.analysis.inlayHints.variableTypes": true,
  "cursorpyright.analysis.typeCheckingMode": "basic"
}

pyproject.toml

[project]
name = "mcp-servers"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
authors = [
    { name = "Bumsik Kim", email = "[email protected]" }
]
requires-python = ">=3.12"

[project.scripts]
mcp-servers = "mcp_servers.cmd.server:app"

[build-system]
requires = ["setuptools>=61"]
build-backend = "setuptools.build_meta"

[tool.setuptools]
packages = ["mcp_servers"]

[tool.mypy]
plugins = [
  "pydantic.mypy",
]

[[tool.mypy.overrides]]
module = ["secedgar.*"]
follow_untyped_imports = true

[tool.pyright]
exclude = ["**/*_pb2.py", "**/*_pb2_grpc.py"]

[tool.ruff]
line-length = 119
exclude = ["**/*_pb2.py", "**/*_pb2.pyi", "**/*_pb2_grpc.py"]

[tool.ruff.lint]
# List of rules: https://docs.astral.sh/ruff/rules/
select = [
  # pyflakes
  "F",
  # pycodestyle
  "E",
  # pycodestyle warnings
  "W",
  # isort
  "I",
  # Ruff-specific rules
  "RUF",
  # FastAPI
  "FAST",
  # flake8-async
  "ASYNC",
  # flake8-blind-except
  "BLE",
  # flake8-boolean-trap
  "FBT",
  # flake8-builtins
  "A",
  # flake8-comprehensions
  "C4",
  # flake8-datetimez
  "DTZ",
  # flake8-debugger
  "T10",
  # # flake8-errmsg
  # "EM",
  # # flake8-fixme
  # "FIX",
  # flake8-logging
  "LOG",
  # # flake8-logging-format
  # "G",
  # flake8-pie
  "PIE",
  # flake8-print
  "T20",
  # flake8-pyi
  "PYI",
  # flake8-pytest-style
  "PT",
  # flake8-raise
  "RSE",
  # flake8-return
  "RET",
  # flake8-simplify
  "SIM",
  # flake8-slots
  "SLOT",
  # # flake8-todos
  # "TD",
  # flake8-type-checking
  "TC",
  # flake8-unused-arguments
  "ARG",
  # flake8-use-pathlib
  "PTH",
  # tryceratops
  "TRY",
]

[tool.pytest.ini_options]
addopts = "--showlocals --tb=native -vv"
testpaths = [
    "tests"
]

[dependency-groups]
dev = [
]

Screenshots / Screen Recordings


Operating System

MacOS

Current Cursor Version (Menu → About Cursor → Copy)

Version: 1.1.7
VSCode Version: 1.96.2
Commit: 7111807980fa9c93aedd455ffa44b682c0dc1350
Date: 2025-07-01T07:26:02.358Z
Electron: 34.5.1
Chromium: 132.0.6834.210
Node.js: 20.19.0
V8: 13.2.152.41-electron.0
OS: Darwin arm64 24.5.0

Additional Information

local machine is macOS, but remote server is Ubuntu

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Oh I got it work.

After looking at more messages it seems that Ruff extension found Ruff in ~/miniconda3/, note the bundled one in ~/.cursor-server/extensions/charliermarsh.ruff-2025.24.0-linux-x64/bundled/libs/bin/ruff

I resolved by removing ruff in miniconda3.

But why the behavior is different from the original VSCode?

This topic was automatically closed 22 days after the last reply. New replies are no longer allowed.