Most days I have a few Codex sessions running across different things. The next morning usually starts with a small tax: checking terminal history, remembering which branch was dirty, finding which session had the useful context, and deciding what is actually urgent before doing anything new.
I built a Codex automation to skip that step. It runs once a day and hands me a digest of what needs my attention across yesterday’s sessions. If you haven’t used them, Codex automations are scheduled prompts inside the Codex app — give it a task, a cadence, and a workspace, and it runs on its own.
Mine is called Codex Morning Digest. It does four things:
- looks through yesterday’s Codex sessions and any early-morning spillover
- groups items by what needs attention, what is waiting on a decision, what is conditional, and what can be ignored
- sends a short Gmail note with the top priorities
- generates a full digest, a Markdown report, and an HTML summary table with deep links back into each session

The thing that makes this useful is that it is not an activity summary.
I do not need “you worked on five things yesterday.” I need “this branch is unpushed”, “this design change needs you to try it”, “this validation failed”, or “this should not continue until you make a decision.”
Most of that comes from the prompt itself, which is structured around acting on the day rather than recapping it:
Create my daily Codex morning work digest.
Goal:
Help me start the day by quickly understanding what meaningful Codex
work happened yesterday and early today, what needs my attention,
what can be ignored, and what I should act on first.
Group the digest into:
1. Needs my attention today
2. Waiting on my decision
3. Conditional / only if active
4. Completed / no immediate action
5. Reference only, if useful
For each important item, include:
- What happened
- Why it matters
- My next action
- Thread: codex://threads/<thread-id>
Flag clearly:
- Uncommitted work
- Unpushed branches
- Failed or incomplete validation
- Missing secrets/config
- Subjective product decisions
Be selective. Do not include every session.
Compress logistics unless they change what I need to do today.
The Thread: codex://threads/<thread-id> line matters more than it looks. Codex emits those URIs as deep links into each session, so every item in the digest comes with a one-click jump back into the thread it came from.
The first version of this just emailed me the whole digest. It worked, but the email was long and dense — exactly what I built this to avoid in the morning. So I split it: the email holds the headline priorities, and a separate HTML summary table hosts the actionable bits as quick-glance cards with Open and Copy URI buttons for each deep link.

A redacted snapshot of one run:
What's priority today
1. Review the large unpushed UI branch before starting new work.
2. Decide whether the new algorithm direction is worth implementing.
3. Fix the backup automation auth issue before trusting it.
4. Keep the database migration plan parked until product direction is stable.
Needs my attention today
UI branch review
- What happened: a large UI/local-dev setup was merged locally.
- Why it matters: validation passed, but the work is still only on this machine.
- Flags: decision needed, unpushed, partial validation.
- My next action: try the app, decide whether to push it, and handle
the untracked environment file.
- Thread: codex://threads/...
Now I open Gmail, read four lines, click into whichever session needs me first.
A few small things I hit while building it:
codex://links did not survive plain Markdown/chat clients, which is why the HTML summary table exists. Without it, deep linking looks great in the prompt and breaks in practice.- The Codex Gmail connector only supports plain-text email, so I stopped trying to make the email itself the report. Email is the alert; the summary table and the Markdown file are the report.
- My first prompt was too eager to include everything. Adding “be selective, compress logistics, do not repeat the same workstream in multiple sections” was what made the output actually scannable.
There’s also no reason this has to stay Codex-only. The same digest pattern works on any agent’s session logs — I’m pulling my Claude Code sessions into it next, so the morning handoff covers everything I worked on yesterday and not just the half that lived inside Codex.
If you keep a few agent sessions running at once, this is worth ten minutes of setup. Don’t ask the agent for a recap of yesterday — ask it for a handoff into today.
Raw prompt and TOML config: codex-morning-digest/automation.toml. The rest of my agent automations live in the same repo.