Project Turquoise
Welcome to Project Turquoise
In this project we compare how two coding agents — Codex CLI and Claude Code — handle the same real task, side by side.
Work through the blocks in order — each one tells you what to do.
End-to-end flow
From blank agents to a Drive submission
.jsonl (or use agent-exported .md when you already have a
faithful transcript), clean it to the Project Turquoise format, then upload to the
team Drive folder with your alias.
Step 1 — Set up two blank-slate agents
Each session runs the agent with a throwaway config home — your own setup is untouched, and the agent starts with no MCP servers, no memory, no custom instructions, and a fresh working directory.
Option A Codex
Paste this whole block into your terminal (it launches at the end):
blank_codex() {
local root codex_bin
codex_bin="$(command -v codex 2>/dev/null)"
if [ -z "$codex_bin" ] && [ -x "/Applications/ChatGPT.app/Contents/Resources/codex" ]; then
codex_bin="/Applications/ChatGPT.app/Contents/Resources/codex"
fi
if [ -z "$codex_bin" ]; then
echo "Codex CLI was not found. Install it or add it to PATH."
return 1
fi
root="$(mktemp -d "${TMPDIR:-/tmp}/codex-blank.XXXXXX")" || return 1
mkdir -p "$root/home" "$root/work"
git -C "$root/work" init -q
CODEX_HOME="$root/home" "$codex_bin" \
-C "$root/work" \
-m gpt-5.6-sol \
-c 'model_reasoning_effort="high"'
}
blank_codex
Option B Claude Code
Recommended: paste this into any coding agent (Claude Code, Codex, Cursor, etc.) and let it launch a blank-slate Claude session for you.
Set up a Project Turquoise blank-slate Claude Code session on this Mac.
Requirements:
1. Create two temp directories (config + work), e.g. with mktemp -d.
2. Write settings.json into the config dir with exactly:
{"model": "claude-fable-5", "effort": "high"}
3. Launch Claude Code from the empty work dir using:
CLAUDE_CONFIG_DIR="" claude --strict-mcp-config --mcp-config '{"mcpServers":{}}'
4. Do not add MCP servers, plugins, memory, or custom instructions.
5. Print the config dir, work dir, and the exact launch command used.
6. If `claude` is not on PATH, locate it or tell me how to install Claude Code.
7. Remind me to sign in with Claude Max if prompted, and to confirm the UI shows Fable 5 at high effort before I send my first task prompt.
Run the commands for me (or print them clearly if you cannot launch interactively).
Manual setup (terminal commands & notes)
Paste this into your terminal yourself:
cfg="$(mktemp -d)"; work="$(mktemp -d)"
echo '{"model": "claude-fable-5", "effort": "high"}' > "$cfg/settings.json"
cd "$work" && CLAUDE_CONFIG_DIR="$cfg" claude --strict-mcp-config --mcp-config '{"mcpServers":{}}'
Notes (both agents)
- Each session starts clean, so the agent will ask you to sign in: Codex with your ChatGPT Pro account, Claude Code with your Claude Max account. That’s expected.
- Before your first prompt, check the session shows the right model: GPT-5.6-Sol in Codex, Fable 5 in Claude Code, both at high reasoning.
- If anything about setup fails, you can ask the agent itself to fix it.
- Don’t add tools, MCP servers, or settings beyond these commands.
- You’ll confirm this setup in the checklist below, and report the settings again after your sessions.
Before you begin — confirm setup
Check every box. If any of them doesn’t hold yet, fix your setup first.
Step 2 — Run the same task in both agents
The exchange protocol
- Give the exact same initial prompt to both agents, word for word.
- Work the problem back and forth with each agent as you naturally would.
- Stop when solved, or after 15 back-and-forth exchanges — whichever comes first.
When you finish each session
Send the following prompt to the model:
Please save a faithful transcript of this conversation as a .md file titled "claude/codex-transcript-'first four characters of task id'.md". Do not include any reference to the model or harness used.
Once the file is created, ask Claude Code / Codex to save the file to a permanent folder on your device (for example Desktop or Documents).
What to write up for the submission form
Block 1 — Task description
Describe what you set out to do and why, what area of coding the task sits in, the required expertise, and how long the task would take an expert to do themselves.
Block 2 — Initial prompt
Copy and paste the initial prompt you gave to both Codex and Claude Code (must be identical).
Save transcripts (two useful paths)
Project Turquoise wants a faithful Markdown transcript. tourqmd can also rebuild one from the raw session log.
Path A — Agent-written transcript (protocol default)
- Use the “save a faithful transcript…” prompt at the end of each session.
- Ask the agent to move the
.mdto a permanent folder. -
Keep both files clearly named, e.g.
codex-transcript-ab12.mdandclaude-transcript-ab12.md.
Option / Path B Raw session logs → tourqmd
If you need a mechanical export of everything that happened (or the agent transcript
is incomplete), recover the raw .jsonl and convert it in tourqmd.
Recommended: paste this into a coding agent and let it locate and stage the files for you.
Help me recover Project Turquoise session logs for Codex and/or Claude Code on this Mac and stage them for tourqmd. Do the following: 1. Find the newest relevant session files: - Codex: ~/.codex/sessions/**/rollout-*.jsonl (and any CODEX_HOME temp homes I still have open) - Claude Code: ~/.claude/projects/**/*.jsonl (and any CLAUDE_CONFIG_DIR temp configs) 2. List the newest few with full paths, sizes, and modified times. 3. Copy the ones I choose (or the newest for each tool) to a permanent folder on my Desktop, e.g.: ~/Desktop/turquoise-sessions/ Name them clearly, e.g. codex-<taskid>.jsonl and claude-<taskid>.jsonl 4. Remind me to open https://tourqmd.traphic.dev/ , drop each .jsonl, review Reader mode, then Submit with my alias. 5. If blank-slate sessions used temp CODEX_HOME / CLAUDE_CONFIG_DIR, search /tmp and $TMPDIR for recent codex-blank.* / claude config dirs and check those too. 6. Do not upload anywhere yourself — only copy files locally and print the final paths. If a path is missing or empty, explain what to re-run and how to save a transcript before closing the agent next time.
Manual — paths, Terminal, and Finder
Codex log location
~/.codex/sessions
ls -lt ~/.codex/sessions/*/*/*/*.jsonl | head open ~/.codex/sessions
Files look like
~/.codex/sessions/YYYY/MM/DD/rollout-….jsonl
CODEX_HOME="$root/home", logs may live under that temp home, not your
normal ~/.codex. At the end of the session, ask Codex to copy the
transcript (or the session file) to Desktop/Documents before you close the terminal.
Claude Code log location
~/.claude/projects
open ~/.claude/projects find ~/.claude/projects -name "*.jsonl" | head
CLAUDE_CONFIG_DIR="$cfg", the session may be stored under that temp
config dir. Before exiting, ask Claude to write the transcript to a permanent path.
Finder (Mac)
- Press ⌘ + Shift + G
- Paste
~/.codex/sessionsor~/.claude/projects - Locate the newest session file
Then convert
- Open tourqmd.traphic.dev
- Drop each
.jsonl - Review in Reader mode → Download or Submit with your alias
Convert with tourqmd
Clean back-and-forth transcripts for upload and rating
- Open the converter.
-
Drop a Claude or Codex
.jsonl(or use a sample to learn the UI). - Review in Reader mode (formatted). Switch to Source for raw Markdown.
- Copy or Download .md for your records.
Output shape
# Transcript **User:** your message **Assistant:** agent reply and readable actions **User:** … **Assistant:** …
Submit to Google Drive
After both transcripts look good
- Convert each session (Codex + Claude) in tourqmd.
- Click Submit.
- Enter your alias only (no email).
-
The file uploads as
alias-1__….md, thenalias-2__….md, and so on.
| Alias | ID | Drive file |
|---|---|---|
jane |
jane:1 |
jane-1__….md |
jane again |
jane:2 |
jane-2__….md |
Prefer clear names before upload when possible (e.g. include
codex / claude in the source filename). Your alias still
drives the unique ID.
Task write-up (for the submission form)
Fill these two blocks carefully — raters rely on them
Block 1 — What you set out to do
Include:
- What you set out to do and why
- What area of coding the task sits in
- Required expertise to perform the task
- How long an expert would take to do it themselves
Block 2 — Initial prompt (identical for both agents)
Copy and paste the exact initial prompt you gave to both Codex and Claude Code.
Creating · Vetting · Blind rating
How your work is used in the project
Creating & rating
You run the dual-agent protocol on a real task, upload both logs (via tourqmd when needed), and rate each agent’s run.
Vetting
Another person checks that the task is realistic usage and that the package is complete and consistent (same prompt, both agents, transcripts present).
Blind rating
Raters read both transcripts independently. The first rater’s scores are never shown to the second. Keep transcripts free of model/harness names so rating stays fair.
Troubleshooting
| Problem | What to do |
|---|---|
| Codex / Claude not found |
Install the CLI and ensure it is on PATH. For Codex Desktop, the
blank_codex helper also checks
/Applications/ChatGPT.app/Contents/Resources/codex.
|
| Wrong model shown | Exit and re-run the blank-slate commands. Confirm GPT-5.6-Sol (Codex) and Fable 5 (Claude) at high effort before the first prompt. |
| Can’t find session files | Blank-slate homes are temporary. Always ask the agent to save the transcript to Desktop/Documents before closing the terminal. |
| tourqmd Submit greyed out | Convert a file first (preview must appear in Reader mode). |
| Drive upload fails | Admin must finish admin Drive setup (Google connected + folder saved). |
redirect_uri_mismatch |
Google OAuth Web client must include exactly
https://tourqmd.vercel.app/api/google-callback
|
Useful links
https://tourqmd.vercel.app/
https://tourqmd.vercel.app/instructions.html
https://tourqmd.traphic.dev/admin.html
You’re ready
Set up blank agents → run the same task twice → save both transcripts → convert in tourqmd if needed → submit with your alias.