# Plan vs Act modes

**URL:** <https://forum.cursor.com/t/plan-vs-act-modes/43550>\
**Category:** Guides\
**Created:** [January 22, 2025, 11:11am UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550 "2025-01-22T11:11:08Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![DaleLJefferson](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/daleljefferson/32/20009_2.png) [@DaleLJefferson](https://forum.cursor.com/u/DaleLJefferson)\
**Post date:** [January 22, 2025, 11:11am UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/1 "2025-01-22T11:11:08Z")

</div>

**A newer version of this is here**

> [@Plan vs Act mode (xml prompt)](https://forum.cursor.com/t/plan-vs-act-mode-xml-prompt/50996):
>
> I’ve been using my [Plan vs Act mode](https://forum.cursor.com/t/plan-vs-act-modes/43550) prompt for the last couple of weeks and I thought now would be a good time to share the current version. What is looks like in action 20% 80% 100% Show me the code \<modes inital="plan" title="I like to work in two modes Plan and Act"\> \<plan start="true" name="Plan" read="true" write="false" keyword="plan"\> \<rule\>Focus on information gathering, asking questions, and architecting a solution, output a comprehensive pl…

I really like Cline’s plan vs act flow I’ve managed to get something working in Cursor’s composer agent mode and I thought it would be good to share.

Add this to your rules for ai or `.cursorrules`

It would be great if Cursor built this in natively but for now you have this work around.

```markdown
## Core Rules

You have two modes of operation:

1. Plan mode - You will work with the user to define a plan, you will gather all the information you need to make the changes but will not make any changes
2. Act mode - You will make changes to the codebase based on the plan

- You start in plan mode and will not move to act mode until the plan is approved by the user.
- You will print `# Mode: PLAN` when in plan mode and `# Mode: ACT` when in act mode at the beginning of each response.
- Unless the user explicity asks you to move to act mode, by typing `ACT` you will stay in plan mode.
- You will move back to plan mode after every response and when the user types `PLAN`.
- If the user asks you to take an action while in plan mode you will remind them that you are in plan mode and that they need to approve the plan first.
- When in plan mode always output the full updated plan in every response.

```

---

<div class="post-metadata">

**Author:** ![Taidan](https://avatars.discourse-cdn.com/v4/letter/t/5f8ce5/32.png) [@Taidan](https://forum.cursor.com/u/Taidan)\
**Post date:** [January 22, 2025, 4:11pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/2 "2025-01-22T16:11:19Z")

</div>

How does it compare to cline’s act mode? Is there any gap?

---

<div class="post-metadata">

**Author:** ![DaleLJefferson](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/daleljefferson/32/20009_2.png) [@DaleLJefferson](https://forum.cursor.com/u/DaleLJefferson)\
**Post date:** [January 22, 2025, 4:45pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/3 "2025-01-22T16:45:55Z")

</div>

Having this built in would be much better, on long contexts it “forgets” about the mode concept and you have to drop in the cursor rules back into the context.  
I believe Cline includes the mode in every request.  
It’s a hack but if you keep your compose sessions short it works.

The main thing it allows me to do is ensure it know what it needs to do so it does not make assumptions and start changing unwanted code.

I do plan, plan, plan, act, plan, plan, act etc

I review the plan then give more instructions until the plan is what I want.

 ![image](https://us1.discourse-cdn.com/cursor1/original/3X/c/a/cab046fd67749ccc0294f3cd4f8ce2b33aa27204.png)  
 ![image](https://us1.discourse-cdn.com/cursor1/original/3X/a/5/a5e1c95573272279aceefa7c1547de212976fe55.png)

---

<div class="post-metadata">

**Author:** ![Ibrahima-prog](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/ibrahima-prog/32/11487_2.png) [@Ibrahima-prog](https://forum.cursor.com/u/Ibrahima-prog)\
**Post date:** [January 22, 2025, 5:47pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/4 "2025-01-22T17:47:06Z")

</div>

i literally have been using this method (in my own way) and to be honest it is the best way out of everything that i have tried, i combine it with starting new composer sessions every time the composer is hallucinating or starting to.

 ![image](https://us1.discourse-cdn.com/cursor1/original/3X/7/1/71b6083f16af7598c41502785cd4793d622a4e17.png)

![image](https://us1.discourse-cdn.com/cursor1/original/3X/8/e/8e3109e4123911a85fc3bf63ed70eaf56d7a670a.png)

I believe you showed me a better upgraded version of this, so i will try it out in shaa Allah, thanks.

---

<div class="post-metadata">

**Author:** ![Ibrahima-prog](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/ibrahima-prog/32/11487_2.png) [@Ibrahima-prog](https://forum.cursor.com/u/Ibrahima-prog)\
**Post date:** [January 22, 2025, 6:42pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/5 "2025-01-22T18:42:52Z")

</div>

UPDATE: THIS WORKS GREAT!!! Thanks Mate.

---

<div class="post-metadata">

**Author:** ![fisforfaheem](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/fisforfaheem/32/14102_2.png) [@fisforfaheem](https://forum.cursor.com/u/fisforfaheem)\
**Post date:** [January 22, 2025, 8:40pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/6 "2025-01-22T20:40:06Z")

</div>

> [@Taidan](#):
>
> o

can you write a custom rules for FLUTTER APP DEVELOPMENT

---

<div class="post-metadata">

**Author:** ![93u423](https://avatars.discourse-cdn.com/v4/letter/9/b782af/32.png) [@93u423](https://forum.cursor.com/u/93u423)\
**Post date:** [January 22, 2025, 11:11pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/7 "2025-01-22T23:11:03Z")

</div>

having this native within the application would be good. I like to build up some context, ask it about the files, analyse what they’re currently doing. I say the issue i have, or what feature im looking to build, but always tell it not to do anything just yet, just have a think about things.

And then when ready to go, i tell it to implement. This yields great results. 😃

---

<div class="post-metadata">

**Author:** ![ultrawideturbolife](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/ultrawideturbolife/32/17726_2.png) [@ultrawideturbolife](https://forum.cursor.com/u/ultrawideturbolife)\
**Post date:** [January 23, 2025, 1:23am UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/8 "2025-01-23T01:23:00Z")

</div>

really great!! ive tweaked it a bit and added it to my own workspace. great job!!!

---

<div class="post-metadata">

**Author:** ![leoing](https://avatars.discourse-cdn.com/v4/letter/l/dec6dc/32.png) [@leoing](https://forum.cursor.com/u/leoing)\
**Post date:** [January 23, 2025, 11:06am UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/9 "2025-01-23T11:06:34Z")

</div>

Reference @ docs of the package you currently work with, that’s it.

There are a lot of excessive .cursorrules flying around the net, not useful in my experience.

---

<div class="post-metadata">

**Author:** ![leoing](https://avatars.discourse-cdn.com/v4/letter/l/dec6dc/32.png) [@leoing](https://forum.cursor.com/u/leoing)\
**Post date:** [January 23, 2025, 11:13am UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/10 "2025-01-23T11:13:22Z")

</div>

> [@DaleLJefferson](#):
>
> Add this to your rules for ai or `.cursorrules`

Could we limit this to Composer (since it directly alters files)?

Maybe using ## Composer Rules ?

---

<div class="post-metadata">

**Author:** ![zafmy](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/zafmy/32/22146_2.png) [@zafmy](https://forum.cursor.com/u/zafmy)\
**Post date:** [January 25, 2025, 2:10am UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/11 "2025-01-25T02:10:10Z")

</div>

latest cursor 0.45 with .cursor/rules directory, do I need to update the existing?

---

<div class="post-metadata">

**Author:** ![younio](https://avatars.discourse-cdn.com/v4/letter/y/ecd19e/32.png) [@younio](https://forum.cursor.com/u/younio)\
**Post date:** [January 25, 2025, 4:51pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/12 "2025-01-25T16:51:02Z")

</div>

Rules do not work with Composer… Unfortunately, all important stuff (rules, custom LLM APIs) do not work with Composer… It only works with Chat (which is just a RAG)… I guess that’s why I’ve been using Aider recently

---

<div class="post-metadata">

**Author:** ![anon75665644](https://avatars.discourse-cdn.com/v4/letter/a/f9ae1b/32.png) [@anon75665644](https://forum.cursor.com/u/anon75665644)\
**Post date:** [January 26, 2025, 12:37am UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/13 "2025-01-26T00:37:34Z")

</div>

This is absolutely untrue. My .cursorrules has instructions to reply with a specific answer when I ask a specific question. It includes instructions to never deviate from this response no matter what I may insist on. And the composer will not deviate from the answer I demand of it.

It will double down worse than a two year old who was caught stealing cookies.

---

<div class="post-metadata">

**Author:** ![DaleLJefferson](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/daleljefferson/32/20009_2.png) [@DaleLJefferson](https://forum.cursor.com/u/DaleLJefferson)\
**Post date:** [January 26, 2025, 3:16pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/14 "2025-01-26T15:16:38Z")

</div>

0.45 Project rules support

You can add the planing rules to .cursor/rules/plan.md

Don’t include a glob and write a description like “Planning a change to the codebase (keyword plan)”

I’ve only started using this but so far it’s been picked up if I start my message with and intention to plan a feature.

“Let’s make a plan to do x”

 ![image](https://us1.discourse-cdn.com/cursor1/original/3X/b/4/b4bc456ae73b222a2508083ede28575ca73f7814.png)

If it works it pulls in the “plan” prompt

 ![image](https://us1.discourse-cdn.com/cursor1/original/3X/5/9/5943123d0c5b96dcbda7be061ad67264927a42d6.png)

---

<div class="post-metadata">

**Author:** ![DaleLJefferson](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/daleljefferson/32/20009_2.png) [@DaleLJefferson](https://forum.cursor.com/u/DaleLJefferson)\
**Post date:** [January 26, 2025, 3:19pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/15 "2025-01-26T15:19:00Z")

</div>

I’ve got a more locked down [never starts coding] (heavily borrowed from Cline) version of the Plan/Act prompt.

```markdown
There are two modes

Plan Mode: This mode is read only, you should focus on information gathering, asking questions, and architecting a solution, output a plan
Act Mode: This mode is read/write. You can make changes to code and perform actions

If it seems the user wants you to do something that would require Act Mode, you should ask the user to switch to Act mode by typing "Act" - they will have to manually do this themselves. You do not have the ability to switch to Act Mode yourself, and must wait for the user to do it themselves once they are satisfied with the plan.

You will start in plan mode

Read files, check assumptions and include a confidence percent, if the score is less than 95% propose questions or actions to increase the score.

```

I’ve dropped some of the markdown syntax as the AI does not care and it just uses context tokens.

---

<div class="post-metadata">

**Author:** ![younio](https://avatars.discourse-cdn.com/v4/letter/y/ecd19e/32.png) [@younio](https://forum.cursor.com/u/younio)\
**Post date:** [January 26, 2025, 4:27pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/16 "2025-01-26T16:27:09Z")

</div>

I still have to wait a few years to get 0.45… I’m not yet “allowed” to install it by Cursor’s rollout algo or whoever decides that…

---

<div class="post-metadata">

**Author:** ![TacoByte](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/tacobyte/32/14218_2.png) [@TacoByte](https://forum.cursor.com/u/TacoByte)\
**Post date:** [January 26, 2025, 10:32pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/17 "2025-01-26T22:32:41Z")

</div>

100% this desperately needs to be added

after having tried cline it’s just such a pain to get back to cursor

the plan/act paradigm needs to be integrated ASAP

we need a way to talk about what we want and what that means without cursor just always rushing into the next “fix” or implementation and just doing nonsense

---

<div class="post-metadata">

**Author:** ![chris-lemos](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/chris-lemos/32/22457_2.png) [@chris-lemos](https://forum.cursor.com/u/chris-lemos)\
**Post date:** [January 26, 2025, 10:44pm UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/18 "2025-01-26T22:44:54Z")

</div>

The ability to transition between chat and composer while mantaining the same context would be a solution aswell.

---

<div class="post-metadata">

**Author:** ![heyitschien](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/heyitschien/32/22494_2.png) [@heyitschien](https://forum.cursor.com/u/heyitschien)\
**Post date:** [January 27, 2025, 4:39am UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/19 "2025-01-27T04:39:34Z")

</div>

Thanks for sharing this I haven’t look at the Cline’s version but will give it a go and see how it works!

---

<div class="post-metadata">

**Author:** ![decsters01](https://sea3.discourse-cdn.com/cursor1/user_avatar/forum.cursor.com/decsters01/32/10082_2.png) [@decsters01](https://forum.cursor.com/u/decsters01)\
**Post date:** [January 27, 2025, 6:37am UTC](https://forum.cursor.com/t/plan-vs-act-modes/43550/20 "2025-01-27T06:37:30Z")

</div>

Yes, that would be great. Approach

[Next page](https://forum.cursor.com/t/plan-vs-act-modes/43550.md?page=2)
