Skip to content

Plan Modu Is Akisi

En etkili is akisi — once planla, incele, sonra guvenle yurutu

9 dk okuma

Claude’a auth modulunuzu yeniden duzenlemesini soyluyorsunuz. 14 dosyayi yeniden yaziyor, 3 testi bozuyor ve API sozlesmesini degistiriyor — siz tek bir satiri inceleyemeden.

Bu siteden tek bir kalip benimseyecekseniz, plan-inceleme-yurutme olsun.

Plan modu (--permission-mode plan) Claude’u bir gorevi dusunmeye, yapilandirilmis bir plan sunmaya ve herhangi bir seye dokunmadan once onayinizi beklemeye zorlar. Bu uc asamali is akisi — planla, incele, yurutu — guvenli otonom kodlamanin temelidir.

Plan, review, execute workflow with approval gatePlanRead-only analysisGateReviewHuman checkpointExecuteFull permissions

Adim 1: Bir Plan Olusturun

--permission-mode plan gecirerek Claude’u yalnizca planlama moduna kilitleyin. Tum eylem araclari (Write, Edit, Bash) engellenir. Claude hala dosyalari okuyabilir, kod tabaninda arama yapabilir ve gorev hakkinda akil yurutebilir, ancak hicbir seyi degistiremez.

Adim 1: Plan Al
$ RESULT=$(claude -p "test.txt adinda Hello World iceren bir dosya olustur" \ --permission-mode plan --output-format json)
$ SESSION=$(echo "$RESULT" | jq -r '.session_id')
$ echo "$RESULT" | jq -r '.permission_denials[] | select(.tool_name=="ExitPlanMode") | .tool_input.plan'
# Baglam Kullanici, `/Users/tunaozmen` dizininde `test.txt` adinda "Hello World" iceren basit bir metin dosyasi olusturmak istiyor. # Plan ## Adim 1: Dosyayi olustur - `/Users/tunaozmen/test.txt` dosyasini `Hello World` icerigiyle olustur ## Dogrulama - Icerigin dogru oldugunu onaylamak icin dosyayi geri oku.

Dahili olarak su olur: Claude promptu alir, gorevi dusunur, ~/.claude/plans/<rastgele-isim>.md dosyasina bir plan yazar ve plan metniyle ExitPlanMode’u cagririr. Plan modu bu araci engellediginden, cagri yurutulmek yerine permission_denials icinde gorunur. Claude’un denedigi tum eylem araclari (Write gibi) de engellenir ve ayni dizide gorunur.

Adim 2: Plani Okuyun

Plan result icinde degildir. Plan modunda result alani “Permission was denied…” gibi genel bir durum mesaji icerir. Gercek yapilandirilmis plan permission_denials icinde, ozellikle ExitPlanMode girisinin tool_input.plan alaninda bulunur.

Plan Modu Yanitiartifacts/04/raw_plan_response.json
1{
2 "type": "result",
3 "subtype": "success",
4 "is_error": false,
5 "duration_ms": 11535,
6 "duration_api_ms": 10486,
7 "num_turns": 4,
8 "result": "Permission was denied. Please approve the write to `/Users/tunaozmen/test.txt` and I'll proceed.",A
9 "stop_reason": "end_turn",
10 "session_id": "9d6158a8-6399-40fc-90eb-a35286f70b81",B
11 "total_cost_usd": 0.03898275,
12 "usage": {
13 "input_tokens": 6,
14 "cache_creation_input_tokens": 3499,
15 "cache_read_input_tokens": 64845,
16 "output_tokens": 426
17 },
18 "modelUsage": {
19 "claude-sonnet-4-6": {
20 "inputTokens": 6,
21 "outputTokens": 426,
22 "cacheReadInputTokens": 64845,
23 "cacheCreationInputTokens": 3499,
24 "costUSD": 0.03898275,C
25 "contextWindow": 200000,
26 "maxOutputTokens": 32000
27 }
28 },
29 "permission_denials": [
30 {
31 "tool_name": "ExitPlanMode",D
32 "tool_use_id": "toolu_01JFC2HmYkGQvhcsYuwYvsiy",
33 "tool_input": {
34 "plan": "# Context\nThe user wants to create a simple text file named `test.txt` containing the text \"Hello World\" in the primary working directory `/Users/tunaozmen`.\n\n# Plan\n\n## Step 1: Create the file\n- Create `/Users/tunaozmen/test.txt` with content `Hello World`\n\n## Verification\n- Read the file back to confirm the content is correct.\n"
35 }
36 },
37 {
38 "tool_name": "Write",
39 "tool_use_id": "toolu_01Cf9kv7Kw7yhgbwwoDbsjaM",
40 "tool_input": {
41 "file_path": "/Users/tunaozmen/test.txt",
42 "content": "Hello World"
43 }
44 }
45 ]
46}
AGenel durum mesaji -- plan DEGIL
BDaha sonra devam ettirmek icin bu UUID'yi saklayin
CYapilandirilmis plan metni burada bulunur
DEngellenen Write cagrisi Claude'un ne yapmak istedigini gosterir

