𝗠𝘆 𝗖𝗼𝗱𝗶𝗻𝗴 𝗔𝗴𝗲𝗻𝘁 𝗔𝘀𝗸𝗲𝗱 𝗣𝗲𝗿𝗺𝗶𝘀𝘀𝗶𝗼𝗻 𝗳𝗼𝗿 𝗘𝘃𝗲𝗿𝘆 𝗧𝗶𝗻𝘆 𝗦𝘁𝗲𝗽
My AI assistant had a major problem. It did not refuse to ask for permission. It asked for permission too often.
I would give it a simple task like reading a PDF. The assistant would make one move, ask for approval, run the command, and then immediately ask again for the next tiny step. One task became a treadmill of prompts.
Approval prompts are necessary. You want a local assistant to stop before it runs commands, writes files, or opens apps. But real work requires many steps. Reading a PDF involves checking for Python, finding a converter, running that converter, and reading the text.
If every single step asks for approval, you stop evaluating risk. You start clicking through interruptions just to make them go away. This trains you to ignore the safety system. That is more dangerous than having no safety at all.
The old workflow looked like this:
- Assistant chooses a tool
- Policy requires confirmation
- User approves
- Tool runs
- Assistant asks again for the next tool
The assistant missed the intent of the user. You were not approving one tiny probe. You were approving a complete task.
I changed how CliGate works. Now, once you approve the first action in a chat, the system sets a flag. This lets later steps continue without new approval rounds. The assistant still gets the real results so it can keep working.
I also added an escape hatch: /safe. This command turns explicit confirmation mode back on.
I also fixed a language bug. When the system continued a task, it sometimes changed the language of the prompts. If you spoke Chinese, the assistant would switch to English for the next prompt. Now, the assistant looks at your last real message to choose the right language.
The fix is not to disable approvals. The fix is to remember why the user gave approval.
For local tools, use task-scoped trust:
- Ask before crossing a major boundary
- Remember the approval for the current task
- Provide a way to return to strict mode
- Do not let system messages change the user intent
This is how I build approvals in CliGate. It is my local control plane for Claude Code, Codex CLI, and Gemini CLI.
How do you handle approval fatigue? Do you approve per tool call, per task, or per session?
Kodlama ajanım her küçük adım için izin istedi
Bir süredir yapay zeka kodlama ajanları kullanıyorum ve her ne kadar inanılmaz derecede güçlü olsalar da, son zamanlarda can sıkıcı bir sorunla karşılaştım.
Ajan, en ufak bir şey yapmak istediğinde bile —bir dosyayı okumak veya basit bir komut çalıştırmak gibi— durup benden izin istiyordu.
" package.json dosyasını okuyabilir miyim?"
" src/components adında yeni bir dizin oluşturabilir miyim?"
" npm install komutunu çalıştırabilir miyim?"
Yapay zekanın bana yardım etmesi yerine, ona bebek bakıcılığı yapıyormuşum gibi hissettirdi. Sürekli bağlam değiştiriyor, "evet" veya "izin ver" yazmak için ellerimi klavyeye götürüyor ve akışımı kaybediyordum.
Sorun ajanın bozuk olması değildi; sadece fazla güvenli davranmasıydı. Son derece temkinli olacak şekilde programlanmıştı; bu güvenlik için harika olsa da geliştirici üretkenliği için berbattı.
Çözüm şaşırtıcı derecede basitti. Ona daha fazla özerklik tanımak için sistem istemini (system prompt) güncelledim.
Şunun yerine:
"Sen bir kodlama asistanısın. Herhangi bir işlem yapmadan önce her zaman izin iste."
Şuna değiştirdim:
"Sen otonom bir kodlama ajanısın. Görevi tamamlamak için gerekli olan dosyaları okuma, dizinler oluşturma ve komutlar çalıştırma iznine sahipsin. Yalnızca potansiyel olarak yıkıcı bir komut (
rm -rf /gibi) çalıştıracaksan veya kritik bir mimari karar konusunda emin değilsen izin iste."
Fark gece ile gündüz gibiydi. Ajan artık görevleri kesintisiz bir şekilde yerine getiriyor, yalnızca gerçekten girdime ihtiyaç duyduğunda duruyor.
Alınan ders: Yapay zeka ajanları oluştururken veya kullanırken, güvenlik ve özerklik arasında doğru dengeyi bulmanız gerekir. Çok fazla güvenlik, sadece çok pahalı bir sohbet robotuna bebek bakıcılığı yapmanıza neden olur. Çok az güvenlik ise çok pahalı bir hatayla sonuçlanabilir.