Claude Code Ayarlarım: Başında Durmadan Maksimum Verim

Yayın: 24 Mart 2026

Claude Code Ayarlarım: Başında Durmadan Maksimum Verim

Yaklaşık bir yıldır Claude Code ile kod yazıyorum. Japonya'daki ayı olaylarını takip eden Kumamap dahil birden fazla projede kullandım. Bir gün, veri pipeline'ı çalıştırırken Opus kontrolden çıktı. Yeni kayıtları mevcut verilerle birleştirmek yerine tüm veri dizisini baştan yazdı. Yerel veri gitti.

Claude Opus yerel veritabanı verisini siliyor
Opus places dizisini birleştirmek yerine tamamen değiştirdi. İyi ki sadece lokalde oldu.

Neyse ki hasar sınırlı kaldı. Savunma sistemlerim prod'u korudu ve yerel veri kaybı kurtarılabilir durumdaydı. Bu yazı o savunma sistemleri hakkında: Claude Code'dan maksimum verim alırken başında oturup beklemeden nasıl çalıştırılır.

Dört Katmanlı Savunma

Dört katmana güveniyorum. Hiçbiri tek başına mükemmel değil ama birlikte çalıştıklarında bir şeyler ters gittiğinde hasarı kontrol altında tutuyorlar.

Katman 1: CLAUDE.md

Projeye gömülü davranış talimatları

Katman 2: Prompting

Mevcut konuşmada verilen anlık yönlendirmeler

Katman 3: settings.json

Modelin geçersiz kılamayacağı katı araç izinleri

Katman 4: Mimari

Prod kimlik bilgileri erişim dışında, yedekler, tek kullanımlık yerel veritabanları

Katman 1: CLAUDE.md

CLAUDE.md, ajanın her oturumun başında okuduğu bir dosyadır. Ajana projenizde nasıl davranmasını beklediğinizi söyler. İşte Kumamap projemdeki Production Safety bölümü:

## Production Safety

  • Read-only operations are free to run. SELECT queries, wrangler d1 execute reads, git log/status/diff — go ahead.
  • Irreversible or destructive operations require explicit user request. Deploys, migrations, data mutations (INSERT/UPDATE/DELETE/DROP/ALTER), force pushes, rm -rf, npm publish — always confirm first.
  • The cost of asking is zero. The cost of destroying prod is infinite.

Bu çoğu zaman iyi çalışır. Ajan bu kuralları okur ve yıkıcı bir şey yapmadan önce sorar. Ama CLAUDE.md bir öneri, bir duvar değil. Model bunu görmezden gelmeyi seçebilir. Bir diziyi baştan yazmayı "doğru" yaklaşım olarak gördüğünde, durup CLAUDE.md'yi tekrar okumaz.

Katman 2: Prompting

Bunlar çalışırken ajana verdiğiniz konuşma içi talimatlar:

"don't touch the production database"
"only read, don't write anything"
"run the migration on local first, show me the result before touching prod"
"don't delete any files, just show me what you'd remove"
"check the logs before making any changes"

Mevcut görev için faydalılar ama kalıcı değiller. Ajan bunları oturum ortasında unutabilir ve yeni konuşmalara taşınmazlar. Tek başına prompting güvenilir bir savunma değil.

Katman 3: settings.json

İşler burada ciddileşiyor. .claude/settings.json, ajanın sormadan hangi araçları kullanabileceğini kontrol eder. CLAUDE.md ve prompting'in aksine bunlar modelin geçersiz kılamayacağı katı sınırlardır.

Üç seviye var: allow (sessizce çalışır), ask (onayınızı gerektirir) ve deny (tamamen engellenir). Listede olmayan her şey varsayılan olarak sorar.

Felsefe

Tek kural: bir işlem geri alınabiliyorsa izin ver. Geri alınamıyorsa önce sor.

  • Git yerel işlemleri (add, commit, branch, stash): git ile geri alınabilir. Allow.
  • Git uzak işlemleri (push) ve yıkıcı işlemler (reset --hard, clean): geri alınamaz. Ask.
  • Dosya sistemi yazma (mkdir, cp, mv): her şey git ile takip ediliyor, dolayısıyla geri alınabilir. Allow. Ama rm yıkıcı. Ask.
  • Deployment (wrangler): geri alınamaz. Ask.
  • Okuma işlemleri (Read, Grep, Glob, WebSearch): sıfır risk. Allow.

Dosyanın Tamamı

Projelerimde kullandığım settings dosyasının tamamı:

