Send a teammate your Codex coverage report as a link, after you approve it

●3
calendar_today ago • schedule3 min read

When Codex runs your test suite with coverage, the nicest output is usually the HTML report: htmlcov/index.html from coverage.py, coverage/lcov-report/index.html from Jest or c8. It is also the output that is hardest to share. It is a folder of files on your laptop, and a screenshot loses the per-file drill-down.

This note shows a small setup where you can tell Codex "run the tests and share the coverage report", and it comes back with a public link only after it has shown you exactly what will go up and you have said yes.

1. A per-repo rule in AGENTS.md

Codex reads AGENTS.md in the repo root. Add a short section:

## Sharing reports
- Coverage HTML lives in htmlcov/ (pytest-cov) or coverage/lcov-report/ (Jest).
- To share it, first run: share-report.sh <folder>
  This only prints a preview (file count, size, title). Show it to me.
- Only after I reply "yes" in chat, run: share-report.sh <folder> --confirmed
- Never pass --confirmed on your own, and never print the saved token.

The rule lives in the repo because the report path is project-specific. If you also want it everywhere, put the same lines in ~/.codex/AGENTS.md.

2. The script

Save as ~/.local/bin/share-report.sh and chmod +x it. It packs the folder into a tarball with its contents at the site root, so every file keeps its relative path, and publishes it to deed.page, a hosting API built for agents (one HTTP request, no account needed for the first publish).

#!/usr/bin/env bash
# share-report.sh DIR [--confirmed]   preview by default, publish only with --confirmed
set -euo pipefail
DIR=${1:?usage: share-report.sh DIR [--confirmed]}
[ -f "$DIR/index.html" ] || { echo "No index.html in $DIR"; exit 1; }
N=$(find "$DIR" -type f | wc -l); SIZE=$(du -sh "$DIR" | cut -f1)
if [ "${2:-}" != "--confirmed" ]; then
  echo "Ready to publish $DIR: $N files, $SIZE. This will be public. Ask the user first."
  exit 0
fi
CONF=~/.config/deed-page; mkdir -p "$CONF"; chmod 700 "$CONF"
KEY=$(realpath "$DIR" | sha1sum | cut -c1-10)
SLUG=$(cat "$CONF/slug-$KEY" 2>/dev/null || echo "cov-$(openssl rand -hex 4)")
TOK=${DEEDPAGE_TOKEN:-$(cat "$CONF/token" 2>/dev/null || true)}
TGZ=$(mktemp --suffix=.tar.gz); tar -C "$DIR" -czf "$TGZ" .
AUTH=(); [ -n "$TOK" ] && AUTH=(-H "Authorization: Bearer $TOK")
RESP=$(curl -sS -T "$TGZ" -H "Content-Type: application/gzip" "${AUTH[@]}" \
  -H "X-Client: codex" "https://deed.page/v1/sites?slug=$SLUG"); rm -f "$TGZ"
NEW=$(printf '%s' "$RESP" | sed -n 's/.*"token": *"\(deed_tok_[^"]*\)".*/\1/p')
(umask 077; printf '%s' "$SLUG" > "$CONF/slug-$KEY"; [ -n "$NEW" ] && printf '%s' "$NEW" > "$CONF/token") || true
printf '%s' "$RESP" | python3 -c 'import json,sys; print(json.load(sys.stdin).get("url"))'

A few details matter here:

  • Preview is the default. The script cannot ask "Publish? [y/N]" itself, because Codex runs it in a shell nobody is watching and could answer for you. Splitting it into a preview call and a --confirmed call keeps the decision in the chat, with you.
  • The token never reaches the model. The first publish returns an owner token. The script writes it to ~/.config/deed-page/token with mode 600 and prints only the URL, so it never shows up in the transcript.
  • Keep it small. One request carries up to 4 MB, which covers a normal coverage report. For bigger folders the docs describe a multi-part upload.
  • Same folder, same link. The slug is remembered per folder, so re-running tests and sharing again updates the page your teammate already has instead of creating a new one.

3. What a session looks like

You: run the tests with coverage and share the report

Codex: Tests passed (212). Ready to publish htmlcov: 48 files, 1.1M. This will be public. Publish it?

You: yes

Codex: https://cov-3f9a1c2e.deed.page/

To take it down later, send DELETE https://deed.page/v1/sites/<slug> with the saved token as a Bearer header.

Things to check before you rely on it

Coverage reports include your source code line by line. Only share reports for code that is already public, or that you are fine making public. If the report is for a private repo, keep it local.

More options (custom domains, private pages on paid plans, the MCP server) are in the deed.page docs. The script and a ready-made skill for other agents are in deed-page-skill on GitHub.

From the deed.page team at Avatar 8 LLC.

🔥 Join developers growing publicly
Share your knowledge, build in public, and grow your developer presence with a global community.

More Posts

Cisco's Amy Chang: A Model's "Passport" Doesn't Tell You Where It Actually Came From

Tom Smithverified - Aug 27

Dozens of email accounts: learning AI coding tools as a student

rahuldk1105 - Oct 27

Your AI Doesn't Just Write Tests. It Runs Them Too.

Kevin Martinez - May 12

Local-First: The Browser as the Vault

Pocket Portfolio - Apr 20

The Audit Trail of Things: Using Hashgraph as a Digital Caliper for Provenance

Ken W. Algerverified - Apr 28
chevron_left
126 Points • 3 Badges
1Posts
0Comments
Hosting API for AI agents. deed.page

Related Jobs

Commenters (This Week)

15 comments
4 comments
1 comment

Contribute meaningful comments to climb the leaderboard and earn badges!