📅 5 Nisan 2026 Lokasyon: /loop, /schedule, cron tools Anthropic docs ↗

Best Practice Implemented Desktop scheduled tasks · Announcement

Zamanlanmış Görevler (Scheduled Tasks)

Claude Code içinde /loop ve cron zamanlama araçlarını kullanarak istemleri tekrarlamalı çalıştırabilir, durum sorgulaması yapabilir veya tek seferlik hatırlatıcılar ayarlayabilirsiniz.

Not: Zamanlanmış görevler Claude Code v2.1.72 veya üzerini gerektirir. Sürümünüzü claude --version ile kontrol edebilirsiniz.

Zamanlanmış görevler, Claude'un bir istemi belirli aralıklarla otomatik olarak yeniden çalıştırmasını sağlar. Bunları bir dağıtımı sorgulamak, bir PR'ı izlemek, uzun süren bir derlemeyi kontrol etmek veya oturum içinde kendinize bir şeyi hatırlatmak için kullanabilirsiniz.

Olaylara anında tepki vermek için polling yerine Kanallar (Channels) kullanılabilir — CI sisteminiz başarısızlığı doğrudan oturuma itebilir. Oturumu belirli bir koşul sağlanana kadar döngüde tutmak için /goal kullanılır.

Görevler oturum kapsamlıdır: mevcut konuşmada yaşarlar ve yeni bir oturum başlattığınızda dururlar. --resume veya --continue ile devam ettirmek, süresi dolmamış görevleri geri getirir: son 7 gün içinde oluşturulmuş tekrarlayan görevler veya zamanı henüz geçmemiş tek seferlik görevler.

Oturumdan bağımsız zamanlama için Routines, Desktop scheduled tasks veya GitHub Actions kullanılabilir.

Zamanlama seçeneklerini karşılaştırma (Compare scheduling options)

Claude Code, tekrarlayan veya tek seferlik işler için üç farklı zamanlama yöntemi sunar:

Özellik Cloud Desktop /loop
Anthropic bulutunda çalışır Evet Hayır Hayır
Makine gerektirir Hayır Evet Evet
Açık oturum gerektirir Hayır Hayır Evet
Yeniden başlatmalarda kalıcıdır Evet Evet --resume ile süresi dolmamışsa
Yerel dosyalara erişim Hayır (yeni klon) Evet Evet
MCP sunucuları Görev başına yapılandırılır Yapılandırma dosyaları ve bağlayıcılar Oturumdan devralır
İzin istemleri Hayır (otonom çalışır) Görev başına yapılandırılabilir Oturumdan devralır
Özelleştirilebilir zamanlama CLI'da /schedule ile Evet Evet
Minimum aralık 1 saat 1 dakika 1 dakika

Cloud görevlerini makineniz olmadan güvenilir şekilde çalışması gereken işler için kullanın. Desktop görevlerini yerel dosyalara ve araçlara erişim gerektiğinde kullanın. /loop'u oturum sırasında hızlı sorgulamalar için kullanın.

/loop ile bir istemi tekrarlamalı çalıştırma (Run a prompt repeatedly with /loop)

/loop paketlenmiş becerisi, oturum açıkken bir istemi tekrarlamalı çalıştırmanın en hızlı yoludur. Hem aralık hem de istem isteğe bağlıdır ve sağladıklarınız döngünün davranışını belirler.

Sağlanan Örnek Sonuç
Aralık ve istem /loop 5m deploy'i kontrol et İstem sabit zamanlamayla çalışır
Sadece istem /loop deploy'i kontrol et İstem Claude'un her yinelemede seçtiği aralıkta çalışır
Sadece aralık veya hiçbir şey /loop Yerleşik bakım istemi veya varsa loop.md çalışır

Ayrıca başka bir komutu istem olarak geçebilirsiniz, örneğin /loop 20m /review-pr 1234 ile paketlenmiş bir iş akışını her yinelemede yeniden çalıştırabilirsiniz.

Sabit aralıkta çalıştırma (Run on a fixed interval)

