Unified sidebar "Index out of bounds" on workspace restore prevents terminal / output / SCM panels from loading

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

After opening a long-used workspace, Cursor loads into a half-booted state: the editor area works (files open, syntax highlighting, language servers run), but the entire bottom/side panel ecosystem fails to initialize.

Concrete symptoms:

  • Integrated Terminal tab is blank — clicking “+” or any “Open Terminal” command does nothing.
  • Output panel dropdown is empty — no channels listed at all (not even built-in ones like “Window”, “Main”, “Log”).
  • Source Control view fails to render the SCM tree.
  • Other tabs (Problems, GitLens) also empty / unresponsive.

Process inspection (ps -ax | grep -i cursor) confirms the ptyHost helper process never spawns, while all other helpers (renderer, GPU, fileWatcher, shared-process, 4× extension-host) are running normally with low CPU. So this is not a hang — a startup step is silently aborting.
renderer.log shows the trigger, repeated 21 times in the first second of window startup:

[warning] Unexpected error checking unified sidebar visibility: Index out of bounds

This is followed downstream (in the original 3.1.17 session before I auto-updated to 3.2.11) by:

[error] No Connect transport provider registered.
[error] Failed to refresh authentication, scheduling next attempt

Upgrading 3.1.17 → 3.2.11 cleared the No Connect transport provider cascade but did not fix the Index out of bounds issue.
exthost.log reveals the underlying cause — two extensions register views into secondary sidebar view containers that no longer exist:

[Anthropic.claude-code]: View container 'claude-sidebar-secondary' does not exist
   and all views registered to it will be added to 'Explorer'.
[openai.chatgpt]: View container 'codexSecondaryViewContainer' does not exist
   and all views registered to it will be added to 'Explorer'.

Cursor correctly logs a warning and falls back to Explorer at registration time, but the stale references persisted in this workspace’s state.vscdb from a previous Cursor version where these containers existed (or were named differently). On restore, the unified-sidebar layout array contains an index that points past the valid range → Index out of bounds → exception bubbles up → ptyHost spawn / OutputService channel registration / SCM view init never run.

This is per-workspace: my other workspaces with the same extensions installed open fine, because their state.vscdb doesn’t have the same stale view-location entries.

Note: this looks like the same root cause as a closed/inactive earlier report (Claude Code extension webview blank in bottom panel - “Index out of bounds” errors, Dec 2025, v2.2.20). The bug has now persisted for ~5 months across many releases, with a broader impact than the original report (terminal/output/SCM all affected, not just Claude Code webview).

Steps to Reproduce

Hard to reproduce from a clean install (likely needs the right sequence of extension upgrades + Cursor upgrades to seed the bad state). Path I can describe from my side:

  1. Use Cursor with extensions that contribute views to a secondary/separate sidebar container (in my case Anthropic.claude-code and openai.chatgpt) for an extended period.
  2. Cursor / extensions go through several major version updates that rename or remove view containers (claude-sidebar-secondary, codexSecondaryViewContainer are the two stale IDs in my db).
  3. Open the affected workspace → editor works, terminal/output/SCM panels are dead.

I can provide my pre-reset state.vscdb (5.3 MB, backed up before workaround) if you want to reproduce locally — let me know how to share it privately.

Workaround that fixed it for me:

# Quit Cursor first (Cmd+Q)
WS_HASH=<workspaceId>   # find under ~/Library/Application Support/Cursor/User/workspaceStorage/
cd ~/Library/Application\ Support/Cursor/User/workspaceStorage/$WS_HASH
rm state.vscdb state.vscdb-shm state.vscdb-wal state.vscdb.backup

This loses only this workspace’s UI layout (panel sizes, recent tabs, etc.) — code, git, settings, extensions are untouched.

Expected Behavior

  • Cursor should validate persisted view-location arrays against the current view-container registry on workspace restore, and silently drop entries pointing to no-longer-registered containers.
  • The unified-sidebar restoration code path should be wrapped in try/catch so a failure cannot cascade into preventing unrelated subsystems (ptyHost spawn, OutputService channel registration, SCM init) from initializing.
  • An ideal fix also auto-recovers: if Index out of bounds is caught, fall back to default sidebar layout for this workspace and continue startup.

Screenshots / Screen Recordings

Operating System

MacOS

Version Information

IDE:
Version: 3.2.11
VSCode Version: 1.105.1
Commit: e9ee1339915a927dfb2df4a836dd9c8337e17cc0
Date: 2026-04-24T14:36:47.933Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 25.3.0
Bug also reproduced on prior version 3.1.17 (same workspace, before today’s auto-update).

Additional Information

Relevant log file paths on macOS for anyone hitting this and checking their own setup:

Renderer log (where the Index out of bounds warning appears):
~/Library/Application Support/Cursor/logs//window1/renderer.log
Extension host log (shows the missing view-container warnings):
~/Library/Application Support/Cursor/logs//window1/exthost/exthost.log
Workspace state DB (the file to delete as workaround):
~/Library/Application Support/Cursor/User/workspaceStorage//state.vscdb*
The two extensions that contributed stale view-container IDs in my case:

Anthropic.claude-code → claude-sidebar-secondary
openai.chatgpt → codexSecondaryViewContainer
Other extensions in this window’s host (for completeness, in case the trigger needs a specific combo): eamodio.gitlens, dbaeumer.vscode-eslint, streetsidesoftware.code-spell-checker, kamikillerto.vscode-colorize, tamasfe.even-better-toml, anysphere.cursorpyright, rust-lang.rust-analyzer, vscode.git, vscode.github.

The two ChatGPT/Claude extensions are likely the trigger because they’re the ones the warnings name; the rest is environmental context.

Does this stop you from using Cursor

Sometimes - I can sometimes use Cursor

Hey, thanks for the detailed report. The logs, diagnostics, and workaround really speed up the investigation.

Bug confirmed, and the root cause is clear. Stale view-container entries in state.vscdb left over from older versions of extensions like Claude Code and ChatGPT can break the unified sidebar during workspace restore, and then it cascades into blocking ptyHost, Output, and SCM. I’ve reported this internally. I can’t share an ETA for a fix yet, but I’ll post an update here as soon as I have one.

Your workaround works. Deleting state.vscdb* in workspaceStorage/<workspaceId>/ only resets the workspace UI state like panel layout and recent tabs. It won’t affect your code, git data, settings, or extensions. I’ll keep it in the thread since it’ll help other users who hit the same issue.

About state.vscdb, yes, it would be useful for repro. Keep in mind state.vscdb can contain snippets of edited code and file paths, so please make sure you’re OK sharing it. I can send you a DM. Let me know.

Thanks for confirming and routing it internally.

I’ll skip sharing the state.vscdb — since the root cause is already clear, a repro fixture probably won’t add much, and the file has workspace-local content I’d rather not transmit. Happy to test a candidate fix on this workspace when something lands — just ping the thread.