Why your Mac overheats when AI coding agents run
Claude Code, Codex and Cursor are not heavy on their own. The heat comes from everything they start.
Where the heat actually comes from
An AI coding agent is mostly a thin program that sends text to a model over the network. That part uses almost no CPU. The heat starts when the agent acts on your behalf and runs commands in your terminal:
- Builds and type checks.
swift build,cargo build,tsc,webpack, Xcode builds. These use every core for as long as they run. - Test suites. Agents love to run the tests after every change, often in parallel workers.
- Dev servers and watchers.
next dev,vite,nodemon. Each restarts and recompiles on every edit the agent makes. - Media and data jobs.
ffmpeg, image processing, local model runs with Ollama or LM Studio. - Several agents at once. Two or three sessions across different projects multiply all of the above.
A fanless MacBook Air has no fan to push heat out, so it warms up and the chip lowers its own speed to protect itself. A MacBook Pro keeps going but the fans get loud. In both cases the base problem is the same: sustained 100% CPU from many small processes nobody is watching.
Why Activity Monitor does not make this obvious
Activity Monitor lists processes one by one. A single agent session can leave 40 to 80 entries named node, esbuild, rustc, cc1 or zsh. None of them says "Claude Code did this". Activity Monitor also does not show chip temperature at all, so you can see the load but not the heat.
How to find the culprit
- Open Activity Monitor, click the CPU tab and sort by % CPU.
- Look for the same tool name repeated many times (for example a pile of
nodeorrustcprocesses). - Select one and press the info button, then open Open Files and Ports or check the parent in the process tree (View → All Processes, Hierarchically) to see which terminal or agent started it.
- Close or stop the session that owns the group, not just one process, or the agent will start it again.
This works but it is slow, and you have to repeat it every time the fan spins up.
How to cool the Mac without killing the work
Quitting the agent works, but you lose progress. A better option is to keep the work running at a lower priority so macOS runs it on the efficiency cores instead of the performance cores. Efficiency cores use far less power, so the chip runs cooler and quieter. The job finishes a little later.
From a terminal you can start a command in background mode:
taskpolicy -b npm run build
For processes that are already running, you need to change their priority by process ID. That is tedious to do by hand for dozens of processes, which is the gap WhoIsCooking fills: it groups each agent session with everything it started, shows one row per agent with its CPU share, and has a single Cool down my Mac button that moves every busy user process to the efficiency cores and keeps catching new ones. In our test the same render ran at 64°C at full speed and 50°C cooled.
Habits that keep a Mac cooler with AI agents
- Limit parallel test workers (for example
--maxWorkers=2in Jest) when an agent is iterating. - Stop dev servers when the session ends. Agents often leave them behind.
- Run only one or two agent sessions at a time on a fanless laptop.
- Keep the Mac on a hard surface with space around it, not on a bed or sofa.
- Check System Settings → Battery and switch to Low Power Mode for long sessions on battery.
Frequently asked questions
Why does my MacBook get hot when I use Claude Code?
Claude Code itself uses little CPU. The heat comes from the builds, tests, dev servers and scripts it runs in your terminal, which can keep every CPU core busy for long stretches.
Is it bad for my Mac to run hot while coding?
Apple Silicon Macs protect themselves by slowing down when they get too hot, so occasional heat is not damaging. Sustained heat makes the Mac slower and louder, and on battery it drains faster.
How do I cool my Mac without closing my AI agent?
Move the agent's heavy processes to the efficiency cores. Running a command with taskpolicy -b does this for new commands, and an app like WhoIsCooking does it for everything already running with one click.