Bir aralık sağladığınızda Claude bunu bir cron ifadesine dönüştürür, işi zamanlar ve hızı ile iş kimliğini onaylar.

/loop 5m dağıtımın bitip bitmediğini kontrol et ve bana ne olduğunu söyle

Aralık, 30m gibi çıplak bir token olarak başta veya every 2 hours gibi bir ifade olarak sonda yer alabilir. Desteklenen birimler: s (saniye), m (dakika), h (saat), d (gün). Saniyeler en yakın dakikaya yuvarlanır çünkü cron dakika hassasiyetine sahiptir. Temiz bir cron adımına dönüşmeyen aralıklar (7m veya 90m gibi) en yakın uygun aralığa yuvarlanır ve Claude seçtiğini belirtir.

Claude'un aralığı seçmesine izin verme (Let Claude choose the interval)

Aralığı atladığınızda Claude sabit bir cron zamanlaması yerine dinamik olarak bir aralık seçer. Her yinelemeden sonra gözlemlerine dayanarak bir dakika ile bir saat arasında bir gecikme seçer: derleme bitiyorken veya PR aktifken kısa beklemeler, hiçbir şey beklemiyorken uzun beklemeler. Seçilen gecikme ve nedeni her yinelemenin sonunda yazdırılır.

/loop CI'nın geçip geçmediğini kontrol et ve yorumları ele al

Dinamik /loop zamanlaması istediğinizde Claude doğrudan Monitor aracını kullanabilir. Monitor, arka planda bir betik çalıştırır ve her çıktı satırını geri akışlar; bu, polling'i tamamen ortadan kaldırır ve genellikle bir istemi aralıklarla yeniden çalıştırmaktan daha token verimli ve duyarlıdır.

Dinamik zamanlanmış bir döngü, diğer görevler gibi zamanlanmış görev listenizde görünür, böylece aynı şekilde listeleyebilir veya iptal edebilirsiniz. Jitter kuralları buna uygulanmaz ancak yedi günlük süre sonu uygulanır: döngü başlattıktan yedi gün sonra otomatik olarak biter.

Not: Bedrock, Vertex AI ve Microsoft Foundry'de aralıksız bir istem, bunun yerine sabit 10 dakikalık bir zamanlamayla çalışır.

Yerleşik bakım istemini çalıştırma (Run the built-in maintenance prompt)

İstemi atladığınızda Claude sizin sağladığınız yerine yerleşik bir bakım istemi kullanır. Her yinelemede sırasıyla şunları yapar:

Claude bu kapsam dışında yeni girişimler başlatmaz ve itme veya silme gibi geri döndürülemez eylemler yalnızca transkriptin zaten yetkilendirdiği bir şeyi devam ettirdiğinde ilerler.

/loop

Çıplak /loop bu istemi dinamik olarak seçilen bir aralıkta çalıştırır. Sabit zamanlamada çalıştırmak için /loop 15m gibi bir aralık ekleyin.

Not: Bedrock, Vertex AI ve Microsoft Foundry'de istemsiz /loop, bakım döngüsünü başlatmak yerine kullanım mesajını yazdırır.

Varsayılan istemi loop.md ile özelleştirme (Customize the default prompt with loop.md)

Bir loop.md dosyası, yerleşik bakım istemini kendi talimatlarınızla değiştirir. Çıplak /loop için tek bir varsayılan istem tanımlar, ayrı zamanlanmış görevlerin bir listesini değil. Komut satırında bir istem sağladığınızda yok sayılır.

Claude dosyayı iki konumda arar ve bulduğu ilkini kullanır:

Yol Kapsam
.claude/loop.md Proje düzeyinde. Her iki dosya da varsa önceliklidir.
~/.claude/loop.md Kullanıcı düzeyinde. Kendi dosyasını tanımlamayan herhangi bir projede geçerlidir.

Dosya düz Markdown'dır, gerekli bir yapısı yoktur. Doğrudan /loop istemini yazıyormuş gibi yazın. Aşağıdaki örnek bir release branch'ini sağlıklı tutar:

