Quick start¶
This page sets up continuation from Claude Code to Codex and back, checks the setup, and starts a session.
Prerequisites¶
vexy-overnightis installed so thatpython3can import it. See Installation.claudeandcodexare installed and logged in.- You have read the warning on the home page: the assistants run without permission prompts.
1. Install the hooks¶
The hook scripts are now in ~/.claude/hooks/ and ~/.codex/. Nothing calls them yet.
2. Connect the hooks to the assistants¶
What changed:
~/.claude/settings.jsonnow has aStophook that runs"~/.claude/hooks/vocl-go.py" "$CLAUDE_PROJECT_DIR". Any otherStophooks in that file are replaced.~/.codex/config.tomlnow hasnotify = ["~/.codex/voco-go.py"](with your real home path). Any previousnotifyvalue is replaced.
Before each change, the file is copied to <name>.backup.<YYYYMMDD_HHMMSS> next to it.
3. Check the status¶
installed tells whether the command is found on your PATH.
4. Check where each tool hands over¶
The first time you run a command that reads preferences, ~/.vexy-overnight/settings.toml is created with the defaults: Claude hands over to Codex, Codex hands over to Claude, Gemini does not hand over.
claude: {"enabled": true, "target": "codex"}
codex: {"enabled": true, "target": "claude"}
gemini: {"enabled": false, "target": "claude"}
To make Claude continue in Claude instead:
5. Give the next session something to do¶
The prompt for the next assistant is built from the template for the tool that just finished. The default Claude template is:
{todo} becomes the first five lines of TODO.md in the project directory that start with - [ ], or No open TODO items. if there are none. Keep a TODO.md with open items:
6. Start working¶
vocl starts Claude with --dangerously-skip-permissions --model claude-sonnet-4. When Claude stops, the Stop hook prepares the Codex command and opens a terminal that runs it. When Codex finishes, its notify hook does the same in the other direction.
Stop the loop¶
To stop handing over without removing anything:
The hooks still run, but they exit at once and delete their pending vocl-new.json or voco-new.json.
To disconnect the hooks from the assistants completely: