Repository navigation
Open
Description
Summary
TUI /sessions dialog in 2.0.21 on Windows shows no pin option and renders no Pinned section, even though docs list session.pin.toggle (ctrl+f) and session.json contains pinned IDs.
Environment
- opencode version: 2.0.21
- OS: Microsoft Windows 10.0.26300.9550
- Terminal: cmd and Windows PowerShell, same behavior in both
- Shell: C:\Windows\system32\cmd.exe
- Install/channel: pnpm global
@opencode/[email protected](release, latest per npm) - Active plugins: none found (no
~/.config/opencode/plugins, no.opencode/in cwd,opencode.jsonconly has$schema,cli.jsonhas nopluginsentry)
Reproduction
- Open
opencodeinC:\Users\yo(TUI). - Run
/sessions. - Footer only shows
delete ctrl+d rename ctrl+r current directory ctrl+a, no pin hint. - Press
ctrl+a— only toggles all sessions vs current directory, no Pinned section appears. - Open command palette
Ctrl+P, searchpin— only substring matches appear (Wrappingunder Settings-Diffs,Tool grouping/Permissionsunder Settings-Session), no pin command. - Check
C:\Users\yo\.local\state\opencode\session.json— contains{"pinned":["ses_f59a8a48effeW2mIGiZ80xWkMh","ses_f4b4217aeffePNMTJ2slEaAWBL","ses_f1618a5ccffec3KmwfsBwT5xYc","ses_f136b02d6ffe75IEGHEYQxVn3D","ses_f15f0a739ffetu3JkjD5GNuQad"]}, all 5 IDs exist inopencode session list --format jsonas top-level sessions in the same project, yet no Pinned section renders.
Expected Behavior
Session list shows Pinned section and exposes pin/unpin (session.pin.toggle, ctrl+f per https://opencode.ai/v2/docs/cli/keybinds), or docs clarify if the feature is unreleased/experimental.
Actual Behavior
No pin hint, no Pinned section, no palette command. ctrl+f does nothing visible in the dialog. Pins stored in session.json are not reflected in the UI.
Additional Context
- Consistent, reproducible in both cmd and PowerShell.
cli.jsonhas no keybind overrides forsession.pin.toggle.- Related: plugin: no supported way to pin sessions - storage.store is not the pin store
#52478 confirms pin store is the TUI's own
session.json(session.pin.togglebound toctrl+f), but that issue is about plugin API access; this issue is that the core TUI itself does not expose/render pinning in 2.0.21 on Windows. - Screenshots available:
/sessionsdialog without pin,Commandspalette searchpinwith only Settings matches. - Did not delete/edit db;
opencode.dbintact atC:\Users\yo\.local\share\opencode\opencode.db.
Metadata
Metadata
Assignees
Labels
No labels
Activity
AngelMG0303 commentedon Oct 2, 2026
github-actions commentedon Oct 2, 2026
This issue might be a duplicate of existing issues. Please check:
For keybind-related issues, please also check our pinned keybinds documentation: #4997
AngelMG0303 commentedon Oct 2, 2026
Not a duplicate feature request — this is a bug report.
Pinning is documented (session.pin.toggle, ctrl+f) and session.json already contains 5 pinned top-level IDs that exist in session list, yet /sessions in 2.0.21 on Windows renders no Pinned section and no pin hint (footer only: delete/rename/current directory). ctrl+f does nothing visible. Related #52478 covers plugin API, #37882 confirms the feature should exist.
attila-lendvai commentedon Oct 17, 2026
FWIW, i'm seeing this, too.
on v2.0.32, running on linux
(i'm not sure this is relevant, but: i had some problems with upgrading to v2, bun kept crashing. then i migrated the files to a new, dedicated machine, but the paths were different there, and there was no git installed, so all past sessions were gone from the TUI. then opencode modified the db to recover my sessions.)
AngelMG0303 commentedon Oct 18, 2026
Update: found the cause and a workaround.
The pin UI is gated behind session tabs. With
tabs.modeat its default (auto, resolved to on),/sessionsshows no Pinned section and no pin hint in 2.0.21 on Windows. Setting tabs off restores both.Workaround:
File:
~/.config/opencode/cli.json(Windows:C:\Users\<user>\.config\opencode\cli.json){ "tabs": { "mode": "off" } }Restart the TUI and the Pinned section plus the pin/unpin hint reappear in
/sessions.Environment: opencode 2.0.21, Windows 10.0.26300.9550, cmd and PowerShell.
maharshi365 commentedon Oct 21, 2026
They removed pins in favor of tabs. Might not be a stable feature any longer
saulojustiniano1 commentedon Oct 27, 2026
Additional reproduction on macOS / OpenCode v2.2.0:
TERM=xterm-256color,COLORTERM=truecolor)/bin/zshopencode-v2/2.2.0)I have a session titled
DESIGN DEIAand tried to pin/favorite it. In the TUI:Ctrl+P.pin session.Ctrl+Fdoes not pin the session.The session ID is
ses_e853716e3ffeKugORLwz9cgVYl. The current v2 keybind documentation listssession.pin.togglewith defaultCtrl+F, but the action is not exposed in the UI in v2.2.0. Please clarify whether session pinning was removed/replaced by tabs, or restore the documented behavior and update the documentation.This appears related to the same missing pin UI reported here, but it is reproducible on macOS with the latest installed v2.2.0 release.
opencodejr commentedon Oct 28, 2026
Thanks for the detailed report!
This comes from a design choice, not something specific to Windows. When session tabs are on, the session list turns pinning off: the Pinned section, the
pin/unpin(ctrl+f) action and the number slots are all hidden (seepackages/tui/src/component/dialog-session-list.tsx). Tabs are on by default becausetabs.modedefaults toauto, which turns them on everywhere except inside Herdr. Yourcli.jsondoesn't settabs, so pinning is hidden, and that matches what you saw.Workaround: turn tabs off in
cli.json:{ "tabs": { "mode": "off" } }After that, the pin hint and the Pinned section (with the IDs already in
session.json) should show up in/sessions.You're right that the docs don't explain this. The keybinds page lists
session.pin.togglewith no mention of tabs, and the Tabs config section doesn't say that tabs disable pinning. I've passed this on to the maintainers as a request to either document it or support pinning while tabs are on. I can't promise anything on timing.Related:
session.json, and plugins have no API for themsession.jsonbeing overwritten between TUI instances