.claude/loop.md
Check the `release/next` PR. If CI is red, pull the failing job log, diagnose, and push a minimal fix. If new review comments have arrived, address each one and resolve the thread. If everything is green and quiet, say so in one line.

loop.md düzenlemeleri bir sonraki yinelemede etkili olur, böylece bir döngü çalışırken talimatları iyileştirebilirsiniz. Her iki konumda da loop.md yoksa döngü yerleşik bakım istemine geri döner. Dosyayı kısa tutun: 25.000 baytın üzerindeki içerik kesilir.

Döngüyü durdurma (Stop a loop)

Bir /loop bir sonraki yinelemeyi beklerken durdurmak için Esc tuşuna basın. Bu, bekleyen uyandırmayı temizler, böylece döngü tekrar ateşlenmez. Doğrudan Claude'a sorarak zamanladığınız görevler Esc'ten etkilenmez ve siz silene kadar yerinde kalır.

Kendi kendine hız modunda (self-paced mode), Claude görevin kanıtlanabilir şekilde tamamlandığını belirlediğinde bir sonraki uyandırmayı zamanlamayarak döngüyü kendi başına sonlandırabilir. Sabit aralıktaki döngüler siz durdurana veya yedi gün geçene kadar çalışmaya devam eder.

Tek seferlik hatırlatıcı ayarlama (Set a one-time reminder)

Tek seferlik hatırlatıcılar için /loop kullanmak yerine istediğinizi doğal dilde tanımlayın. Claude, çalıştıktan sonra kendini silen tek ateşlemeli bir görev zamanlar.

bana saat 3'te release branch'ini itmemi hatırlat
45 dakika içinde entegrasyon testlerinin geçip geçmediğini kontrol et

Claude, ateşleme zamanını bir cron ifadesi kullanarak belirli bir dakika ve saate sabitler ve ne zaman ateşleneceğini onaylar.

Zamanlanmış görevleri yönetme (Manage scheduled tasks)

Claude'a doğal dilde görevleri listelemesini veya iptal etmesini söyleyin veya altta yatan araçlara doğrudan başvurun.

hangi zamanlanmış görevlerim var?
deploy kontrol işini iptal et

Arka planda Claude şu araçları kullanır:

Araç Amaç
CronCreate Yeni bir görev zamanlar. 5 alanlı cron ifadesi, çalıştırılacak istem ve tekrarlayıp tekrarlamadığını kabul eder.
CronList Tüm zamanlanmış görevleri kimlikleri, zamanlamaları ve istemleriyle listeler.
CronDelete Bir görevi kimliğine göre iptal eder.

Her zamanlanmış görevin CronDelete'e iletebileceğiniz 8 karakterli bir kimliği vardır. Bir oturum aynı anda en fazla 50 zamanlanmış görev tutabilir.

Zamanlanmış görevler nasıl çalışır (How scheduled tasks run)

Zamanlayıcı, süresi gelen görevler için her saniye kontrol eder ve bunları düşük öncelikle kuyruğa alır. Zamanlanmış bir istem, sizin turlarınız arasında ateşlenir, Claude yanıt verirken değil. Claude bir görev süresi geldiğinde meşgulse, istem mevcut tur bitene kadar bekler.

Tüm zamanlar yerel saat diliminizde yorumlanır. 0 9 * * * gibi bir cron ifadesi, UTC değil, Claude Code'u çalıştırdığınız yerde saat 9 anlamına gelir.

Jitter (Jitter)

Her oturumun API'ye aynı duvar saati anında vurmasını önlemek için zamanlayıcı, ateşleme zamanlarına belirleyici bir ofset ekler:

Ofset, görev kimliğinden türetilir, bu nedenle aynı görev her zaman aynı ofseti alır. Kesin zamanlama önemliyse :00 veya :30 olmayan bir dakika seçin, örneğin 0 9 * * * yerine 3 9 * * * ve tek seferlik jitter uygulanmaz.