Bu yanittan iki sey cikarilmalidir. Birincisi, planin kendisi:

const planText = data.permission_denials
.find(d => d.tool_name === 'ExitPlanMode')
?.tool_input.plan;

Ikincisi, bekleyen eylemler — Claude’un onaylandiginda yapmak istedigi seyler:

const pendingWrites = data.permission_denials
.filter(d => d.tool_name === 'Write')
.map(d => ({ path: d.tool_input.file_path, content: d.tool_input.content }));

Bu, Claude’un olusturmak veya degistirmek istedigi her dosyanin bir on izlemesini, herhangi bir seye dokunma izni olmadan verir.

Try This

Kendi kod tabaninizda plan-modu komutu calistirin:

claude -p “Bu projedeki hata yonetimini iyilestirmek icin ne degistirirdiniz?” —permission-mode plan —output-format json | jq ‘.result’

Claude’un urettigi plani okuyun. .permission_denials kontrol edin — Claude herhangi bir seyi yurutmeye calisti mi? Plan modunda calismamaliydi.

Adim 3: Yurut

Plani inceledikten sonra, oturumu devam ettirin ve yurutmeyi onaylamak icin izin modunu degistirin. --resume bayragi tam konusma baglamini alir — Claude’un plani zaten bellektedir ve hicbir seyi yeniden analiz etmesine gerek yoktur.

Adim 3: Plani Yurut
# Onayla ve yurutu
$ claude -p "evet, devam et" \
$ --resume 9d6158a8-6399-40fc-90eb-a35286f70b81 \
$ --permission-mode bypassPermissions
`/Users/tunaozmen/test.txt` dosyasini "Hello World" icerigiyle olusturdum ve dogru okundugunu dogruladim.

--permission-mode bypassPermissions bayragi Claude’a her araci tek tek onay istemeden calistirmasini soyler. Burada bu guvenlidir cunku plani zaten incelediniz ve tam olarak ne yapacagini biliyorsunuz. Claude’un hala her yikici eylemden once sormasini istiyorsaniz, bunun yerine --permission-mode default kullanin.

Yurutmeden Once Degistirme

Devam ettirme mesaji serbest bicimli metindir. “Evet” veya “hayir” ile sinirli degilsiniz — herhangi bir talimat gonderebilirsiniz ve Claude plani buna gore revize edecektir.

Revize Et ve Yeniden Planla
# Degisikliklerle reddet -- plan modunda kal
$ claude -p "hayir, bunun yerine goodbye.txt olarak adlandir" \
$ --resume $SESSION --permission-mode plan \
$ --output-format json
{"permission_denials":[{"tool_name": "ExitPlanMode","tool_input":{"plan": "...`/Users/tunaozmen/goodbye.txt` olustur..."}}]}

Devam ettirmedeki --permission-mode plan’a dikkat edin. Bu, Claude’u planlama modunda tutar, boylece yurutmek yerine revize edilmis bir plan uretir. Ihtiyaciniz oldugu kadar cok kez tekrarlayabilirsiniz. Memnun kaldiginizda, yurutmek icin son bir kez --permission-mode bypassPermissions ile devam ettirin.

Devam Ettirmede Ne Gonderebilirsiniz

Devam Ettirme MesajiNe Olur
”evet, devam et”Plani oldugu gibi yurutur
”hayir, Y yerine X yap”Plani degisikliginizle revize eder
”Z’yi de yapmak icin bir adim ekle”Plana ek bir adim ekler
”adim 2’yi daha fazla acikla”Plan modunda kalir, plani detaylandirir
”aslinda birakin — tamamen baska bir sey yapin”Ayni oturumda tamamen yeni bir plan uretir

