Posts 2 and 3 built the foundations: PDDL formalizes a planning problem, and heuristic search solves it. Modern planners handle billions of states with mathematical guarantees. The obvious question follows: do we even need any of that? Can't GPT-4 just plan?
The question is fair. LLMs can pass the bar exam, write working code, and explain quantum mechanics to a five-year-old. Surely sequencing five actions in the right order is within reach.
Between 2022 and 2024, a wave of rigorous research tested exactly this. The results weren't just disappointing โ they were diagnostic. They didn't just show that LLMs fail at planning. They showed why they fail, and the "why" turned out to be the most important finding. It redirected the entire field.
This post presents the evidence. We'll run our RoboSort warehouse through the same gauntlet the researchers used, watch frontier models fail at problems a classical planner solves in milliseconds, and understand why the popular fixes โ chain-of-thought, self-critique, Tree of Thoughts โ don't actually work.
The Benchmark: PlanBench
In 2023, Valmeekam et al. introduced PlanBench, the first rigorous benchmark for evaluating LLMs on classical planning tasks. The setup was deliberately simple: Blocksworld problems where a robot arm must stack colored blocks into a target configuration. Five blocks. A few moves. The kind of problem a STRIPS planner from 1971 could solve.
They tested GPT-4, GPT-3.5, and several open-source models. The task: given an initial state and a goal state, produce a valid sequence of actions. Not optimal โ just valid. Any plan that reaches the goal without violating preconditions counts as a success.
PlanBench Results: Blocksworld Plan Generation
Percentage of valid plans generated (higher is better)
(time)
PlanBench results on Blocksworld plan generation. Classical planners achieve 100% on every instance in under a second. GPT-4 manages ~30% โ and that number drops further on harder instances. Data from Valmeekam et al. (2023).
The numbers were stark. GPT-4 โ the most capable model at the time โ generated valid plans for only about 30% of instances. GPT-3.5 managed around 3%. Open-source models scored near zero. Meanwhile, Fast Downward, a classical planner from 2004, solved 100% of instances in under a second.
The failures weren't edge cases or adversarial inputs. These were 5-block Blocksworld problems โ among the simplest possible planning tasks. If an LLM can't reliably stack five blocks, it certainly can't plan warehouse logistics, multi-step deployments, or supply chain operations.
But the raw accuracy numbers weren't the most devastating finding. That came when the researchers asked a deeper question: is the LLM actually reasoning, or is it pattern-matching?
RoboSort at the Benchmark
Let's see what this looks like in our warehouse. We gave a frontier LLM the same RoboSort problem from Posts 1โ3: five pieces, three shelves, one build zone, support constraints. Build a tower. Here's what happened.
RoboSort facility ยท initial state (the LLM sees this as text in the prompt)
2. Move to Build Zone, place L1 on platform โ
3. Move to Shelf A, pick up L2
4. Move to Build Zone, place L2 on platform โ
5. Move to Shelf C, pick up Roof
6. Move to Build Zone, place Roof on legs โ
7. Move to Shelf B, pick up Beam
8. Move to Build Zone, place Beam on legs โ
9. Move to Shelf C, pick up Flag
10. Move to Build Zone, place Flag on Roof โ
A real LLM attempt at the RoboSort tower assembly. The model gets the legs right but then skips the Beam, placing Roof directly on legs. It "knows" the support constraint โ it even states it โ but doesn't enforce it during generation.
The model knows what support constraints are โ it can explain them eloquently. But knowing a constraint and enforcing it during sequential generation are fundamentally different cognitive operations. The LLM generates step-by-step, each token predicted from context. It doesn't maintain a world model. It doesn't track which pieces are placed. It doesn't verify preconditions before committing to an action.
LLMs can describe planning constraints perfectly. They cannot enforce them during plan generation. This is the core gap. Knowing the rules and following the rules are different capabilities โ and autoregressive generation only provides the first.
The Smoking Gun: Mystery Blocksworld
If LLMs were genuinely reasoning about actions and consequences โ if they truly understood what "pick up" does to the state of the world โ then the names of the predicates shouldn't matter. "pick-up-block" and "xyzzy-37" should be equivalent: different labels for the same operation. The planner doesn't care what you call things. Does the LLM?
Valmeekam et al. tested this with Mystery Blocksworld. They took the exact same planning problems and replaced every predicate and action name with meaningless tokens. on(A,B) became snurg(q3,q7). pick-up became florp. The logical structure was identical. Only the labels changed.
Standard Blocksworld
(:action pick-up
:parameters (?x - block)
:precondition (and
(clear ?x)
(on-table ?x)
(arm-empty))
:effect (and
(holding ?x)
(not (clear ?x))
(not (on-table ?x))
(not (arm-empty)))) Same logical structure. Different names. Performance collapses to zero. The LLM was matching patterns from training data โ "pick-up" evokes block-stacking scripts โ not reasoning about preconditions and effects.
The result was devastating: performance collapsed to zero. Not "lower." Not "somewhat degraded." Zero.
This is the smoking gun. A system that reasons about state transitions wouldn't care whether the action is called "pick-up" or "florp." The preconditions are the same. The effects are the same. The state space is identical. But the LLM's performance was entirely dependent on recognizing the names โ because it wasn't reasoning at all. It was retrieving similar-looking action sequences from its training data.
RoboSort Goes Mystery
The same test with our warehouse robot is equally revealing. When we describe the problem with meaningful names โ "pick up Leg1 from Shelf A" โ the LLM can pattern-match against warehouse logistics data and occasionally get it right. But rename the pieces:
Standard RoboSort
Pieces: L1, L2, Beam, Roof, Flag
Locations: Shelf-A, Shelf-B,
Shelf-C, Build-Zone
Constraint: legs support beam,
beam supports roof
LLM: "Place L1, L2, then Beam,
then Roof, then Flag"
โ Sometimes correct (~30%) Same RoboSort warehouse. Same five pieces, same support constraints, same goal. Only the labels changed โ and the LLM loses all ability to generate even plausible-looking plans. Pattern matching, not planning.
When an LLM "solves" a planning problem, it's often not solving it at all โ it's recognizing it. The training data contains countless examples of "stack blocks bottom-up" and "assemble structures foundation-first." The LLM retrieves and adapts these patterns. Remove the semantic cues, and there's nothing left to retrieve.
The Prompting Fixes That Don't Fix
After PlanBench, the natural response was: maybe the LLM just needs help. Better prompts. More structure. Time to think. The research community systematically tested every major prompting strategy. Here's what happened.
Chain-of-Thought (CoT)
The idea: make the LLM reason step-by-step. Instead of generating the plan directly, have it explain its reasoning at each step. "First, I need to place the foundation. The legs go first because they support the beam..."
The result: marginal improvement at best, and sometimes worse. CoT helps the LLM generate more verbose explanations of why its plan is correct โ while the plan remains incorrect. The model articulates the constraint ("beam must go before roof") and then violates it in the very next step. It's like a student who writes a perfect essay about traffic laws and then runs a red light.
Self-Critique / Verify-and-Refine
The idea: have the LLM check its own work. Generate a plan, then ask the same model (or another instance) to verify it. If it finds errors, revise and try again.
The result: self-critique makes things worse. This was the most surprising finding. Valmeekam et al. showed that when LLMs evaluate their own plans, they exhibit a "yes-man" bias โ the critic tends to approve whatever the generator produced. Worse, when the critic does flag an issue, the "fix" often introduces new violations. After several rounds of self-critique, accuracy decreased.
2. Pick L2, place on platform โ
3. Pick Roof, place on legs โ (Beam missing!)
2. Pick Beam, place on legs โ (L2 missing!)
3. Pick L2, place on platform โ (Beam blocks?)
4. Pick Roof, place on Beam โ
5. Pick Flag, place on Roof โ
Self-critique in action on RoboSort. The critic identifies the missing Beam but the revised plan puts Beam before L2. Each revision shuffles errors around rather than eliminating them. Data pattern from Valmeekam et al. (2023).
Tree of Thoughts (ToT)
The idea: explore multiple reasoning paths in parallel, evaluate them, and pick the best. Instead of one linear chain of thought, branch out, score each branch, and select the most promising.
The result: expensive and unsound. ToT can marginally improve results on some instances, but it multiplies computational cost by 10โ100x without providing any guarantee. You're searching a tree of LLM-generated candidates โ but the evaluation function is also an LLM, which can't reliably distinguish valid from invalid plans. It's search without a sound heuristic. Post 3 showed why that doesn't work: you need a heuristic that actually correlates with distance to goal. An LLM's confidence score doesn't.
| Strategy | Idea | Result on Planning | Cost |
|---|---|---|---|
| Direct Prompting | Ask for a plan directly | ~12โ30% valid | 1x |
| Chain-of-Thought | Step-by-step reasoning | ~15โ35% valid | 1.5x |
| Self-Critique | LLM checks own plan | ~10โ22% (worse!) | 3x |
| Tree of Thoughts | Branch & evaluate | ~20โ40% valid | 10โ100x |
| Classical Planner | Heuristic search on PDDL | 100% valid | 1x (fast) |
No prompting strategy brings LLMs close to classical planner accuracy. Self-critique actively degrades performance. Tree of Thoughts is expensive without guarantees. Data patterns from Valmeekam et al. (2023), Kambhampati (2024).
The problem isn't the prompt โ it's the architecture. Autoregressive generation commits to each token before seeing the consequences. No amount of prompt engineering can add backtracking, constraint propagation, or state tracking to a system that generates left-to-right. You don't fix a calculator by asking it nicely โ you use a different tool.
Seeing the Failure: LLM vs. Planner on RoboSort
Let's make this concrete. Below, we run the same RoboSort tower assembly problem through an LLM (left) and a classical planner (right). Watch the LLM generate a plausible-looking but invalid plan, while the planner finds a guaranteed-correct sequence in milliseconds.
๐ค LLM (Direct Prompting)
- Move to Shelf A โ Pick L1
- Move to Build Zone โ Place L1 on platform
- Move to Shelf A โ Pick L2
- Move to Build Zone โ Place L2 on platform
- Move to Shelf C โ Pick Roof
- Move to Build Zone โ Place Roof on legs
- Move to Shelf B โ Pick Beam
- Move to Build Zone โ Place Beam (where?)
- Move to Shelf C โ Pick Flag
- Move to Build Zone โ Place Flag on Roof
โ๏ธ Classical Planner (A* + hFF)
- move(home, shelf-a)
- pick(L1, shelf-a)
- move(shelf-a, build-zone)
- place-on-platform(L1)
- move(build-zone, shelf-a)
- pick(L2, shelf-a) โ move โ place-on-platform(L2)
- move(build-zone, shelf-b)
- pick(Beam, shelf-b) โ move โ place-on-piece(Beam, L1)
- move โ pick(Roof, shelf-c) โ move โ place-on-piece(Roof, Beam)
- move โ pick(Flag, shelf-c) โ move โ place-on-piece(Flag, Roof)
After executing each plan ยท what RoboSort actually does on the floor
missing
Same starting state. Same 5 pieces. Same physics. The LLM's plan reads like a reasonable sequence; executed in the warehouse, it produces a heap. The planner's plan is dryer text and produces a tower. The reader has to be the simulator the LLM never was.
The planner's output might look boring โ it's just a sequence of formal actions. But every single step has been verified: every precondition checked, every effect applied, every state transition valid. The LLM's output reads better โ natural language, confident tone โ but it's wrong. This is the fundamental tension: fluency is not validity.
Why LLMs Fail at Planning: The Architectural Argument
The evidence points to a fundamental architectural mismatch. Planning requires three capabilities that autoregressive language models lack:
- State tracking. A planner maintains an explicit world state โ what's true right now โ and updates it after every action. An LLM has no world model. It has a context window of tokens. When RoboSort places L1, the planner knows the gripper is empty and L1 is on the platform. The LLM has to infer this from the text it already generated โ and it often gets it wrong.
- Precondition verification. Before executing
place-on-piece(Roof, Beam), the planner checks: is Beam placed? Is Roof in gripper? Is Robot at build zone? All must be true, or the action is blocked. The LLM has no mechanism to perform this check โ it simply generates the next most likely token. - Backtracking. When a planner reaches a dead end โ a state from which no action sequence reaches the goal โ it backtracks and tries a different path. Autoregressive generation is one-shot: each token is committed permanently. There is no "undo." Tree of Thoughts simulates branching but without a sound evaluation function, it's random search with extra steps.
LLMs fail at planning not because they're not smart enough, but because they're the wrong kind of tool. Asking an LLM to plan is like asking a spellchecker to do math. It might accidentally get simple cases right by pattern matching, but the architecture doesn't support the operation. The solution isn't a better spellchecker โ it's using the right tool for the job.
The Taxonomy: What Should LLMs Actually Do?
The failures of 2022โ2023 didn't kill the idea of LLMs in planning. They refined it. The research community converged on a taxonomy of roles โ things LLMs are genuinely good at, paired with formal tools that handle what LLMs can't.
LLM as Direct Planner
Ask the LLM to generate the full plan. No verification, no formal tools. As PlanBench showed: ~12โ30% accuracy on trivial problems. This doesn't work.
LLM as Heuristic Generator
LLM writes heuristic functions (as code) that guide a classical planner's search. The planner still does the searching and guarantees correctness. The LLM just helps it search faster. Post 5 explores this.
LLM as Model Translator
LLM converts natural language problem descriptions into formal PDDL models. The planner then solves the formal model. No human PDDL expertise needed. Post 6 explores this.
LLM as Orchestrator
LLM coordinates multiple specialized agents โ a PDDL generator, a validator, a planner, an executor. It doesn't plan itself; it manages the planning pipeline. Post 7 explores this.
The taxonomy of LLM roles in planning. Role 1 (direct planning) failed. Roles 2โ4 leverage LLMs' actual strengths โ language understanding, code generation, coordination โ while delegating reasoning to formal tools.
The critical shift: stop asking LLMs to plan. Start asking them to help plan. The LLM's genuine strengths โ understanding natural language, generating code, translating between formats โ are exactly the capabilities that formal planners lack. The planner's strengths โ state tracking, constraint verification, optimality guarantees โ are exactly what LLMs lack. The marriage is natural. The remaining posts in this series explore how it works in practice.
What's Ahead
This post established the hard evidence: LLMs cannot reliably plan. Not with better prompts. Not with self-critique. Not with tree search. The architectural mismatch is fundamental โ autoregressive generation lacks state tracking, precondition verification, and backtracking.
But the story doesn't end with failure. The taxonomy of roles shows the path forward. Instead of replacing planners, what if LLMs amplified them? What if an LLM could look at a PDDL domain and generate a Python function that estimates distance to goal โ a heuristic โ and hand it to a classical search engine?
That's exactly what happened. And the results went from 12% to 82%.
References
- Valmeekam, V., Marquez, M., Sreedharan, S., & Kambhampati, S. (2023). On the Planning Abilities of Large Language Models โ A Critical Investigation. NeurIPS 2023.
- Valmeekam, V., Marquez, M., & Kambhampati, S. (2023). PlanBench: An Extensible Benchmark for Evaluating Large Language Models on Planning and Reasoning about Change. NeurIPS 2023 Datasets and Benchmarks.
- Kambhampati, S. (2024). Can Large Language Models Reason and Plan? Annals of the New York Academy of Sciences.
- Stechly, K., Marquez, M., & Kambhampati, S. (2024). Self-Verification in Large Language Models: Limitations and Implications. ICML 2024 Workshop on LLMs and Cognition.
- Yao, S., Yu, D., Zhao, J., et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. NeurIPS 2023.
- Katz, M., Kokel, H., & Muise, C. (2025). Planning in the Era of Language Models. NeurIPS 2025 Tutorial.
- Valmeekam, V., Stechly, K., & Kambhampati, S. (2024). LLMs Still Can't Plan; Can LLMs Help Planning? AAAI 2024 Workshop on Bridging the Gap Between AI Planning and Reinforcement Learning.