{
  "permissions": {
    "deny": [],
    "allow": [
      // Reading & searching
      "Read",
      "Grep",
      "Glob",
      "WebSearch",
      "WebFetch",

      // Git — safe read/write operations
      "Bash(git status *)",
      "Bash(git log *)",
      "Bash(git diff *)",
      "Bash(git branch *)",
      "Bash(git show *)",
      "Bash(git stash *)",
      "Bash(git add *)",
      "Bash(git commit *)",
      "Bash(git fetch *)",
      "Bash(git pull *)",
      "Bash(git merge *)",
      "Bash(git rebase *)",
      "Bash(git cherry-pick *)",
      "Bash(git tag *)",

      // GitHub CLI
      "Bash(gh *)",

      // ⚠️ Runtimes — can do anything
      "Bash(node *)",
      "Bash(python3 *)",

      // npm — read-only & dev tools
      "Bash(npm run *)",
      "Bash(npm list *)",
      "Bash(npm ls *)",
      "Bash(npm show *)",
      "Bash(npm view *)",
      "Bash(npm outdated *)",
      "Bash(npx prettier *)",
      "Bash(npx eslint *)",
      "Bash(npx tsc *)",
      "Bash(npx vitest *)",
      "Bash(npx svelte-check *)",

      // pip — read-only
      "Bash(pip show *)",
      "Bash(pip list *)",

      // Filesystem — read & navigate
      "Bash(ls *)",
      "Bash(cat *)",
      "Bash(head *)",
      "Bash(tail *)",
      "Bash(wc *)",
      "Bash(du *)",
      "Bash(find *)",
      "Bash(which *)",
      "Bash(file *)",
      "Bash(echo *)",
      "Bash(date *)",
      "Bash(pwd *)",
      "Bash(diff *)",

      // Text processing
      "Bash(sort *)",
      "Bash(uniq *)",
      "Bash(jq *)",
      "Bash(grep *)",
      "Bash(rg *)",
      "Bash(sed *)",
      "Bash(awk *)",
      "Bash(tr *)",
      "Bash(cut *)",
      "Bash(base64 *)",

      // Filesystem — write (git tracked, so revertible)
      "Bash(mkdir *)",
      "Bash(touch *)",
      "Bash(cp *)",
      "Bash(mv *)",

      // Misc tools
      "Bash(open *)",
      "Bash(cwebp *)",
      "Bash(sips *)",
      "Bash(gunzip *)",
      "Bash(curl *)",

      // Version/help — always safe
      "Bash(* --version)",
      "Bash(* --help)"
    ],
    "ask": [
      // Deployment — ask before shipping
      "Bash(wrangler *)",
      "Bash(npx wrangler *)",

      // Git — destructive or irreversible operations
      "Bash(git push *)",
      "Bash(git reset --hard *)",
      "Bash(git clean *)",
      "Bash(git checkout .)",
      "Bash(git checkout -- .)",
      "Bash(git checkout * -- .)",
      "Bash(git restore .)",

      // Package management
      "Bash(npm install *)",
      "Bash(npm publish *)",
      "Bash(pip install *)",

      // Destructive
      "Bash(rm *)",
      "Bash(sudo *)",
      "Bash(gh repo delete *)",

      // Secrets — never read without asking
      "Read(.dev.vars)",
      "Read(.env)",
      "Bash(cat *.env)",
      "Bash(cat .env)"
    ]
  }
}

Runtime İkilemi

// ⚠️ Runtimes — can do anything: file writes,
// network requests, db operations.
// They bypass other restrictions.
"Bash(node *)",
"Bash(python3 *)"

node ve python3 her şeyi yapabilir: dosya yazabilir, ağ istekleri gönderebilir, veritabanlarıyla etkileşime geçebilir. Settings dosyasındaki diğer tüm kısıtlamaları atlarlar.

Bunları ask'e taşımak daha güvenli ama iş akışınızı öldürür. Ajanın çalıştırmak istediği her script'i onaylamak zorunda kalırsınız. Zamanla, yeni modeller daha akıllı hale geldikçe bunları allow'da tutma konusunda rahatladım. Bu kişisel bir risk toleransı kararı.

Ortam Değişkeni Tuzağı

// Secrets — never read without asking
"Read(.dev.vars)",
"Read(.env)",
"Bash(cat *.env)",
"Bash(cat .env)"

Bu gözden kaçırması kolay bir nokta. wrangler deployment'larını engelleseniz bile, ajan yine de .env veya .dev.vars dosyalarınızı okuyup curl ya da node fetch ile doğrudan HTTP istekleri yapabilir. API anahtarlarınızı alıp deploy kısıtlamalarınızı tamamen atlayarak servisleri kendi başına çağırabilir.