Bir revizyondan sonra, permission_denials yalnizca mevcut plani icerir. Onceki planlar yanittan silinmistir. Oturum kimligi ayni kalir ve maliyetler her turda birikir.

Bayrak ve Arac Karsilastirmasi

Plan moduna girmenin iki yolu vardir: --permission-mode plan CLI bayragi ve Claude’un kendi basina cagirabilecegi EnterPlanMode araci. Farkli kullanim alanlarina hizmet ederler.

--permission-mode plan ve EnterPlanMode Araci Karsilastirmasi

SenaryoKullanim
Tum oturum yalnizca plan olmali—permission-mode plan
Claude planlama gerektigine karar vermeliEnterPlanMode araci (otomatik)
CI boru hatti: planla, insan incelemesi, sonra yurutu—permission-mode plan + —resume
Opsiyonel planlama ile interaktif oturumClaude’un EnterPlanMode’u dogal olarak cagirmasina izin verin

Bayrak deterministiktir — oturumun baslamadan once yalnizca plan olacagini bilirsiniz. Arac adaptiftir — Claude gorev karmasikligina gore karar verir. Otomasyon ve CI boru hatlari icin bayragi kullanin. Claude’un yalnizca gorev yeterince karmasik oldugunda planlamasini istediginiz interaktif is akislari icin, --append-system-prompt araciligiyla yonlendirin:

Terminal window
claude -p "goreviniz" \
--append-system-prompt "Kullanici bir degisiklik listesi, birden fazla gorev veya \
karmasik bir ozellik istegi getirdiginde, hemen EnterPlanMode cagirin ve \
bir plan sunmadan once kod tabanini arastirin."

Ne bayrak ne de acik bir talimat olmadan, Claude otomatik olarak planlamaz. Sadece yurutur.

Gotcha

Planlar result icinde degil, permission_denials icindedir. result alani “Permission was denied. Please approve the write…” gibi genel bir durum mesaji icerir. Gercek plan metni, tool_name degeri “ExitPlanMode” olan permission_denials[0].tool_input.plan konumundadir. Otomasyonunuzda result’u ayristirirseniz, plan yerine islenmis bir dize elde edersiniz. Bu ayni zamanda —output-format json kullanmaniz gerektigini de ifade eder — metin modu yalnizca result’u dondurur, bu nedenle plan gorunmez olur.

Gotcha

Her plan-modu turunda permission_denials icinde birden fazla giris olabilir. Ilki tipik olarak plan metnini iceren ExitPlanMode cagrisidir. Sonraki girisler, Claude’un denedigi engellenen eylem araclaridir (Write, Edit, Bash). Bu engellenen eylemler, Claude’un onay uzerine ne yapacaginin bir on izlemesidir — planin onerilen degisikliklerle eslestiqini dogrulamak icin bunlari inceleyin. Dizinin yalnizca bir elemana sahip oldugunu varsaymayin.

Modele Bagli Davranis

Sonnet, yapilandirilmis bir plan alaniyla ExitPlanMode cagririr. Opus bunun yerine AskUserQuestion kullanabilir ve plani bir sorunun icine gomebilir. Bir ayristirici olusturuyorsaniz, permission_denials icinde hem ExitPlanMode hem de AskUserQuestion kontrolu yapin.

Tip

Bir plan oturumunu yanlis —permission-mode ile devam ettirmek gecerlidir ancak davranisi tamamen degistirir. bypassPermissions ile devam ettirmek her seyi onaysiz yurutur. plan ile devam ettirmek sizi inceleme modunda tutar. Her devam ettirmede hangi modu gectiginiz konusunda bilerek hareket edin.

Bunu Uygulamada Gorun

Bir cok ajanli boru hattinin inceleme -> ozet -> takim zekasi seklinde nasil zincirleme yaptigini, ajanllar arasi baglam aktarimi icin —resume kullandigini gorun: MR Inceleyici Olusturun, Bolum 5: Cok Ajanli Boru Hatti.

Now Do This

Tam plan-inceleme-yurutme dongusunu deneyin: SID=$(claude -p “Bu projedeki en buyuk fonksiyonu yeniden duzenle” —permission-mode plan —output-format json | jq -r ‘.session_id’). Plani okuyun. Dogru gorunuyorsa, yurutun: claude -p “Devam et” —resume “$SID” —permission-mode bypassPermissions. Yurutmeden once inceleme yaptiniz — otonom kod degisikliklerini calistirmanin en guvenli yolu.