Meta's Pyrefly sabotages competing Python extensions without telling you
FossAndFurious
50 points
24 comments
May 02, 2026
Related Discussions
Found 5 related stories in 75.7ms across 8,303 title embeddings via pgvector HNSW
- Pyrefly v1.0 is here (fast type checker and language server for Python) ocamoss · 31 pts · May 13, 2026 · 55% similar
- "Warn about PyPy being unmaintained" networked · 63 pts · March 08, 2026 · 50% similar
- Telnyx package compromised on PyPI overflowy · 84 pts · March 27, 2026 · 48% similar
- Telnyx package compromised on PyPI ramimac · 95 pts · March 27, 2026 · 47% similar
- Executable installer will stop being released with Python 3.16 ankitg12 · 38 pts · May 03, 2026 · 44% similar
Discussion Highlights (10 comments)
FossAndFurious
Pyrefly is Meta's new Python type checker and VS Code extension, released earlier this year. While auditing the VSIX before installing it, I found that on activation it silently writes `disableLanguageServices = true` to the user's global settings for three named extensions: basedpyright, windsurfpyright, and cursorpyright. The write uses `ConfigurationTarget.Global`, so it affects all workspaces. There is no `deactivate()` cleanup, so the setting persists after Pyrefly is uninstalled. This was verified by live reproduction: installed Pyrefly alongside basedpyright, opened a Python file, and observed the key appear in `settings.json`. Uninstalled Pyrefly — key remained, basedpyright still broken. The code is in plain TypeScript in the public repo (`lsp/src/extension-interop.ts`), added December 2025. This isn't obfuscated or hidden — it just hasn't been noticed. Bug report with full details, source references, and reproduction steps: https://github.com/facebook/pyrefly/issues/3292 The fix is straightforward: ask the user before touching settings they didn't set, and restore them in `deactivate()`.
jqpabc123
Once again; if it has a Meta label, it most likely has added "features" you may not expect ... or want.
jaen
Noticed this myself as a VSCode-derivative user. But I think this is just because having multiple Python extensions enabled generally breaks the UX... Since VSCode doesn't really have a nice way for multiple language extensions to cooperate, this looks like just a quick hack to make the initial UX better, unlikely to be "malicious". EDIT: Silent downvotes, really? Prejudice is strong here...
PufPufPuf
Fixed title: Pyrefly automatically disables conflicting extensions on installation. That's a convenient thing to do: if user installs Pyrefly, they probably want to use Pyrefly. Everyone likes a good outrage against Meta, but this is a nothingburger.
axus
Never attribute to malice what can be explained by vibe-coding
3darl
This is typical in the Python space. Windows is also broken after installing Conda. Given that now one has to pray that one does not get Shai Hulud when using PyPI, the best thing Meta could do is switch Instagram to PHP/Hack and PyTorch back to Lua (or Haskell or whatever).
gavmor
From the people who brought you "move fast and break things."
OutOfHere
Speaking of sabotage, Microsoft's SwiftKey keyboard app sabotages the use of a competing search engine (DuckDuckGo) in Firefox in Android for me. When typing a multi-word quoted search phrase, it doesn't allow it to be typed correctly.
Lihh27
Disabling conflicting extensions, sure. Writing to global settings and leaving the mess behind after uninstall is not the same thing.
kinto
hi - pyrefly developer here. this was an oversight made by me a while ago during our beta launch. thanks for reporting. we have a full response [here]( https://github.com/facebook/pyrefly/issues/3292#issuecomment... ) in the github issue