Pinned Paths
Keep selected local files and folders in the VS Code Explorer without adding
them to the active workspace. The view uses the native Explorer tree
presentation and persists selections globally by default.
Features
- Add from anywhere: Add files and folders from the view title or the
Explorer context menu.
- Two scopes: Selections persist globally by default or per workspace.
- Native multi-selection: Shift-click and Command-click on macOS.
- Ordered roots: Per-root sorting by name or modification time,
ascending or descending, directories first, with drag reordering and Move
Up or Move Down.
- Editor drops: Drag selected files into the editor area to open them.
- Dotfiles visible: Dotfiles and dot-directories appear alongside other
folder contents.
- Root labels: Aliases and relative-path labels for roots, switchable
without changing the pinned set.
- Full file management: Create files and folders, rename with Enter, and
delete to Trash directly in the view.
- Path access: Copy absolute or workspace-relative paths, open files to
the side, open folders in a new window or an integrated terminal, reveal
items in the operating system file manager, and search within a folder.
- Workspace presets: Named root sets defined in
.pinned-paths.json,
applied from the command palette.
Requirements
First run
On first activation the extension seeds these paths when they exist:
~/.claude
~/.codex
~/Documents/notes
~/Documents/screenshots
~/Desktop
Seeding runs once. Removing a seeded path is permanent unless you add it
again explicitly. Paths that do not exist are skipped.
Workspace presets
A workspace can define named root sets in .pinned-paths.json. Applying a
preset replaces the current workspace-scope roots. Missing paths and paths
that resolve outside the first workspace folder are ignored. The preset file
is never rewritten.
{
"presets": [
{
"name": "Service",
"paths": [
"src",
"tests",
{ "path": "docs/runbooks", "alias": "Runbooks" }
]
}
]
}
Preset paths are relative to the first workspace folder. Switch to Workspace
scope before applying a preset.
Settings
| Setting |
Default |
Description |
pinnedPaths.scope |
global |
Apply selected paths globally or only to the current workspace |
pinnedPaths.autoReveal |
false |
Reveal the active file when it is inside a selected folder |
pinnedPaths.labelStyle |
name |
Label used for roots without an alias |
Keybindings
- Option+Cmd+C copies the absolute path of the context item, or every
absolute path in the current selection. Multiple paths use one line each.
The command is safe when nothing is selected.
- Enter renames the selected filesystem entry when exactly one entry is
selected. Empty or multiple selections leave the filesystem unchanged, and
the shortcut stays inactive while text input has focus.
Protected folders
macOS blocks folder listing in Documents, Desktop, Downloads, and the cloud
provider mounts that a redirected home folder points at, until the editor
itself holds permission. A pinned folder in one of those locations shows an
empty tree and reports the block once per session. Grant the editor access in
System Settings > Privacy & Security > Full Disk Access, then reload the
window.
Privacy
Pinned Paths runs locally. It stores selections in VS Code settings and
touches only the files and folders you select. It makes no network calls.
License
MIT