Show each Codex turn on the board
By Jake Marsh, who builds Taskhold. Updated 2026-10-26. Facts about other tools checked 2026-10-26. 2 min read.
Codex runs a program of your choice when a turn completes and passes it the agent's last message. This script puts that message on the Taskhold task in progress, so the live board shows what Codex just said even between its own progress reports.
Codex itself connects as on the Codex setup page. For Claude Code, see the hooks recipe.
Set it up
- Save your API key where the script can read it: mkdir -p ~/.config/taskhold && printf '%s' 'atd_sk_...' > ~/.config/taskhold/key && chmod 600 ~/.config/taskhold/key (or export TASKHOLD_API_KEY).
- Save the script below as ~/.codex/taskhold-notify.sh and make it executable.
- Add the notify line to ~/.codex/config.toml, above any [table] such as [mcp_servers.taskhold]: in TOML, a key placed after a table belongs to that table.
#!/bin/bash
# ~/.codex/taskhold-notify.sh: after each Codex turn, show its last words on the Taskhold task in progress.
# Needs curl and jq. Key from TASKHOLD_API_KEY or ~/.config/taskhold/key.
input="$1"
key=${TASKHOLD_API_KEY:-$(cat ~/.config/taskhold/key 2>/dev/null)}
base=${TASKHOLD_API_URL:-https://taskhold.com/api}
msg=$(printf '%s' "$input" | jq -r '."last-assistant-message" // empty' 2>/dev/null | tr '\n' ' ' | sed 's/ *$//' | cut -c1-200)
if [ -n "$key" ] && [ -n "$msg" ]; then
auth="Authorization: Bearer $key"
id=$(curl -s --max-time 3 "$base/tasks/current" -H "$auth" | jq -r '.task.id // empty')
[ -n "$id" ] && jq -n --arg m "$msg" '{message: $m}' | curl -s --max-time 3 -o /dev/null \
"$base/tasks/$id/progress" -H "$auth" -H "Content-Type: application/json" \
-H "X-Taskhold-Agent: Codex" -d @-
fi
exit 0notify = ["bash", "/Users/you/.codex/taskhold-notify.sh"]One limit to know
notify fires once per turn, so a long turn shows nothing new until it ends, and only the first 200 characters of the message fit. The hook writes to the task Taskhold returns as in progress, which with several agents running may belong to another one. Codex's newer hooks.json Stop hook passes the same last_assistant_message on stdin if you'd rather use that.
See how far along your coding agents are.
$12/month or $120/year after the trial. Card up front. Cancel before day 7 and you pay nothing. Every agent you run is included.
Sources
- Codex docs: advanced configuration (notify), checked 2026-10-26
- Codex docs: hooks, checked 2026-10-26
Related
Updated 2026-10-26. Something wrong or out of date? Email hello@greatwork.company.