The sidebar
How it sits over Claude and Codex, peeking, collapsing, tabs, the header.
Last updated
Pairbar is a separate app. It draws a glass panel exactly over the sidebar of whichever app is in front, Claude or Codex, matching its width, position and rounded corners. It never modifies either app.
Its text is set like Claude's own sidebar: the system font at Claude's sizes, soft off-white (or near-black in light mode) rather than pure white or black, regular weight, with quieter greys for projects, times and section headers. In Settings → Look, Density picks one line or two per chat and Tint picks neutral greys or Claude's warm ones.
When it shows#
- Shown: Claude or Codex is the frontmost app and its main chat window shows a sidebar. With Accessibility permission, opening a utility panel, browser popup or dialog keeps Pairbar on the chat window; these auxiliary windows do not carry the sidebar.
- Another app in front: the sidebar stays on the window of the app you used last, Claude or Codex, as part of that window. It sits just above that window and no higher, so another app's window over Claude covers Pairbar too, and Pairbar never shows on top of other apps.
- Click it: the first click works, as it does on the app's own window: it brings Claude (or Codex) to the front and acts on what you clicked, such as opening a chat.
- It goes with the window: when the window is minimised, the app is hidden (⌘H) or quits, or the window is on another Space or in full screen. When the window comes back, the sidebar does too.
- Until you've used Claude or Codex since Pairbar started, Pairbar doesn't put its sidebar on a window in the background.
- Just the round button: the window is too narrow for a sidebar, or (with Settings → Windows → Hide the apps' own sidebars in the basket off) the app's own sidebar is collapsed, so there's nothing to cover. Click it, press ⌃⌥S or open Pairbar again to show the sidebar over the app's content anyway.
- Overlay width: matches the host's rendered divider when its accessibility metadata is available, otherwise its saved sidebar width. Pairbar does not apply its own minimum, maximum or percentage cap over a visible host sidebar.
- Width:
- For Claude, the width comes from Claude's own saved settings, including zoom.
- For Codex, from
~/.codex/.codex-global-state.json. - If you drag the app's own sidebar edge, Pairbar follows live (see Resizing).
Resizing#
Resize the sidebar the way you always do: drag the right edge of the app's own sidebar.
- Where to grab: Pairbar's right edge, below the window's title bar. When the pointer is on the edge, a thin line appears there and the app shows its own resize cursor. The press goes to the app, which resizes its sidebar.
- Live: Pairbar's panel moves with the divider as you drag, with no lag.
- After you let go: Pairbar keeps the width you dragged to until the app saves its own, then matches it, in case the app stopped at its own minimum or maximum. Claude saves it within a moment, Codex to
~/.codex/.codex-global-state.json. If the app saves nothing within about 12 seconds, Pairbar keeps the width you dragged to until the app next saves one. - Limits: the host's sidebar limits apply. With an accessible divider, Pairbar reads the current width and limits directly, even before the app saves them. The divider is cached after a bounded metadata scan; updates do not walk the chat tree. Otherwise, when the app stops short of where you dragged, Pairbar learns its limit from the next saved width. Reconciliation sets the matching width directly, without easing through a different width.
- Zoom: in Claude, widths are in the page's own units times its zoom, so the edge matches at any zoom level.
- While peeking or collapsed: the app's own sidebar edge is in plain view; drag it and Pairbar follows it the same way.
Clicks anywhere else on Pairbar, including the right-hand end of its rows, stay Pairbar's: the edge strip is only a few points wide.
Peek at the app's own sidebar#
| Gesture | What happens |
|---|---|
| Hold ⌥ (or ⌘) with the pointer over Pairbar | Pairbar fades out and clicks go through to the app's own sidebar |
| Double-tap ⌥ | The peek stays until you double-tap again, switch to another app, or leave the pointer away from the sidebar for 30 seconds (so a stray double tap while typing can't leave Pairbar hidden) |
Peeking works only while Claude or Codex is in front: with another app in front, holding ⌥ over Pairbar does nothing. Use this to reach your regular (non-coding) Claude chats, which Pairbar doesn't list. The ⌥ and ⌘ peek keys can be turned off in Settings.
Collapse#
⌃⌥S, or the sidebar button in the top-right corner, collapses Pairbar into a small round button in the corner so you can use the app's own sidebar. Click the button or press ⌃⌥S again to bring it back. With Settings → Windows → Hide the apps' own sidebars in the basket on (to start with), collapsing Pairbar also shows the app's own sidebar if it's hidden, so there's always one sidebar; in the basket, where the apps are laid out beside Pairbar's column, it doesn't collapse, whatever the setting: there's no button, and ⌃⌥S says how to hide it (switch to Overlay) or brings the basket to the front (see Window layouts). Opening Pairbar from Spotlight or Finder also brings it back, over Claude or Codex; if neither is open, Pairbar offers to open one. Pairbar always starts with the sidebar showing, except when it starts at login.
Header#
The header holds only what you use constantly:
- Usage rings for Claude and Codex (see Limits).
- ✎ New chat, which opens the composer.
- Hide Pairbar (⌃⌥S).
While Pairbar is locked only Hide Pairbar stays.
Trial line and lock screen#
During the free trial a quiet line above the tab bar says how many days are left, with a Subscribe link; on the last day it's a card with the hours left. When the trial has ended (or a subscription has ended and its 14 days' grace are over, or a licence stops being valid) the sidebar shows the lock screen instead of its pages and tab bar. See Trial, licence and updates.
Tabs#
A labelled tab bar at the bottom switches between the places:
| Tab | Badge |
|---|---|
| Chats | how many chats are working |
| Agents | – |
| Skills | – (the Skill library) |
| Workflows | green activity dot during runs, planning, AI step editing or active check-ins; amber when a run needs your answer |
| ⚙ Settings | – |
The Chats tab lists chats grouped by project to start with, or by task in the Tasks view (Group by → Tasks, or View: Tasks in ⌘K).
The Workflows dot stays visible when you switch to another page. Hover over the tab for the activity details, or click it to return. When the work finishes or is cancelled, its indicator clears; an active check-in keeps the dot visible until it is stopped. Saved schedules alone do not light the dot.
Switching between Claude and Codex#
Click a Codex chat while Claude is in front (or the other way round) and Pairbar swaps the windows. The other app's window is moved exactly where the current one is before it comes forward, so it feels like the same window changing content. This uses the Accessibility permission; without it, the other app opens wherever its window is.
In the basket, both windows already show, so the other app just comes forward. The sidebar stays on the basket's left edge whichever app you use, and stays on screen with the basket when another app is in front; see Window layouts for the basket and saved setups.
Returning from Basket to Overlay restores the usual narrow-window behaviour: a narrow Claude window shows the dot, and widening it brings the sidebar back. Codex keeps the sidebar at either width. An automatic expansion in Basket does not keep Pairbar covering a narrow Claude window afterward.
Notes#
The Notes tab opens your local feedback library. The Notes capsule beneath the microphone expands into a compact Liquid Glass card with quick actions, groups and scrollable history. Dragging the capsule moves the microphone too. See Notes.
Narrow sidebar#
The sidebar adapts to its width and height. In a window shorter than 620 points and narrower than 480 points, the bottom bar shows the current page's name and a page menu. Open it to choose Chats, Agents, Skills, Workflows, Notes or Settings. The current page is checked, and active chats and workflow activity appear in the menu. An activity dot stays visible beside the page button. This leaves more space for lists and forms. In taller or wider windows, bottom tabs share equal space with aligned icons and consistent click areas. Every name appears beneath its icon, including Settings; icons keep the same size and weight across selected and unselected tabs. At 240–479 points, the tabs use two rows of three buttons; below 240 points they use three rows of two. From 480 points they use one row. Labels keep their normal size. Selecting a tab highlights its background without moving or resizing its neighbours. Activity dots sit beside the icon; the tooltip gives the activity details.
List group names wrap in full. Below 280 points their totals and activity sit beneath the name, leaving room for the disclosure arrow and project action.
Page actions move below their title when the title and actions cannot fit together, including long titles at wider sidebar sizes. Titles wrap in full. Notes uses compact session and transfer controls, and voice history puts its actions below the text. The top bar uses smaller controls and compact usage rings; below 240 points usage remains available in Settings → General → Plan limits.
Secondary text in dark mode uses brighter ink so project names, times and descriptions remain readable on brighter glass surfaces.
Searchable pickers expose each available option as a button with a primary accessibility action. You can choose it through accessibility controls as well as with the mouse or Return. Disabled options remain unavailable.
Codex’s saved sidebar width is read from .codex/.codex-global-state.json, using electron-persisted-atom-state.sidebar-width in current versions and the top-level sidebar-width in older versions. The current value wins when both exist. Pairbar accepts compact and formatted JSON and keeps fractional widths; invalid or nonpositive values are ignored. Changes to either app's layout files trigger a fresh layout read.
Guides and use cases for this
- GuidePairbar keyboard shortcuts and how to peek at the app's own sidebarAll Pairbar shortcuts, from ⌘K and ⌃1–9 to ⌥ peek and chat-menu letters, and which ones you can switch off.
- GuideTroubleshoot missing chats in PairbarOrdered checks for chats, Codex threads, cloud sessions and cloud tasks missing from Pairbar, and for search that finds nothing at first.
- Use caseSwitch between Claude Code and Codex on a Mac without hunting for windowsOne list for both apps; clicking a chat from the other app swaps its window into the same spot.
- Use caseSee all your Claude Code sessions and Codex threads in one listEvery Claude Code session and Codex thread, local and cloud, in one list with live status, grouping and filters.
- Use caseUse Claude Code and Codex together and keep the official appsKeep chatting in the official Claude and Codex desktop apps; Pairbar only adds one sidebar over both, using your existing plans.
- Use caseA fuller sidebar for Claude Code in the Claude desktop appA sidebar over the Claude app listing every Claude Code chat across projects with live status, search, Tasks, skills, agents and limits. Claude alone is enough.