Batonpass — Development skill for Claude Code
Local, verbatim session handoff between Codex and Claude Code, in both directions, plus messages between the two agents.
How to install Batonpass
This entry records only its repository, not the path inside it, so there is no
exact command to give. Open benatsf/batonpass and copy the folder into
~/.claude/skills/, or the file into ~/.claude/agents/.
What Batonpass does
Local, verbatim session handoff between Codex and Claude Code, in both directions, plus messages between the two agents. On macOS, also keeps Claude desktop's Code-tab sessions visible in every Claude account.
Alternatives in Development
- Claude Keysmith — Managed Claude Code instruction deployment with safe CLI recovery and an unsigned macOS/Windows desktop beta 696 ★
- Clarc — Native macOS client for Claude Code — a GUI desktop app built with SwiftUI 363 ★
- Cc Bar — Native macOS menu bar app: track quota, usage and cost for Codex (multi-account) and Claude Code, from your me 119 ★
README
batonpass
Automatic, local, verbatim session handoff between Codex and Claude Code.
Finish a turn in Codex, open Claude Code in the same repository, and it already knows what Codex just did: the last exchanges word for word, the goal, the pull requests and the state of the branch. The same works from Claude Code to Codex. No command to remember, no hosted service, no model-written summary.
While both work on the same repository, either one (or you) can also message the other with `baton send`; the message shows up in the other agent at its next prompt, tool call or turn end.

How it works
Stophook (both tools, runs in the background): reads the new lines of the session transcript, removes secrets, stores the dialogue in a local SQLite ledger (~/.baton/baton.db) and renders a numbered snapshot of the project.SessionStarthook (both tools): injects the latest brief, about 2,000 tokens, as context. No network call, no model call.PreCompacthook: stores everything before the tool compacts its own context.UserPromptSubmit,PostToolUseandStophooks (both tools): deliver messages from the other agent. See Messages between agents.- Sessions are grouped by git remote, so clones and worktrees of one repository share one history.
The brief is framed as prior context, not instructions, and always tells the new session how to look further back: `baton search ""`, `baton show --full`, or the original session (`codex resume `, `claude --resume `).
Install
Requires Node.js 24 or later.
npm install -g @batonpass/cli
baton install --dry-run
baton install
`baton install` merges five hooks into `~/.claude/settings.json` and `~/.codex/hooks.json`, installs the `baton-resume` and `baton-message` skills for both t
Related Skills
FiaOS
Open a browser tab — you're now driving your computer. Live remote desktop + real PTY shell (Claude Code, vim,
Claude Graft
Run several Claude Desktop accounts side by side on macOS, sharing Claude Code chats between them
Catalog Dtd
verify an index against its directory in both directions; every entry is declared and present, declared and mi
Tabcli
Terminal Agent Bridge (TAB): run Codex, Claude Code, Agy, and Pi CLIs in visible terminal tabs.
Add i18n Message Key
Use when adding or changing visible copy, metadata, labels, validation messages, alt text, aria text, toasts,
Archive Transcript
Archive a podcast/talk transcript from a URL into the vault — verbatim body plus a synthesis header — without
Related Agents
Design Handoff
Agent Handoff Designer on the Atlas bench. Keeps real MCP and CLI next actions visible, state-bound, portable,
Session Handoff Writer
Writes and reads handoff documents so work continues across sessions or context resets, and keeps the cross-pr
UI Boss
Use PROACTIVELY for UI/UX and frontend quality on any work touching the visible interface — builds premium, re