Products Marketplace Blog About Contact Sign in Download
lac agent PlanMode: Think Before You Touch a File

lac agent PlanMode: Think Before You Touch a File

PlanMode makes lac agent show its work before touching anything. It's the difference between an agent you supervise and one you just hope doesn't break prod.

The Problem With "Just Do It" Agents

There's a certain type of agentic coding session that starts fine and ends with you staring at a diff you don't fully understand, wondering which of the twelve files the agent touched actually needed changing. I've been there. You give the agent a broad task, it goes off and writes, edits, renames, and you approve each step individually without ever seeing the full picture first.

That's the gap PlanMode fills.

What PlanMode Actually Does

When you activate PlanMode in lac agent, the agent stops before touching anything. Instead of immediately reading files and making edits, it lays out a complete plan: what it intends to read, what it intends to create or modify, what the overall approach is, and what order it's going to do things in.

You review that plan. You can push back, ask it to change the approach, cut a step, or add something it missed. Only once you explicitly approve does the agent start executing.

It sounds simple. In practice it changes how you use the tool entirely.

How to Trigger It

Inside a lac agent session, just prefix your task with /plan:

/plan refactor the auth module to use JWT refresh tokens and clean up the middleware stack

The agent comes back with something like:

  • Read src/auth/index.js, src/middleware/auth.js, src/routes/user.js
  • Create src/auth/refresh.js — new refresh token logic
  • Edit src/middleware/auth.js — swap session check for JWT verify + refresh call
  • Edit src/routes/user.js — update protected route handler
  • Edit src/auth/index.js — expose new refresh utilities
  • Check package.json — confirm jsonwebtoken is present, suggest install if not

That list right there already tells you three things you might want to adjust before a single character gets written.

Why This Matters More Than You'd Think

The obvious benefit is safety. You see the blast radius before anything happens. But there's a less obvious benefit: the planning step forces the agent to think through the task more carefully. It has to articulate a coherent sequence, which tends to surface edge cases it would otherwise hit mid-execution and then awkwardly patch around.

I've had sessions where the plan itself revealed that the task I described was underspecified. The agent listed four files I hadn't thought about, and I realized my original instruction was going to produce something half-baked. Better to catch that at the plan than at the diff.

There's also a communication angle. If you're working on a team and you want a second opinion before the agent runs, you can paste the plan into Slack, get a quick thumbs-up, and then approve. That's a lightweight review loop that costs almost nothing.

Editing the Plan Before Approving

You're not just approving or rejecting the whole plan. You can reply conversationally to change it:

Skip the routes/user.js edit for now — just do the auth module and middleware. Also check if we have any tests for the old session logic before you touch it.

The agent updates the plan accordingly and shows you the revised version. Once it looks right, you confirm and execution starts.

This back-and-forth usually takes two minutes, and it saves you from the "I need to undo three files because step four assumed something wrong" situation that the undo system exists to clean up after.

PlanMode + Project Memory

One thing that makes PlanMode more useful over time is that lac agent reads your .lac-memory.json before generating the plan. If you've stored notes like "never edit the generated files in /dist directly" or "always run tests after touching auth", the agent factors those into the plan it proposes.

So after a few sessions you stop having to manually redirect the agent on the same things. The memory carries your preferences and the plan reflects them automatically.

If you haven't set up project memory yet, start a session and run:

remember: always check for existing tests before modifying a module

It writes that to .lac-memory.json in your project root. From that point on, every plan in that project will include a test-check step for any module it's about to touch.

When to Use PlanMode vs. Just Running the Agent

I don't use PlanMode for everything. Small, contained tasks — "add a null check here", "rename this function", "write a quick utility" — I just let the agent run. The overhead of reviewing a plan isn't worth it for a one-file change.

But for anything that touches more than two or three files, crosses module boundaries, or involves deleting or restructuring something, PlanMode is worth the two extra minutes. The tasks where you most want to skip the planning step are usually the ones where skipping it costs you the most.

A good rule of thumb: if you'd want to explain your approach to a teammate before diving in, run /plan first.

A Practical Starting Point

If you haven't tried PlanMode yet, take whatever task you'd normally throw at lac agent today and prefix it with /plan. Read through what it proposes. Push back on one thing — even if you'd have let it slide. See how the revised plan looks.

After a few sessions it becomes second nature, and you'll find yourself catching problems at the plan stage that would have taken real effort to unwind after the fact.

Install or update lac-cli with:

pip install --upgrade lac-cli

Then open a project and run lac agent to get started.

We use cookies to keep you signed in and to serve ads via Google AdSense. By continuing to use this site you agree to our Privacy Policy.