Blog · October 22, 2026 · 7 min read · by Vilva Athiban P B

Pomodoro vs Agent-Driven Breaks: Timing Movement to Claude Code and Codex Runs Instead of a Timer

The Pomodoro technique has survived forty years of productivity fads for a good reason: it works for work that is continuous. You set a timer, you push for twenty-five minutes, you stop for five, and the rhythm keeps you honest. Programming with an AI coding agent is not continuous. It is bursty: a minute of thinking and typing, then two to fifteen minutes in which Claude Code or Codex does the typing while you wait, then a decision, then another wait. A fixed timer cuts across that rhythm at random, and the result most people get is the worst of both: the timer goes off mid-thought, and the long agent waits are spent scrolling.

This post compares the two ways of scheduling movement breaks during a day of agent-assisted coding, timer-driven and agent-driven, as honestly as we can, including the cases where the timer is still the right tool. The agent-driven version here is NotchFit, which opens a guided exercise in the MacBook notch when Claude Code or Codex starts a task and tells you when the agent is done or needs permission; the timer-driven version is any Pomodoro app or a kitchen timer.

What Pomodoro gets right

Francesco Cirillo’s method, from the late 1980s, has three properties worth keeping. It is predictable: you always know when the next break is. It protects the work: the rule that a Pomodoro cannot be interrupted makes you defer the small distractions to the break. And it is external: the decision to stop is made by the timer, not by your willpower at minute forty, which is the moment willpower is weakest. Break-reminder apps that nag every thirty or sixty minutes are the same idea with a different interval, and we compared the main ones in NotchFit vs break-reminder apps.

If your day is writing, reading, design or hand-written code with no agent, keep the timer. Nothing below applies, and a 25/5 rhythm is as good a default as there is.

Where the timer breaks down with an agent

An agent-assisted session has two kinds of time that look identical on a clock and feel completely different in the chair. There is the time you are driving: reading the diff, deciding what to ask for, reviewing a plan, resolving a permission prompt. Interrupting that is expensive; it is the part where you hold the problem in your head. And there is the time the agent is driving: tests running, a refactor in progress, a subagent reading files. Interrupting that costs nothing, because you were not doing anything.

A timer cannot tell them apart. Set to twenty-five minutes, it will fire in the middle of a code review about as often as in the middle of a wait, and when it fires during a review you will dismiss it, which teaches you to dismiss it. Meanwhile the waits, which are the obvious time to stand up, go unused, because nothing marks them as breaks. The pattern is easy to recognise in your own day: plenty of idle minutes, and almost none of them become movement.

What agent-driven means in practice

Agent-driven scheduling flips the trigger. Instead of a clock, the cue is the agent starting work. NotchFit does this through a Claude Code plugin and Codex skills and hooks, installed with one click from its Setup screen: when a task starts, the notch expands into a panel with the next exercise from your plan animated on the left and the AI’s live progress on the right. The hooks run asynchronously, so they never slow the agent down, and everything talks to the app over localhost on your own Mac.

Three details make this more than a reminder with a different trigger. Every set starts only when you tap Start set, so an agent starting a two-second task does not drag you into a workout. If the agent finishes or needs permission while you are mid-set, the alert waits until the set ends, so you are never torn between a rep and a prompt (the reasoning is in why mid-set notifications wait). And the Hide workout toggle turns the notch into a pure status panel on days when you do not want to move at all, which is an honest admission that some days are like that.

Side by side

  • Trigger. Timer: elapsed time, regardless of what you are doing. Agent-driven: the agent starting a task, which is by definition a moment you are not typing.
  • Interruption cost. Timer: random; sometimes zero, sometimes a lost train of thought. Agent-driven: near zero, because the cue only arrives when the machine has the wheel.
  • Break length. Timer: fixed, usually five minutes. Agent-driven: variable; a set is thirty to ninety seconds, and a long run can hold several sets with rest timers between them.
  • Predictability. Timer: high. Agent-driven: low; on a day of short tasks you may get a dozen cues, on a day of thinking you may get two. This is the real trade-off.
  • What you do in the break. Timer: whatever you like, which in practice is often the phone. Agent-driven: a specific exercise from a plan, with a countdown ring and Done, Skip and Pause, so the break has content.
  • Knowing when to come back. Timer: you watch the clock. Agent-driven: the panel tells you when the agent is done or needs permission, with optional spoken alerts using on-device macOS voices.

The trade-offs, honestly

Agent-driven breaks have a floor problem. If you spend an afternoon designing, writing a document or hand-coding something delicate with the agent idle, there are no cues and therefore no movement. The research on short movement breaks, summarised in our exercise snacks post, points at frequency, not intensity; a day with zero breaks is the thing to avoid. The practical fix is a hybrid: let the agent drive on agent days, and keep a long-interval timer, sixty or ninety minutes, as a backstop that only fires when the notch has been quiet. You will rarely hear it on a busy agent day and you will be glad of it on a quiet one.

