Changelog
0.4.3 (2026-10-09)
- Questions inside boxes. Select words in a box and press Alt+Shift+P (Option+Shift+P on a Mac): a box inside opens for your question, and the answer knows the boxes around it. With boxes open and nothing selected, Alt+Shift+P asks about the words of the innermost box.
- Fixed: after a peek inside a box, a new answer for the same text (Alt+P again, or a question) showed the old dotted lines on the new text until it finished.
- Fixed: a question typed fast and sent with Enter in the same keystroke batch was not sent.
- Fixed: a saved answer to a question, opened again, had its dotted lines in the wrong place.
0.4.2 (2026-10-09)
- Ask a question about the selection: Alt+Shift+P (Option+Shift+P on a Mac) opens the box empty,
you type the question and press Enter. The answer comes from the model your chat runs on, with
the whole conversation. Set
PEEKME_CLAUDE_ASK_MODEL,PEEKME_CODEX_ASK_MODEL,PEEKME_COPILOT_ASK_MODELorPEEKME_KIRO_ASK_MODELfor another model. With a box open, Alt+Shift+P asks about the text that box explains. - Kiro CLI support.
peekme installnow also sets upkiro-cli, and a setup from an older peekme gets it the next time peekme starts. Everything works as in the other agents: select text, press Alt+P (Option+P on a Mac), peek inside a peek, click underlined text for the saved answer, also inside tmux and over SSH. - Kiro starts inline and leaves the mouse to the terminal. After
/fullscreenKiro makes the selection itself and peekme reads it, also over SSH. Underlined text can be clicked only there. - Explanations go through
kiro-cli acpwith your Kiro login, onclaude-haiku-4.5without tools. About 0.01 Kiro credits each. The sessions are deleted afterwards, so they don't show up in Kiro's session list. SetPEEKME_KIRO_MODELfor another model. - The model knows the Kiro conversation, read from
~/.kiro/sessions/cli.
0.4.1 (2026-10-07)
- Mac: after
peekme install,claudecould stop witherror: unknown option '--internal-jobctl-helper'and Claude Code never opened.codexandcopilothad the same problem. On macOS peekme's helper process started under the name of the agent link, and peekme passed its own flag on to the agent. Now the helper is found first. The same happened on any system whereclaudewas a copy of peekme instead of a link. - Tests no longer depend on running inside tmux or over SSH.
0.4.0 (2026-10-06)
Everything from the 0.4.0 betas below, now in the normal install (npm i -g peekme, Homebrew,
cargo install peekme).
- Text you already asked about gets a dotted underline. Click it and the saved answer opens again, with no new request. Click again to close it.
- Peek inside a peek. Select words in the box and press Alt+P (Option+P on a Mac). A new box opens under that line, and you can go several levels deep.
- Each box scrolls on its own: the wheel scrolls the box under the pointer, PgUp/PgDn the innermost one, Esc closes the innermost one.
- Underlines stay on their text after scrolling, resizing and unfolding tool calls in Codex and Claude Code.
- Mac fixes: Option+P after a drag in Codex, Terminal with mouse reporting off, and Option sent as Alt.
0.4.0-beta.10 (2026-10-04)
A test build, only on crates.io: cargo install peekme --version 0.4.0-beta.10.
- Clicks on underlined text answer at once. Before, a click soon after the last one was taken as part of a double click and did nothing, so you could not close a peek and open it again quickly. Now only a second click on the same spot right after opening counts as a double click, and it keeps the box open.
- With a box open, a click on other underlined text opens its answer in one click.
- Inside a box, a double click on a word selects it, so Option+P can explain it without a drag.
- Underlines no longer blink after a box closes.
0.4.0-beta.9 (2026-10-04)
A test build, only on crates.io: cargo install peekme --version 0.4.0-beta.9.
- Peek inside a peek. Select words in the box with the mouse and press Option+P (Alt+P): a new box opens inside it, under that line. The outer boxes stay around it, so you see where you are. You can go several levels deep while the window is wide enough.
- Each box scrolls on its own. The wheel scrolls the box under the pointer, PgUp/PgDn the innermost one. Esc closes the innermost box.
- Answers inside a box are saved like the ones on screen. Their words get the dotted underline, and a click on them shows the saved answer again with no new call.
- A press inside the box now selects text there. Before, it closed the box.
- With an agent that does not use the mouse (Claude Code classic, for example), peekme turns mouse reports on while a box is open, so text in it can be selected. The agent gets none of them.
0.4.0-beta.8 (2026-10-03)
A test build, only on crates.io: cargo install peekme --version 0.4.0-beta.8.
- Codex: the underline under explained text lagged when you unfolded a command or a reasoning block. The text moved down at once, but the underline came after Codex went quiet, and for that time it stayed on the old place. Now peekme draws it in the same frame as Codex's text.
0.4.0-beta.7 (2026-10-02)
A test build, only on crates.io: cargo install peekme --version 0.4.0-beta.7.
- Codex: Option+P pressed right after a drag sometimes typed the letter instead of opening the box. Codex draws its selection a moment after you release the mouse, and peekme looked too early. Now it waits up to a second for the selection.
0.4.0-beta.6 (2026-09-30)
A test build, only on crates.io: cargo install peekme --version 0.4.0-beta.6.
- Mac Terminal with View > Allow Mouse Reporting off: a drag is Terminal's own selection, which Codex and peekme never get, so Option+P typed the letter. Now Option+P tells you once to turn mouse reporting on (Cmd+R). Alt+P says it every time.
- Option+P is also understood when the terminal reports Option as Alt.
0.4.0-beta.5 (2026-09-30)
A test build, only on crates.io: cargo install peekme --version 0.4.0-beta.5.
- Mac, without tmux or SSH: Option+P with nothing selected explained the last thing Codex copied to the clipboard. Now a copy counts once. After that Option+P types the letter again, until you select or copy something new.
0.4.0-beta.4 (2026-09-30)
A test build, only on crates.io: cargo install peekme --version 0.4.0-beta.4.
- Underlined text that is only partly on screen keeps the line on the part you can see.
- After you resize the window, underlines find their text again where the lines wrap now.
- Leftover underlines no longer stay behind on other text after scrolling in Codex.
- Codex: a selection over several formatted lines now gets its underline too.
0.4.0-beta.3 (2026-09-30)
A test build, only on crates.io: cargo install peekme --version 0.4.0-beta.3.
- In Codex and Claude Code full screen, an underline could disappear after a small scroll or after opening a tool call, when the same words were on screen twice (for example in your question and in the answer). peekme moved the mark to the other copy and never drew it there. Now a mark follows its own copy, found by the lines around it.
0.4.0-beta.2 (2026-09-30)
A test build, only on crates.io. cargo install peekme still gives 0.3.5. To try it:
cargo install peekme --version 0.4.0-beta.2. It has all the fixes from 0.3.5.
- Text you already asked about gets a dotted underline once the answer is complete, so you can see what you peeked before. The line comes back when the agent redraws those rows. Terminals without dotted lines show another kind of underline.
- Click underlined text to see its answer again, with no new request. Click it again to close the box. A double click opens it once. Dragging over the text still selects it, and a click with Ctrl, Cmd, Shift or Option still does what your terminal or agent does with it. Links in the agent's answer stay links. With the mouse over underlined text the line turns solid, and in terminals that support it (kitty, Ghostty, WezTerm) the pointer becomes a hand.
- Clicks work where the agent handles the mouse itself: Codex and Claude Code full screen, also in tmux and over SSH. In Claude Code's classic screen, select the text and press Alt+P.
- Select marked text and press Alt+P: the answer from before opens right away. Alt+P again still asks with the whole chat.
- Codex: Option+P typed
πwhen the selected text was in one of Codex's answers. Codex copies such a selection as markdown (- **Desktop app**for the words Desktop app), and peekme looked for that text on the screen and did not find it. Now peekme uses the text Codex highlights.
0.3.5 (2026-09-30)
- Option+P did nothing after a tmux selection when tmux stays in copy mode after the drag (a
MouseDragEnd1Panebinding tocopy-selection, common in tmux configs). tmux took the key for its copy mode. peekme now binds Option+P in tmux's copy mode for its own pane: it leaves copy mode and explains what you selected. Other panes are not affected, and a key you bound yourself is left as it is. - Over SSH, Alt+P with nothing peekme can see now says that text selected with Option held stays in your terminal. iTerm2 and Terminal don't give it to programs, so peekme can't read it.
0.3.4 (2026-09-29)
- Codex inside tmux over SSH: Option+P typed
πalthough text was selected. Codex (0.159) asks tmux whether it handles the mouse, and when tmux has the mouse off, which is its default, Codex leaves the mouse to the terminal. The selection is then made by your terminal on your own machine, and peekme on the other side of SSH cannot see it. peekme can't change that, so now the first Option+P there opens a box that says so and how to fix it:set -g mouse onin~/.tmux.conf. Alt+P shows the same box. Found by driving the real Codex in Terminal and iTerm2 on macOS, through SSH and tmux. - On a Mac reached over SSH, peekme no longer reads that Mac's clipboard as a selection. It is not the clipboard of the terminal you type in.
- Short messages in a box now show whole, not one line with PgUp/PgDn.
- With two copies of peekme on one machine (an old one from
cargo install, a newer one from npm or Homebrew),codexcould keep starting the old copy. The old copy'speekme installhad linkedcodexto itself, and the new copy only fixed links that were missing. So Codex got none of the later fixes, for example Option+P inside tmux over SSH, whileclaudeworked. Now the newer peekme moves such links to itself when it starts, and says so once.
0.3.3 (2026-09-29)
- Claude Code with Amazon Bedrock, Google Vertex or an API gateway: explanations failed with
"Could not load AWS credentials" or "Not logged in", although Claude Code itself worked. The
explainer did not read your Claude Code settings, so it missed the
envblock,awsAuthRefresh,awsCredentialExport,gcpAuthRefreshandapiKeyHelperthere. It also dropped everyCLAUDE_CODE_*variable,CLAUDE_CODE_USE_BEDROCKincluded. Now it uses the same login and provider asclaudein that directory. Hooks, plugins and MCP servers from your settings still do not run for explanations. - Claude Code's classic screen: when
claudestarted lower on the screen, under earlier shell output, the box could land a few rows off and repeat lines from above it. peekme now asks the terminal where the cursor is when it starts, and the box never covers the shell lines above the agent. - Agents are listed as Claude Code, Codex, Copilot CLI everywhere. Plain
peekmenow runs the first one of them that is installed, in that order. Before, it preferred Codex. - A shell setup from an older version that differs only in this order is left as it is.
0.3.2 (2026-09-28)
- Updating peekme now also updates your shell setup. Before, a setup made with an older version
only knew
codex, so after updating,claudeandcopilotstill started without peekme until you ranpeekme installagain. Now peekme adds the missing agents the first time it starts and tells you once. - Inside tmux, a selection you cleared with a click right after making it was still explained by the next Alt+P or Option+P. peekme now only takes a copy the agent made after your last mouse release.
0.3.1 (2026-09-28)
- Alt+P and Option+P work inside tmux with Claude Code and Codex. Inside tmux these agents do not
send a mouse selection to the terminal, they give it to tmux, so peekme saw nothing and Option+P
typed
π. peekme now reads the selection from tmux. This also covers SSH with tmux on the other side. - With tmux handling the mouse (
set -g mouse on) and Claude Code's classic screen, a selection made with tmux can be explained too. - Every release is now tested through tmux and SSH in many combinations, and in the real Terminal and iTerm2 on macOS, in their default settings and with Option as Meta.
0.3.0 (2026-09-28)
- peekme works with GitHub Copilot CLI too. Type
copilotas always, select text, press Alt+P. Runpeekme installonce more so thatcopilotgets peekme. - Copilot explanations come from Copilot CLI's own headless server with your Copilot login. Each one is a short session without tools, and peekme deletes it afterwards, so it does not show in your session list. The context comes from the running session's log.
- peekme reads Copilot's selection from the OSC 52 copy it sends when you release the mouse, also over SSH and in tmux. Copilot's input line stays live under the box.
0.2.3 (2026-09-28)
- Option+P works on a Mac also over SSH and inside tmux. 0.2.2 found out from the environment
that the keyboard is a Mac's, and over SSH or in tmux it could not. Now
πexplains whenever something is selected, and is typed as usual when nothing is. - Alt+P arrives correctly when tmux sends keys in its extended format (
extended-keys). - Selecting only empty space no longer opens a box.
0.2.2 (2026-09-28)
- Option+P works on a Mac as it is. Mac terminals send Option+P as
π, and peekme now takes that as the shortcut, like Claude Code does. Before, you had to set Option to act as Meta in the terminal. Also over SSH from Terminal or iTerm2. - On macOS peekme finds the running Claude Code session exactly. Before, it took the newest session in the directory, which is wrong when two run there.
0.2.1 (2026-09-28)
- You don't need Rust any more. peekme can be installed with npm (
npm i -g peekme), with Homebrew (brew install gregorybolshakov/tap/peekme) or with a shell script. Each release has ready binaries for Linux and macOS, on x86_64 and ARM. - Ctrl+Z works when peekme was started through another program, like the npm launcher. Before, the terminal could wait forever.
0.2.0 (2026-09-28)
- peekme works with Claude Code too. Type
claudeas always, select text, press Alt+P.peekme installnow hooksclaudenext tocodex. If you installed 0.1, runpeekme installonce more. - Claude Code explanations come from
claude -pon Haiku with your Claude Code login. The session is not saved. The context comes from the running session's transcript, and Alt+P again sends the whole conversation (after asking, when it is big). - In Claude Code's full screen mode peekme reads the selection from the OSC 52 copy Claude sends when you release the mouse. In the classic mode it reads the X11 PRIMARY selection.
- Claude's input line stays live under the box, as with Codex. Ctrl+Z works with Claude too.
- The box is never drawn in the middle of an escape sequence from the agent. Before, if the agent's output stopped inside one (a window title, say), part of it could show as text.
- While an explanation streams in, the box is redrawn at most about 30 times a second. This sends much less to the terminal.
peekme doctorchecks both agents. Plainpeekmeruns Codex, or Claude Code when only that is installed.
0.1.3 (2026-09-27)
- peekme uses the shared Codex server that Codex 0.157 runs in the background, instead of
starting its own. A session now costs a few MB instead of about 250 MB. The connection is
made on the first Alt+P and made again if it drops. Without the shared server, peekme starts
its own server as before.
PEEKME_OWN_SERVER=1forces that. - Alt+P again on a long chat shows the size first. Above about 40k tokens it asks for one more Alt+P before it sends the whole conversation.
0.1.2 (2026-09-27)
- Works with Codex 0.157, which draws full screen and handles the mouse itself. peekme uses the text Codex highlights when you drag. Moving the mouse no longer closes the box, the mouse wheel scrolls it, and a click closes it and still reaches Codex.
- The Codex input line stays live under the box in full screen too, and the box closes by itself when Codex asks for approval.
0.1.1 (2026-09-27)
- Text in the box is cleaned before it is drawn. The explanation, the selected text and error messages can no longer send terminal control sequences, for example one that writes your clipboard, or characters that reverse the order of the text.
0.1.0 (2026-09-26)
peekme installmakescodexopen with peekme. It adds a shell functioncodexand acodexlink at the front of PATH. Aliases and scripts that callcodexkeep working.peekme uninstallremoves it and leaves your files as they were.peekme doctorchecks the setup and says what is in the way.- The first plain
peekmerun asks once if it should set this up. - Only Codex's interactive screen gets peekme.
codex exec,login,mcpand the other subcommands, and output to a pipe or a file, run plain Codex directly. - peekme never wraps itself twice.
- Ctrl+Z works. Codex stops, you get your shell back, and
fgbrings it back. Before, Ctrl+Z did nothing inside peekme. - The Codex input line and status line stay live while the box is open. You can type, and Enter sends the message and closes the box. If Codex needs more room, for example for an approval question, the box closes by itself.
- If peekme can't start its terminal, it starts Codex directly. If something inside peekme
fails later, it logs the error, puts the screen back and keeps passing Codex through.
The log is in
~/.local/state/peekme/peekme.log. - The box gets smaller when the explanation is complete, so it takes only the rows it needs.
- A comma or a bracket after styled text no longer starts a new line in the box.
- The terminal cursor is hidden while the box is open. Before, it could show inside the box text.
0.0.1 (2026-09-26)
First working version.
- Runs Codex (or any command) in a pseudo-terminal. Output goes to the terminal unchanged and is also kept in a terminal emulator in memory.
- Alt+P explains the text selected with the mouse (X11 PRIMARY selection). The box opens under or above the text without clearing the screen. Works with the kitty keyboard protocol and with any keyboard layout.
- Esc restores the screen from a copy and then sends the Codex output that arrived meanwhile.
- Explanations come from
codex app-serverwith a temporary thread on the account's fast model, so no API key is needed. - The model gets the text around the selection with the selection marked, the request it answers, a short list of earlier requests and earlier uses of the same words.
- Alt+P again on the same selection explains with the whole conversation.