[BUG] [platform::intellij] Regression of #10813: 'Slow operations are prohibited on EDT' in DiagnosticTools.openVirtualFileFromPath (macOS, plugin 0.1.14-beta)

Open 💬 2 comments Opened Jun 25, 2026 by aholland

Appears to be reproducing again / regressed on the current Beta plugin — and now on macOS (the original was labelled platform:linux).

Environment

  • IntelliJ IDEA 2026.2 EAP, build IU-262.8377.35
  • Claude Code plugin com.anthropic.code.plugin 0.1.14-beta
  • macOS 26.5.1 (Apple Silicon)

Same signatureDiagnosticTools resolving a path to a VirtualFile on the EDT:

java.lang.Throwable: Slow operations are prohibited on EDT.
  at com.intellij.util.SlowOperations.assertSlowOperationsAreAllowed(SlowOperations.java:128)
  at com.intellij.openapi.vfs.newvfs.persistent.FSRecordsImpl.update(FSRecordsImpl.java:790)
  at com.intellij.openapi.vfs.newvfs.persistent.PersistentFSImpl.findChildInfo(PersistentFSImpl.java:854)
  at com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl.findChild(...)
  at com.intellij.openapi.vfs.newvfs.NewVirtualFileSystem.findFileByPath(NewVirtualFileSystem.java:344)
  at com.intellij.openapi.vfs.impl.local.LocalFileSystemBase.findFileByPath(LocalFileSystemBase.java:89)
  at com.anthropic.code.plugin.UtilsKt.openVirtualFileFromPath$lambda$0(Utils.kt:37)
  at com.intellij.openapi.application.ActionsKt.runReadActionBlocking(actions.kt:47)
  at com.anthropic.code.plugin.UtilsKt.openVirtualFileFromPath(Utils.kt:36)
  at com.anthropic.code.plugin.mcp.tools.DiagnosticTools$addTools$1.invokeSuspend$lambda$1(DiagnosticTools.kt:87)
  ... (dispatched on the EDT via TransactionGuardImpl / LaterInvocator)

Logged once, SEVERE; here it did not freeze the IDE, but the assertion fires.

Root cause / suggested fix: openVirtualFileFromPath does runReadActionBlocking { LocalFileSystem.findFileByPath(...) } on the EDT, and VFS path resolution can touch persistent FS records (FSRecordsImpl.update) — a slow op prohibited on the EDT. Resolve the path → VirtualFile off the EDT (non-blocking read action / background dispatcher) instead of blocking on the EDT.

Filing as a new issue because #10813 is locked — this appears to be a regression of it; the earlier fix doesn't cover this path on the current Beta plugin.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