Yedi günlük süre sonu (Seven-day expiry)

Tekrarlayan görevler oluşturulduktan 7 gün sonra otomatik olarak sona erer. Görev bir son kez ateşlenir, ardından kendini siler. Bu, unutulmuş bir döngünün ne kadar süre çalışabileceğini sınırlar. Daha uzun süreli tekrarlayan bir görev gerekiyorsa, süresi dolmadan iptal edip yeniden oluşturun veya kalıcı zamanlama için Routines veya Desktop scheduled tasks kullanın.

Cron ifadesi referansı (Cron expression reference)

CronCreate, standart 5 alanlı cron ifadelerini kabul eder: dakika saat gün ay haftanın_günü. Tüm alanlar joker karakterleri (*), tek değerleri (5), adımları (*/15), aralıkları (1-5) ve virgülle ayrılmış listeleri (1,15,30) destekler.

Örnek Anlamı
*/5 * * * * Her 5 dakikada bir
0 * * * * Her saat başı
7 * * * * Her saat başını 7 dakika geçe
0 9 * * * Her gün yerel saatle 9'da
0 9 * * 1-5 Hafta içi her gün yerel saatle 9'da
30 14 15 3 * 15 Mart yerel saatle 14:30'da

Haftanın gününde Pazar için 0 veya 7, Cumartesi için 6 kullanılır. L, W, ? gibi genişletilmiş sözdizimi ve MON veya JAN gibi ad takma adları desteklenmez. Hem gün hem de haftanın günü kısıtlandığında, her iki alandan biri eşleşirse tarih eşleşir. Bu, standart vixie-cron semantiğini izler.

Zamanlanmış görevleri devre dışı bırakma (Disable scheduled tasks)

Ortamınıza CLAUDE_CODE_DISABLE_CRON=1 ayarlayarak zamanlayıcıyı tamamen devre dışı bırakın. Cron araçları ve /loop kullanılamaz hale gelir ve önceden zamanlanmış görevler ateşlenmeyi durdurur. Tüm devre dışı bırakma bayraklarının listesi için Environment variables bölümüne bakın.

Sınırlamalar (Limitations)

Oturum kapsamlı zamanlamanın doğal kısıtlamaları vardır:

Kesintisiz çalışması gereken cron tabanlı otomasyon için:

Örnek kullanım senaryosu

Bir geliştirici, takımının CI hattında sık sık başarısız olan bir dağıtımı izlemek istiyor. Manuel olarak kontrol etmek yerine şu adımları izler:

  1. Oturumu başlatır:

    claude
    
  2. İlk sorgulama döngüsünü oluşturur:

    /loop 5m production dağıtımının durumunu kontrol et. CI geçtiyse "CI OK" yaz. Başarısız olduysa hangi testin kırıldığını ve log snippet'ini göster.
    

    Claude, CronCreate aracını kullanarak */5 * * * * cron ifadesiyle bir görev oluşturur ve 8 karakterli bir kimlik döndürür.

  3. Görevleri listeler:

    hangi zamanlanmış görevlerim var?
    

    Claude, CronList aracını çağırır ve tüm aktif görevleri kimlikleriyle gösterir.

  4. Dağıtım tamamlandığında döngüyü durdurur: Claude bir yinelemede "CI OK" bildirir. Geliştirici Esc tuşuna basarak döngüyü iptal eder.

  5. Tek seferlik hatırlatıcı ayarlar:

    bana 30 dakika sonra release notlarını yazmayı hatırlat
    

    Claude, 30 dakika sonra ateşlenecek tek seferlik bir görev oluşturur.

  6. Gereksiz görevi temizler:

    deploy kontrol işini iptal et
    

    Claude, CronDelete ile ilgili görevi siler.

Bu senaryoda geliştirici, terminali açık tutarak CI durumunu pasif olarak izler, manuel sorgulama yapmaz. Dağıtım tamamlandığında döngüyü durdurur ve hatırlatıcı ile bir sonraki adımı unutmaz.