Bu yüzden ortam değişkenleri her zaman ask'te olmalı. Ajan, siz farkında olmadan gizli bilgilerinizi asla görmemeli.

Katman 4: Mimari

Yukarıdaki üç katmanın hepsi başarısız olsa bile mimariniz hasarı kontrol altında tutmalı:

  • Prod kimlik bilgileri geliştirme makinelerinde bulunmaz
  • Yerel geliştirme veritabanları tek kullanımlıktır
  • Her şey git ile takip edilir, böylece değişiklikler geri alınabilir
  • Prod veritabanlarında yedekleme etkin

Prod Veritabanı

Bu kısım biraz karmaşık. Çoğu zaman neler olduğunu anlamak için prod'u okumanız gerekir, dolayısıyla ajana SELECT erişimi vermek mantıklı.

İdeal kurulum, prod'un birebir yerel kopyasıyla çalışmaktır; böylece ajan gerçek veritabanı yerine onunla etkileşime girer. Ama bunları senkron tutmak her zaman pratik değil.

Ne karar verirseniz verin, prod veritabanınızda yedeklemeyi mutlaka etkinleştirin. Ajan geri alınamaz bir hasar verirse anında kurtarma yapabilmeniz gerekir.

Ayarlar Bu Olayı Önledi mi?

Dürüst olmak gerekirse, hayır. Veri kaybı python3 üzerinden gerçekleşti ve python3, allow'daydı. Hiçbir izin dosyası bunu yakalayamazdı.

Ama hasar sadece yerel ortamda kaldı. Prod, Katman 4 sayesinde korunuyordu: prod veritabanı kimlik bilgileri geliştirme makinemde yoktu, bu yüzden ajan istese de oraya ulaşamazdı.

İşte bu yüzden dört katmanın hepsine ihtiyacınız var. Hiçbiri tek başına yeterli değil.

Başlarken

Kısıtlayıcı başlayın ve güven oluştukça gevşetin. Yukarıdaki settings dosyasını kopyalayın. Temkinliyseniz node ve python3ask'e taşıyın. Production safety kuralları içeren bir CLAUDE.md yazın. Prod kimlik bilgilerini geliştirme makinenizden uzak tutun. Yedeklemeyi etkinleştirin.

Amaç, ajanı kısıtlamalarla kullanılamaz hale getirmek değil. Güvenli olan yerde hızlı, önemli olan yerde dikkatli olmasını sağlamak.

Bu blog İngilizce'den LLM ile çevrilmiştir. Herhangi bir belirsizlik durumunda İletişim sayfasından bana ulaşabilirsiniz.

Yorum bırak

Yorumlar

Diğer bloglara bak

Q-Learning: İnteraktif Pekiştirmeli Öğrenmenin Temeli

2025/07/07

Q-Learning: İnteraktif Pekiştirmeli Öğrenmenin Temeli

Q-LearningPekiştirmeli ÖğrenmeKeşif vs KullanımMakine ÖğrenmesiAIİnteraktifGrid WorldDeğer Fonksiyonu
Optimizasyon Algoritmaları: SGD, Momentum ve Adam

2025/07/06

Optimizasyon Algoritmaları: SGD, Momentum ve Adam

OptimizasyonSGDAdamMomentumMakine ÖğrenmesiDerin ÖğrenmeSinir AğlarıAlgoritmalar
Karakterlerden Kelimelere: Japonca BPE Tokenizer

2025/07/05

Karakterlerden Kelimelere: Japonca BPE Tokenizer

BPETokenizerJaponcaNLPKelimeMakine ÖğrenmesiMetin İşleme
Svelte ve JavaScript ile Basit ve Dinamik Bir Tooltip Yaratma Yöntemi

2024/06/19

Svelte ve JavaScript ile Basit ve Dinamik Bir Tooltip Yaratma Yöntemi

JavaScriptSvelteKolayBasitDinamikTooltipFront-end
JavaScript ile Tokyo'nun İnteraktif Haritasını Oluşturun

2024/06/17

JavaScript ile Tokyo'nun İnteraktif Haritasını Oluşturun

SvelteSVGJavaScriptTailwindInteraktif HaritaTokyoJaponya23 WardsTokyo Metropolitan Bölgesi
Matplotlib'de Japonca Karakter Sorununu Çözme Yöntemi

2024/06/14

Matplotlib'de Japonca Karakter Sorununu Çözme Yöntemi

MatplotlibGrafikÇizimPythonJaponca KarakterlerSorunBug
Kitap İncelemesi | Ötekiyle Konuşmak by Malcolm Gladwell

