Skip to main content
AI-Native Development · Stage 3 of 6

Plan-First AI Coding Workflow: Reviewing Before an Agent Changes State

“Planning before prompting” is still an emerging practice, not yet owned by any single vendor's playbook — which makes it one of the few places an engineering org can build a genuine, durable habit rather than copy someone else's.

  • No material change starts from an implicit plan
  • A plan is a reviewable artifact before code moves
  • Review compares the diff to the final plan, not an outdated draft

The AI-native lifecycle

  1. 1Plan
  2. 2Design
  3. 3Build— this article
  4. 4Test
  5. 5Deploy
  6. 6Maintain
5

Autonomy tiers, from read-only to production

3

Recommended concurrent sessions to start

6

Total stages in this series

Key takeaways

  • A plan naming files, order of work, risks, and proof becomes a reviewable artifact before code changes
  • Auto-accept is appropriate for read-only or small, well-tested changes — never for auth/tenant/database/payment/production by default
  • Parallel sessions are bounded by review capacity, not by how many sessions can be opened

⚠️ The default failure mode

The default failure mode of AI-assisted coding isn't bad code — it's fast, plausible code built on an assumption nobody checked. An agent asked to “add rate limiting to the login endpoint” will confidently pick a rate-limit window, a storage backend, and an error response shape, all reasonable-looking choices that might contradict an existing pattern used everywhere else in the codebase. Nobody lied; nobody checked first.

A plan-first workflow interrupts that pattern structurally. The agent reads the codebase and interrogates the change against the accepted specification before touching a single file, and that plan — files that change, order of work, named risks, and what proves it worked — becomes a reviewable artifact in its own right, separate from the code it will eventually produce.

🔍 The questions that make a plan reviewable

The review question isn't “does this plan look reasonable” — that bar is too low to catch anything specific. It's sharper than that: which existing customer journeys can this change break, which step carries the highest auth, tenant, data, or migration risk, what's unexpectedly coupled to this change that isn't obvious from the ticket, and what evidence will prove real customer-visible behavior rather than just a passing API response. A plan that survives those four questions is usually implemented correctly in a single pass, because the hard thinking happened before the typing did.

🎚️ When auto-accept is appropriate — and when it isn't

  • Read-only analysis: safe to auto-accept, in any environment.
  • Small UI change or refactor with strong existing tests: usually safe locally, PR-only in CI.
  • Auth, tenant, database, payment, or shared gateway: explicit human approval, no default auto-accept.
  • Provider or infrastructure settings: read and propose only — a named human makes the change.
  • Deploy or rollback: an agent may prepare or recommend; only a named human gate executes it.

🔀 When implementation departs from the plan

Plans are drafted before all the facts are visible, and a real constraint sometimes surfaces mid- implementation that the plan didn't anticipate — a migration that turns out to need a backfill step, a dependency that behaves differently than documented. When that happens, the plan gets updated with the reason and the changed risk in the same change set, rather than the implementation silently diverging from a stale document. Review then compares the diff to the final plan, not to an outdated first draft that nobody bothered to correct.

🧵 Parallel sessions don't replace review

Running several AI coding sessions at once is genuinely useful once each targets an independent surface named in the plan's work-order list — but parallelism is bounded by how fast a reviewer can actually read the output, not by how many sessions can be opened. A good starting point is two to three concurrent sessions, adding another only while review is still keeping pace. Opening ten sessions and reviewing none of them carefully isn't parallelism — it's just deferred risk. For scoped code-review and quality-gate automation once changes land, see our guide to sub-agents for review and quality gates.

🏗️ Legacy code changes the calculus, not the discipline

Plan-first is easiest to describe against a clean, well-tested codebase, which is exactly the codebase most engineering orgs don't have everywhere. Against a legacy module with thin test coverage and undocumented coupling, the plan itself needs an extra step: naming what'sunknown, not just what's risky. “This function is called from three places we can find by search, but the codebase has dynamic dispatch we can't fully trace” is a legitimate, useful line in a plan — it tells the reviewer exactly where confidence is thin, instead of presenting a false sense of completeness.

In practice this means legacy surfaces default to a lower autonomy tier than the table above would suggest for an equivalent change in well-tested code, specifically because the plan's own risk assessment is less trustworthy there. That's not a knock against AI-assisted development — a human engineer working the same legacy module would reasonably ask for the same extra caution.

🧭 A worked example

A plan for “add webhook retries for failed payment notifications” names the files that change (the webhook dispatcher, its retry-queue table, and the dead-letter handler), states the highest risk explicitly (a retry storm if the backoff logic is wrong), and states the proof: a test that simulates five consecutive failures and confirms the backoff interval doubles each time, capped, with a dead-letter entry after the final attempt. A reviewer reading that plan for two minutes can approve it with confidence — not because the code is simple, but because the risk was named and the proof was specified before a single line was written.

⚠️ Common mistakes we see

Approving a plan that lists tasks instead of naming risk. “Update the API, update the client, add a test” is a to-do list, not a plan — it says nothing about what could go wrong. A plan that doesn't name its highest-risk step hasn't actually been thought through, it's just been described.

Auto-accepting because the diff looked small. Line count is a poor proxy for blast radius — a two-line change to a shared auth middleware carries more risk than a three-hundred-line addition of a new, isolated component. The autonomy decision should follow the surface being touched, not the size of the patch.

Leaving the plan stale after a mid-implementation pivot. When a real constraint forces a change of approach partway through, it's tempting to just finish the code and skip updating the plan since “it's basically done anyway.” That's exactly when the plan stops being a trustworthy record of what was reviewed — the update takes two minutes and preserves the entire point of having a plan in the first place.

Free guide

Evaluating Codex or ChatGPT Enterprise for your engineering org?

Get the AI-Native Development Readiness Checklist — six governance practices to have in place before you scale AI-assisted development across a team.

No spam. One email with the guide and relevant resources.

🔗 Where this connects to the rest of the series

A plan is only as trustworthy as the specification it's built from — see the Design stage for how policy conflicts get resolved before this point. And a plan's stated proof is only meaningful once it's backed by a real, continuously-run eval suite rather than a one-time manual check — covered next in the Test stage.

❓ Frequently asked questions

Ready to see where your team stands?

Get the readiness checklist, or talk to WiselyWise directly about a Discovery Workshop.

CK

Written by

Chandra Kumar

Founder & CEO, WiselyWise · Builder, SmartMaya AI

Chandra Kumar is Founder & CEO of WiselyWise and the builder of SmartMaya AI. With 29 years in enterprise technology (IBM, Dell EMC, Cognizant) and an MIT Sloan AI certification, he has educated 50,000+ students across 500+ schools and deployed AI in 150+ organisations. He speaks globally on AI strategy, education, and business transformation.

  • · MIT Sloan School of Management — AI: Implications for Business Strategy (2018)
  • · 29 years enterprise technology: IBM, Dell EMC, Cognizant
  • · 50,000+ students educated across 500+ schools globally

WiselyWise Pte. Ltd. is an OpenAI Select Partner. Smart Maya AI is developed with and powered by OpenAI products. Talk to WiselyWise about a Discovery Workshop.