There is also a ceiling problem, the opposite case. On a day of many small tasks, every one opens the notch, and if you tried to do a set on each you would do nothing else. NotchFit’s answer is that sets never auto-start and skipping is a first-class button, but the discipline is still yours: treat the panel as an offer, do a set on the runs long enough to finish one, and skip the rest without guilt. Your plan, written by Claude Code with /notchfit:plan or by Codex with $notchfit-plan, sets days per week and minutes per day, and the streak and history heatmap show whether you are actually hitting them; a plan you keep skipping is a plan that asked for too much, and the fix is a smaller plan, not more willpower.

Finally, Pomodoro’s best feature, the protected focus block, has no equivalent here, and that is fine. The agent-driven model does not try to manage your focus; it only claims the minutes the agent already took from you. If you need help staying off Slack while you drive, that is a different tool, and the two coexist without conflict.

A simple way to run the hybrid

  1. Install NotchFit, connect Claude Code and Codex from the Setup tab, and use the Try it simulate buttons to see the notch open once before trusting it on a real task.
  2. Write a plan that asks for half of what you think you can do. On agent days the cues arrive on their own; your only job is to tap Start set on the long runs.
  3. Keep a long-interval timer, sixty to ninety minutes, for the non-agent stretches. When it fires and the notch has been quiet, stand up and do the next exercise from the plan manually.
  4. Review the heatmap weekly. If agent days are green and writing days are blank, lengthen nothing; shorten the timer instead.

NotchFit is a workout guide, not medical advice, and nothing here is a prescription; if a movement hurts, skip it. The point of comparing the two models is narrower than fitness: a timer schedules breaks against the clock, an agent-driven cue schedules them against the shape of the work, and when the work is bursty, the second one is simply aimed at the right minutes. It costs $20 once, runs on macOS 14 or later, and needs no account.

Keep reading

Desk Exercises for Programmers: 15 Moves to Do While Your AI Agent Codes

7 min read

Exercise While Coding: Turn Claude Code Wait Time Into Micro-Workouts

7 min read

Claude Code Notch Notifications on Mac: See When Claude Is Done Without Watching the Terminal

7 min read

Claude Code Tips and Tricks: 12 Ways to Use Claude Code Effectively

8 min read

Claude Code Multiple Sessions: How to Run Agents in Parallel Without Losing Track

6 min read

A Claude Code Workflow That Doesn't Involve Watching the Terminal

5 min read

Claude Code Hooks: A Practical Guide to Automating Your Agent Workflow

7 min read

Claude Code Auto Mode: Fewer Permission Prompts Without Living Dangerously

7 min read

Claude Code Subagents: How to Delegate Work to Specialized Agents

7 min read

Claude Code Context Management: Treat the Context Window Like a Budget

6 min read

Per-Subagent Model Selection: Route the Grunt Work Down, Keep the Judgment Up Top

7 min read

Skills and Plugins: How to Teach Claude Code Your Way of Working

7 min read

Claude Code Background Tasks: Run Long Commands Without Blocking Your Session

6 min read

Codex CLI Notifications: How to Get a Ding When Codex Is Done or Needs Input

7 min read

Cursor Notification When Done: Every Way to Get Notified When Cursor Finishes

6 min read

Claude Code Notifications: How to Get Notified When Claude Code Finishes or Needs Your Input

6 min read

Want to Be Notified When Claude Responds? How Claude Notifications Work on Web, Desktop, and Mobile

5 min read

Claude Code Notification Scripts: Copy-Paste Recipes for Every Platform

6 min read

Get a Ding the Moment Codex Needs Your Response

6 min read

Get Notified the Moment Claude Code Is Waiting for Your Input

6 min read

“Notifications Are Turned Off for Claude” — Here Is the Fix

6 min read

Codex Sound When Done: Make Codex CLI Play a Sound When It Finishes

6 min read

terminal-notifier + Claude Code: Native macOS Alerts When Your Agent Finishes

6 min read

Gemini CLI Notifications: How to Get a Sound or Alert When Gemini Finishes

6 min read

Get Claude Code Notifications on Your Phone

6 min read

Claude Code Remote Control, Explained

7 min read

preferredNotifChannel: Claude Code's Built-In Notification Setting

6 min read

Claude Code Notifications in tmux and Over SSH

7 min read

Claude Code Effort Levels: Why Your Setting Keeps Getting Ignored

8 min read

Codex vs Claude Code Notifications: How Each One Tells You It Is Done

8 min read

Claude Code Notifications Not Working: A Diagnostic Checklist

10 min read

Claude Code Notifications Inside Your Editor's Terminal

7 min read

CLAUDE_CODE_DISABLE_BACKGROUND_TASKS Explained