2024/06/13

Kitap İncelemesi | Ötekiyle Konuşmak by Malcolm Gladwell

Kitap İncelemesiÖtekiyle KonuşmakTalking to StrangersMalcolm Gladwell
Japonca'da En Sık Kullanılan 3.000 Kanji

2024/06/07

Japonca'da En Sık Kullanılan 3.000 Kanji

3000Kullanma YayginligiKanji KullanimiKanjiJaponcaKanji ListesiKanji YayginligiJLPTJaponca CalismaOgrenmeYaygin Japonca Kelimeler
VSCode'da Regex Kullanarak Replace Yapma Yöntemi

2024/06/07

VSCode'da Regex Kullanarak Replace Yapma Yöntemi

VSCodeRegexAramaDeğiştirmeKoşullu DeğiştirmeFindReplaceConditional Replace
Svelte'de Readable Store Kullanmayın

2024/06/06

Svelte'de Readable Store Kullanmayın

SvelteReadableWritableState ManagementStoreHızBellekDosya Boyutu
Dosyaları Gzip ve Pako ile Sıkıştırarak Web Sitesinin Yükleme Hızını Artırın

2024/06/05

Dosyaları Gzip ve Pako ile Sıkıştırarak Web Sitesinin Yükleme Hızını Artırın

GzipSıkıştırmaPakoWeb SitesiYükleme HızıSvelteKit
Web Sayfasında Farenin Uzerinde Oldugu Kelimeyi JavaScript ile Bulun

2024/05/31

Web Sayfasında Farenin Uzerinde Oldugu Kelimeyi JavaScript ile Bulun

JavascriptFarePointerHoverWeb Geliştirme
Svelte ve SVG ile Interaktif Harita Oluşturun

2024/05/29

Svelte ve SVG ile Interaktif Harita Oluşturun

SvelteSVGInteraktif HaritaFront-end
Kitap İncelemesi | Geleneklere Uymayanlar Dünyayı Nasıl İleri Taşıyor? by Adam Grant & Sheryl Sandberg

2024/05/28

Kitap İncelemesi | Geleneklere Uymayanlar Dünyayı Nasıl İleri Taşıyor? by Adam Grant & Sheryl Sandberg

Kitap İncelemesiGeleneklere Uymayanlar Dünyayı Nasıl İleri Taşıyor?Originals: How Non-Conformists Move the WorldAdam Grant & Sheryl Sandberg
Javascript Kullanarak Sudoku Nasıl Çözülür?

2024/05/27

Javascript Kullanarak Sudoku Nasıl Çözülür?

Sudoku ÇözümAlgoritmaJavaScriptKodlama
Web Siteme Gelen Trafiği Bir Ayda Nasıl 10 Kat Artırdım?

2024/05/26

Web Siteme Gelen Trafiği Bir Ayda Nasıl 10 Kat Artırdım?

Website Trafik ArtırmaClick (Tıklama)Impression (Gösterim)Google Search Console
Hayat Bisiklet Sürmek Gibidir

2024/05/24

Hayat Bisiklet Sürmek Gibidir

BisikletHayatFilozofiBaşarı
JavaScript'te Backtracking Algoritması ile Tamamlanmış Sudoku Oluşturun

2024/05/19

JavaScript'te Backtracking Algoritması ile Tamamlanmış Sudoku Oluşturun

SudokuBacktracking AlgoritmasıTamamlanmış SudokuJavaScript
Tailwind Neden Harikadır ve Web Geliştirmeyi Nasıl Kolay Hale Getirir?

2024/05/16

Tailwind Neden Harikadır ve Web Geliştirmeyi Nasıl Kolay Hale Getirir?

TailwindHarikaFront-endWeb Geliştirme
Python ve Git Hooks ile Otomatik Olarak Site Haritası Oluşturma

2024/05/15

Python ve Git Hooks ile Otomatik Olarak Site Haritası Oluşturma

Git HooksPythonSite HaritasıSvelteKit
Kitap İncelemesi | Çok Yönlü - Başarı İçin Neden Çok Şeyle İlgilenmeliyiz? by David Epstein

2024/05/14

Kitap İncelemesi | Çok Yönlü - Başarı İçin Neden Çok Şeyle İlgilenmeliyiz? by David Epstein

Kitap İncelemesiRange(Çok Yönlü)David EpsteinBaşarı İçin Neden Çok Şeyle İlgilenmeliyiz?
Svelte ve SvelteKit nedir?

2024/05/13

Svelte ve SvelteKit nedir?

