A decision framework for routing work between Claude chat and Claude Code.
01Quick reference
The rule: Draft in chat. Execute in Code.
The gate, asked in order. The first yes decides where the task goes.
- Does it write to a repo or touch a live system? → Code
- Does it call an external API? → Code, by default
- Is it pure reasoning, research, or drafting? → Chat
02Why this exists
Routing work between Claude chat and Claude Code usually ends up being a gut call. A task sits in chat longer than it should. Another gets pushed into Code when it's really just someone thinking out loud. Neither is wrong exactly, but the inconsistency costs time and makes it unclear where work actually lives.
This is the rule we landed on after running both surfaces heavily ourselves. It's deliberately simple: one line, one comparison, one three-question gate.
03The one-line rule
Draft in chat. Execute in Code.
If a human needs to read the output, reason about it, or approve it before anything happens, it belongs in chat. The moment a task has to touch a live system, it belongs in Claude Code.
Everything below just unpacks that.
04Chat vs. Claude Code, at a glance
| Claude chat | Claude Code | |
|---|---|---|
| Speed | Fast | Slower, a full environment has to spin up |
| Filesystem / repo access | Read-only, whatever you hand it | Full read and write |
| External APIs / live tools | Only if explicitly wired in | Yes, by design |
| Commits and pushes | No | Yes |
| Best for | Thinking, drafting, reviewing, deciding | Executing, persisting, running the real workflow |
05The decision gate
Ask these in order. The first one you answer yes to decides where the task goes.
1. Does it need to write to a repo or run against a live system?
Code. Always. Chat has no filesystem and no way to commit, so this one isn't really a judgement call.
2. Does it call an external API?
Default to Code. Only run it in chat if you've explicitly confirmed that surface holds the credential and can actually reach the host. If you're not sure, it's Code.
3. Is it pure reasoning, research, or drafting?
Chat. This is most of the real thinking work, and it's where chat's speed advantage actually pays off.
06Crossing surfaces
When a plan gets approved in chat and then has to run in Code, the approval doesn't travel with it automatically. Paste the approved plan into the Code session as your first message, so execution starts from signed-off input instead of re-deriving the thinking from scratch.
07One watch-out
A "permissions" error when a cloud agent calls an external system is almost always a network allow-list issue, not a missing credential. Check that before you assume the secret is wrong, it'll save you a debugging loop.
Give cloud execution a scoped, read-only token rather than your full credential set too, even when the full set would be more convenient. It keeps the blast radius small if anything goes sideways.
Built from 1000+ hours running Claude chat and Claude Code together at Kinetyca, a GTM and outbound automation team.
If it's useful, pass it on.
Matteo Fois, Co-Founder, Kinetyca