7 min read

CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP Explained

8 min read

Cursor Alerts Explained: Every Alert Cursor Raises, and How to Control Them

7 min read

Claude Code Environment Variables: The Groups That Actually Matter

10 min read

Claude Code Notifications on WSL and Windows

9 min read

Claude Code Checkpoints and /rewind

8 min read

Claude Remote Control: How It Works, Turning It Off, and Auto Mode

7 min read

Claude Code /loop: Poll a Deploy, Babysit a PR, and Get Told When It's Done

8 min read

Setting Up NotchFit With OpenAI Codex CLI: Hooks, $notchfit-plan, and the Daily Flow

7 min read

Claude Mods Explained: What the New Plugin Layer Can Do, and How to Turn On 'You Should Know'

9 min read

NotchFit vs Mac Break Reminder Apps: A Clock or a Signal From Your Coding Agent?

8 min read

Claude Code Headless Mode: Running claude -p in Scripts and CI, and the Three Signals That It Finished

10 min read

Building a Movement Habit at a Desk: Use the Agent Run as the Cue, One Set as the Unit, and Streaks Carefully

8 min read

Claude Code MCP Servers Explained: Adding Servers, Choosing a Scope, Handling Secrets, and Why Long Tool Calls Go to the Background

10 min read

/notchfit:plan Explained: How Claude Code or Codex Writes a Weekly Workout Plan the Notch Can Actually Run

8 min read

Claude Code Spinner Verbs Explained: What “Pondering” and “Brewing” Mean, How to Change Them, and Why You Should Stop Watching the Spinner

7 min read

Why NotchFit's Done and Permission Alerts Wait Until Your Set Ends, When That Costs You, and How to Turn the Workout Off

7 min read

How to Resume a Claude Code Session: --continue vs --resume, Naming Sessions, the Session Picker, Branching, and What Comes Back

9 min read

NotchFit on a Mac Without a Notch: How Pill Mode Works on Mac mini, iMac, Mac Studio and a MacBook With the Lid Closed

6 min read

How to Run a Claude Code Session in the Background: /background, claude --bg, Agent View, and Getting Back to It

9 min read

What a Notch App Can See: NotchFit's Local-First Design, What the Claude Code and Codex Hooks Send, and What Stays on Your Mac

7 min read

Why Codex CLI Asks for Permission Every Time, and How to Tune the Sandbox and Approval Policy Without Going Full Access

8 min read

What to Do While Claude Code or Codex Works: A Simple Protocol for the Two-to-Twenty-Minute Gap in Every Agent Run

7 min read

Is It Possible to Get a Notification When Claude Code or Codex Hits a Reset? Yes for Claude Code: the quota_auto_resume Hooks, Explained

8 min read

What a MacBook Notch App Can Actually Do: The Five Kinds of Notch Utility, Their Trade-offs, and Where NotchFit Fits

7 min read

How to Make MCP Servers Not Take Up as Much Context in Claude Code: Tool Search, alwaysLoad, Scopes and Output Caps

8 min read

The notchfit Command Line: Drive Your Workout, Read Status as JSON, Validate Plans and Test the Notch Without Leaving the Terminal

7 min read

How to Audit MCP Tool Calls Made by Claude Code: A Five-Minute Hook Audit Log, OpenTelemetry Tool Events, and the Transcript for Investigations

9 min read

Exercise Snacks: What the Research Actually Says About One-Minute Vigorous Breaks, What It Does Not, and How NotchFit's Agent-Run Sets Compare

8 min read

How Long Until a Claude Code MCP Tool Call Times Out? The Four Timers (Startup, Two-Minute Backgrounding, Idle, Wall-Clock), Their Defaults, and Which One to Change

8 min read

Sitting Too Long as a Developer: The Posture Problems Coding Agents Made Worse, What the Research Says About Breaking Up Sitting, and How NotchFit Turns an Agent Run Into the Break

8 min read

Claude Code .mcp.json Explained: Where Project-Scoped MCP Servers Are Read From, What Happens in Subfolders and Monorepos, and Why a Committed Server Shows Pending Approval

8 min read

Standing Desk Exercises for Developers: Why Standing Still Is Not the Goal, Eight Movements That Fit a Thirty-Second Agent Run, and How NotchFit Cues Them From the Notch

8 min read

The claude mcp Command Reference: add Syntax by Transport, What --scope local, project and user Actually Mean, add-json and add-from-claude-desktop, list, get, remove, login and serve

9 min read

Your First Week With NotchFit: Install and Simulate, Run Real Tasks, Write a Smaller Plan Than You Want, Tune the Alerts, Survive the First Skipped Day, and Decide What Stays

8 min read

How to Stop a Running Claude Code Task: Esc vs Ctrl+C, Background Tasks, Subagents, and Disconnecting Remote Control

8 min read