SvelteSvelteKitFront-endVite
SvelteKit ile Internationalization (Çoklu Dil Desteği)

2024/05/12

SvelteKit ile Internationalization (Çoklu Dil Desteği)

InternationalizationÇoklu Dil DestegiSvelteKitI18N
Svelte'de Caching ile Deploy Süresini Azaltın

2024/05/11

Svelte'de Caching ile Deploy Süresini Azaltın

SvelteEnhanced ImageCachingDeploy Suresi
Svelte ve Intersection Oberver ile Lazy-Load

2024/05/10

Svelte ve Intersection Oberver ile Lazy-Load

Lazy LoadingWebsite Hiz OptimizasyonuSvelteIntersection Observer
Genetik Algoritma İle Hisse Senedi Portföyü Optimizasyonu

2024/05/10

Genetik Algoritma İle Hisse Senedi Portföyü Optimizasyonu

Hisse SenediPortföy OptimizasyonuGenetik AlgoritmaPython
ShapeFile Formatini SVG Formatina Degistirme Yontemi

2024/05/09

ShapeFile Formatini SVG Formatina Degistirme Yontemi

ShapeFileSVGPythonGeoJSON
Svelte'de Reaktivite: Variables, Binding, ve Key Fonksiyonu

2024/05/08

Svelte'de Reaktivite: Variables, Binding, ve Key Fonksiyonu

SvelteSayfa GuncellemeBindingKey Fonksiyonu
Kitap İncelemesi | Savaş Sanatı - Sun Tzu

2024/05/07

Kitap İncelemesi | Savaş Sanatı - Sun Tzu

Kitap İncelemesiThe Art of War (Savaş Sanatı)Sun TzuThomas Cleary
Specialistlik Bitti. Yaşasın Generalistlik!

2024/05/06

Specialistlik Bitti. Yaşasın Generalistlik!

GenelUzmanParadigma DegisimiYazilim Muhendisligi
2018 Milletvekili Seçimlerinde Yaşa Göre Parti Eğilimi

2024/05/03

2018 Milletvekili Seçimlerinde Yaşa Göre Parti Eğilimi

PythonSecmen Profil Analizi2018 Milletvekili SecimleriSecmen Yas Analizi
Python Selenium Ile Secmen Veritabani Olusturma

2024/05/01

Python Selenium Ile Secmen Veritabani Olusturma

PythonSeleniumVeri KazimaMilletvekili Secimleri
Svelte ve Tailwind Ile Infinite Scroll Yapma Yontemi

2024/04/30

Svelte ve Tailwind Ile Infinite Scroll Yapma Yontemi

SvelteTailwindInfinite ScrollFront-end
1 Yıl İçerisinde Japonca Konuşabilmek

2024/04/29

1 Yıl İçerisinde Japonca Konuşabilmek

JaponcaDil yeterliligiJLPTKisa zamanda dil ogrenme
Svelte ve Tailwind ile Kullanıma Hazır Web Sitesi Şablonu

2024/04/25

Svelte ve Tailwind ile Kullanıma Hazır Web Sitesi Şablonu

Website SablonuFront-endSvelteTailwind
Tembel Muhendisler Kotu Urunler Yapar

2024/01/29

Tembel Muhendisler Kotu Urunler Yapar

Tembel MuhendisKotu UrunStarbucksSBI
Mukemmellik Uzerine

2024/01/28

Mukemmellik Uzerine

MukemmellikHayatin anlamiTatmin Edici HayatAmac
MacBook'ta PDF'i PNG'ye Cevirme Yontemi

2024/01/28

MacBook'ta PDF'i PNG'ye Cevirme Yontemi

PDFPNGMacBookAutomator
2023'u Kapatiyoruz: Bu Yil Okunan 24 Kitap

2023/12/31

2023'u Kapatiyoruz: Bu Yil Okunan 24 Kitap

KitapOkuma2023Geriye Bakma
Python PIL Kullarak Foto Kolaji Yapma Yontemi

2023/12/30

Python PIL Kullarak Foto Kolaji Yapma Yontemi

PythonPILGörüntü işlemeKolaj
Site Ziyaretcilerinin Alet ve Tarayicilarini Tespit Etme Yontemi

2024/01/09

Site Ziyaretcilerinin Alet ve Tarayicilarini Tespit Etme Yontemi

JavascriptAlet TespitiBrowser TespitiWebsite Analizi
ChatGPT Cevap Anatomisi

2024/01/19

ChatGPT Cevap Anatomisi

ChatGPTBuyuk Dil ModeliMakina OgrenimiYapay Zeka