Exec onayları
Exec onayları, sandbox içinde çalışan bir ajanın gerçek bir ana makinede (gateway veya node)
komut çalıştırmasına izin vermek için kullanılan yardımcı uygulama / düğüm ana makinesi korkuluğudur.
Bunu bir güvenlik ara kilidi gibi düşünün:
komutlara yalnızca ilke + izin listesi + (isteğe bağlı) kullanıcı onayı birlikte kabul ederse izin verilir.
Exec onayları, araç ilkesine ve yükseltilmiş kapılamaya ek olarak uygulanır (elevated, full olarak ayarlanırsa onaylar atlanır).
Geçerli ilke, tools.exec.* ile onay varsayılanlarının daha sıkı olanıdır; bir onay alanı belirtilmezse tools.exec değeri kullanılır.
Ana makine exec işlemi ayrıca o makinedeki yerel onay durumunu da kullanır. Ana makinede yerel
~/.openclaw/exec-approvals.json içindeki ask: "always", oturum veya yapılandırma varsayılanları
ask: "on-miss" istese bile istem göstermeye devam eder.
İstenen ilkeyi, ana makine ilke kaynaklarını ve geçerli sonucu incelemek için
openclaw approvals get, openclaw approvals get --gateway veya
openclaw approvals get --node <id|name|ip> kullanın.
Yerel makine için openclaw exec-policy show, birleştirilmiş aynı görünümü gösterir ve
openclaw exec-policy set|preset, yerel istenen ilkeyi
yerel ana makine onay dosyasıyla tek adımda eşzamanlayabilir. Yerel bir kapsam host=node
istediğinde, openclaw exec-policy show, yerel onay dosyasının geçerli doğruluk kaynağı olduğunu
varsaymak yerine, o kapsamı çalışma zamanında node tarafından yönetiliyor olarak bildirir.
Yardımcı uygulama kullanıcı arayüzü kullanılamıyorsa, istem gerektiren her istek
ask fallback ile çözülür (varsayılan: deny).
Yerel sohbet onay istemcileri ayrıca bekleyen onay mesajında kanala özgü kolaylıklar sunabilir.
Örneğin Matrix, onay isteminde tepki kısayollarını önceden yerleştirebilir
(✅ bir kez izin ver, ❌ reddet ve mevcut olduğunda ♾️ her zaman izin ver)
ve yine de mesaj içinde yedek olarak /approve ... komutlarını bırakabilir.
Nerede uygulanır
Exec onayları, yürütmenin yapıldığı ana makinede yerel olarak uygulanır:- gateway ana makinesi → gateway makinesindeki
openclawişlemi - node ana makinesi → node çalıştırıcısı (macOS yardımcı uygulaması veya arayüzsüz node ana makinesi)
- Gateway tarafından kimliği doğrulanmış çağıranlar, o Gateway için güvenilir operatörlerdir.
- Eşlenmiş node’lar, bu güvenilir operatör yeteneğini node ana makinesine genişletir.
- Exec onayları, yanlışlıkla yürütme riskini azaltır, ancak kullanıcı başına bir kimlik doğrulama sınırı değildir.
- Onaylı node ana makinesi çalıştırmaları, kanonik yürütme bağlamını bağlar: kanonik cwd, tam argv, varsa env bağlaması ve uygulanabiliyorsa sabitlenmiş yürütülebilir dosya yolu.
- Kabuk script’leri ve yorumlayıcı/çalışma zamanı dosyalarının doğrudan çağrımları için OpenClaw ayrıca tek bir somut yerel dosya işlenenini bağlamaya çalışır. Bu bağlı dosya, onaydan sonra ancak yürütmeden önce değişirse, kaymış içerik yürütülmek yerine çalıştırma reddedilir.
- Bu dosya bağlama kasıtlı olarak en iyi çabadır; her yorumlayıcı/çalışma zamanı yükleyici yolunun tam anlamsal modeli değildir. Onay modu bağlamak için tam olarak bir somut yerel dosya belirleyemezse, tam kapsama varmış gibi davranmak yerine onay destekli bir çalıştırma üretmeyi reddeder.
- node ana makinesi hizmeti,
system.runisteğini yerel IPC üzerinden macOS uygulamasına iletir. - macOS uygulaması, onayları uygular + komutu kullanıcı arayüzü bağlamında yürütür.
Ayarlar ve depolama
Onaylar, yürütmenin yapıldığı ana makinede yerel bir JSON dosyasında tutulur:~/.openclaw/exec-approvals.json
Örnek şema:
Onaysız “YOLO” modu
Ana makine exec işleminin onay istemleri olmadan çalışmasını istiyorsanız, her iki ilke katmanını da açmanız gerekir:- OpenClaw yapılandırmasında istenen exec ilkesi (
tools.exec.*) ~/.openclaw/exec-approvals.jsoniçindeki ana makineye yerel onay ilkesi
tools.exec.security:gateway/nodeüzerindefulltools.exec.ask:off- ana makine
askFallback:full
tools.exec.host=auto, exec’in nerede çalışacağını seçer: varsa sandbox, yoksa gateway.- YOLO, ana makine exec işleminin nasıl onaylanacağını seçer:
security=fullartıask=off. - YOLO modunda OpenClaw, yapılandırılmış ana makine exec ilkesinin üzerine ayrı bir sezgisel komut-gizleme onay kapısı eklemez.
auto, gateway yönlendirmesini sandbox içindeki bir oturumdan serbest bir geçersiz kılma yapmaz.host=nodeiçin çağrı başına bir istekautoiçinden kabul edilir vehost=gatewayyalnızca etkin bir sandbox çalışma zamanı yoksaautoiçinden kabul edilir. Kararlı bir auto olmayan varsayılan istiyorsanız,tools.exec.hostayarlayın veya/exec host=...ifadesini açıkça kullanın.
allowlist / on-miss
veya deny durumuna geri sıkılaştırın.
Kalıcı gateway ana makinesi “asla istem gösterme” kurulumu:
- yerel
tools.exec.host/security/ask - yerel
~/.openclaw/exec-approvals.jsonvarsayılanları
openclaw approvals set --gateway veya
openclaw approvals set --node <id|name|ip> kullanmaya devam edin.
Bir node ana makinesi için aynı onay dosyasını bunun yerine o node üzerinde uygulayın:
openclaw exec-policy, node onaylarını eşzamanlamazopenclaw exec-policy set --host nodereddedilir- node exec onayları çalışma zamanında node’dan alınır, bu nedenle node hedefli güncellemeler için
openclaw approvals --node ...kullanılmalıdır
/exec security=full ask=offyalnızca geçerli oturumu değiştirir./elevated full, bu oturum için exec onaylarını da atlayan bir acil durum kısayoludur.
İlke düğmeleri
Güvenlik (exec.security)
- deny: tüm ana makine exec isteklerini engeller.
- allowlist: yalnızca izin listesine alınmış komutlara izin verir.
- full: her şeye izin verir (
elevatedile eşdeğer).
Sor (exec.ask)
- off: asla istem gösterme.
- on-miss: yalnızca izin listesi eşleşmediğinde istem göster.
- always: her komutta istem göster.
allow-alwayskalıcı güveni, geçerli ask modualwaysolduğunda istemleri bastırmaz
Ask fallback (askFallback)
Bir istem gerekliyse ancak hiçbir kullanıcı arayüzüne ulaşılamıyorsa, fallback şuna karar verir:
- deny: engelle.
- allowlist: yalnızca izin listesi eşleşiyorsa izin ver.
- full: izin ver.
Satır içi yorumlayıcı eval güçlendirmesi (tools.exec.strictInlineEval)
tools.exec.strictInlineEval=true olduğunda OpenClaw, yorumlayıcı ikilisinin kendisi izin listesinde olsa bile satır içi kod değerlendirme biçimlerini yalnızca onaylı olarak ele alır.
Örnekler:
python -cnode -e,node --eval,node -pruby -eperl -e,perl -Ephp -rlua -eosascript -e
- bu komutlar yine de açık onay gerektirir;
allow-always, bunlar için yeni izin listesi girdilerini otomatik olarak kalıcı hale getirmez.
İzin listesi (ajan başına)
İzin listeleri ajan başınadır. Birden fazla ajan varsa, macOS uygulamasında düzenlediğiniz ajanı değiştirin. Kalıplar büyük/küçük harfe duyarsız glob eşleşmeleridir. Kalıplar ikili dosya yollarına çözülmelidir (yalnızca basename içeren girdiler yok sayılır). Eskiagents.default girdileri yükleme sırasında agents.main içine taşınır.
echo ok && pwd gibi shell zincirleri yine de her üst düzey segmentin izin listesi kurallarını karşılamasını gerektirir.
Örnekler:
~/Projects/**/bin/peekaboo~/.local/bin/*/opt/homebrew/bin/rg
- id kullanıcı arayüzü kimliği için kararlı UUID (isteğe bağlı)
- son kullanım zaman damgası
- son kullanılan komut
- son çözümlenen yol
Skill CLI’lerini otomatik izinli yap
Auto-allow skill CLIs etkin olduğunda, bilinen Skills tarafından başvurulan yürütülebilir dosyalar node’larda (macOS node veya arayüzsüz node ana makinesi) izin listesine alınmış kabul edilir. Bu, skill bin listesini almak için Gateway RPC üzerindenskills.bins kullanır. Sıkı el ile izin listeleri istiyorsanız bunu devre dışı bırakın.
Önemli güven notları:
- Bu, el ile yol izin listesi girdilerinden ayrı bir örtük kolaylık izin listesidir.
- Bunun amacı, Gateway ile node’un aynı güven sınırı içinde olduğu güvenilir operatör ortamlarıdır.
- Sıkı açık güven gerekiyorsa,
autoAllowSkills: falseolarak bırakın ve yalnızca el ile yol izin listesi girdilerini kullanın.
Güvenli ikili dosyalar (yalnızca stdin)
tools.exec.safeBins, açık izin listesi girdileri olmadan stdin-only
ikili dosyaların (örneğin cut) allowlist modunda çalışabileceği küçük bir liste tanımlar.
Güvenli ikili dosyalar konumsal dosya argümanlarını ve yol benzeri belirteçleri reddeder; böylece yalnızca gelen akış üzerinde çalışabilirler.
Bunu genel bir güven listesi değil, akış filtreleri için dar bir hızlı yol olarak değerlendirin.
Yorumlayıcı veya çalışma zamanı ikili dosyalarını (python3, node, ruby, bash, sh, zsh gibi)
safeBins içine eklemeyin.
Bir komut tasarım gereği kod değerlendirebiliyor, alt komut yürütebiliyor veya dosya okuyabiliyorsa,
açık izin listesi girdilerini tercih edin ve onay istemlerini etkin tutun.
Özel güvenli ikili dosyalar, tools.exec.safeBinProfiles.<bin> içinde açık bir profil tanımlamalıdır.
Doğrulama yalnızca argv biçiminden deterministik olarak yapılır (ana makine dosya sisteminde varlık denetimi yapılmaz), bu da
izin/vermeme farklarından dosya varlığı oracle davranışını önler.
Varsayılan güvenli ikili dosyalar için dosya odaklı seçenekler reddedilir (sort -o, sort --output,
sort --files0-from, sort --compress-program, sort --random-source,
sort --temporary-directory/-T, wc --files0-from, jq -f/--from-file,
grep -f/--file gibi).
Güvenli ikili dosyalar ayrıca stdin-only
davranışını bozan seçenekler için ikili dosya başına açık bayrak ilkesi uygular (sort -o/--output/--compress-program ve grep özyinelemeli bayrakları gibi).
Uzun seçenekler güvenli ikili dosya modunda başarısızlıkta kapalı şekilde doğrulanır: bilinmeyen bayraklar ve belirsiz
kısaltmalar reddedilir.
Güvenli ikili dosya profiline göre reddedilen bayraklar:
grep:--dereference-recursive,--directories,--exclude-from,--file,--recursive,-R,-d,-f,-rjq:--argfile,--from-file,--library-path,--rawfile,--slurpfile,-L,-fsort:--compress-program,--files0-from,--output,--random-source,--temporary-directory,-T,-owc:--files0-from
$VARS genişletmesi yoktur); böylece * veya $HOME/... gibi kalıplar
dosya okumalarını kaçırmak için kullanılamaz.
Güvenli ikili dosyalar ayrıca güvenilir ikili dosya dizinlerinden çözülmelidir (sistem varsayılanları artı isteğe bağlı
tools.exec.safeBinTrustedDirs).
PATH girdilerine hiçbir zaman otomatik olarak güvenilmez.
Varsayılan güvenilir safe-bin dizinleri kasıtlı olarak asgari düzeydedir: /bin, /usr/bin.
Güvenli ikili dosyanız paket yöneticisi/kullanıcı yollarında bulunuyorsa (örneğin
/opt/homebrew/bin, /usr/local/bin, /opt/local/bin, /snap/bin), bunları açıkça
tools.exec.safeBinTrustedDirs içine ekleyin.
Kabuk zincirleme ve yönlendirmelere allowlist modunda otomatik olarak izin verilmez.
Kabuk zincirlemeye (&&, ||, ;), her üst düzey segment izin listesi koşullarını sağlıyorsa
(güvenli ikili dosyalar veya skill otomatik izin dahil) izin verilir. Yönlendirmeler allowlist modunda desteklenmez.
Komut ikamesi ($() / ters tırnaklar), çift tırnak içinde olsa bile allowlist ayrıştırması sırasında reddedilir;
düz $() metnine ihtiyacınız varsa tek tırnak kullanın.
macOS yardımcı uygulama onaylarında, kabuk denetim veya genişletme sözdizimi
(&&, ||, ;, |, `, $, <, >, (, )) içeren ham shell metni,
kabuk ikili dosyasının kendisi izin listesinde değilse allowlist kaçırması olarak değerlendirilir.
Kabuk sarmalayıcıları için (bash|sh|zsh ... -c/-lc), istek kapsamındaki env geçersiz kılmaları
küçük ve açık bir izin listesine indirgenir (TERM, LANG, LC_*, COLORTERM, NO_COLOR, FORCE_COLOR).
allowlist modunda allow-always kararları için bilinen dispatch sarmalayıcıları
(env, nice, nohup, stdbuf, timeout) sarmalayıcı
yolları yerine iç yürütülebilir dosya yollarını kalıcılaştırır. Kabuk çoklayıcıları (busybox, toybox) da kabuk applet’leri (sh, ash,
vb.) için açılarak çoklayıcı ikili dosyaları yerine iç yürütülebilir dosyalar kalıcılaştırılır. Bir sarmalayıcı veya
çoklayıcı güvenli şekilde açılamıyorsa, otomatik olarak hiçbir izin listesi girdisi kalıcılaştırılmaz.
python3 veya node gibi yorumlayıcıları izin listesine alırsanız, satır içi eval’in hâlâ açık onay gerektirmesi için tools.exec.strictInlineEval=true tercih edin. Sıkı modda, allow-always yine de zararsız yorumlayıcı/script çağrılarını kalıcılaştırabilir, ancak satır içi eval taşıyıcıları otomatik olarak kalıcılaştırılmaz.
Varsayılan güvenli ikili dosyalar:
cut, uniq, head, tail, tr, wc
grep ve sort, varsayılan listede değildir. Açıkça etkinleştirirseniz,
stdin dışı iş akışları için açık izin listesi girdileri kullanmaya devam edin.
grep için safe-bin modunda, deseni -e/--regexp ile sağlayın; konumsal desen biçimi
reddedilir, böylece dosya işlenenleri belirsiz konumsal argümanlar olarak kaçırılamaz.
Güvenli ikili dosyalar ile allowlist karşılaştırması
| Konu | tools.exec.safeBins | Allowlist (exec-approvals.json) |
|---|---|---|
| Amaç | Dar stdin filtrelerine otomatik izin vermek | Belirli yürütülebilir dosyalara açıkça güvenmek |
| Eşleşme türü | Yürütülebilir dosya adı + safe-bin argv ilkesi | Çözümlenmiş yürütülebilir dosya yolu glob kalıbı |
| Argüman kapsamı | Safe-bin profili ve düz belirteç kurallarıyla kısıtlanır | Yalnızca yol eşleşmesi; diğer açılardan argümanlar sizin sorumluluğunuzdadır |
| Tipik örnekler | head, tail, tr, wc | jq, python3, node, ffmpeg, özel CLI’ler |
| En iyi kullanım | İşlem hatlarında düşük riskli metin dönüşümleri | Daha geniş davranış veya yan etkilere sahip tüm araçlar |
safeBins, yapılandırmadan gelir (tools.exec.safeBinsveya ajan başınaagents.list[].tools.exec.safeBins).safeBinTrustedDirs, yapılandırmadan gelir (tools.exec.safeBinTrustedDirsveya ajan başınaagents.list[].tools.exec.safeBinTrustedDirs).safeBinProfiles, yapılandırmadan gelir (tools.exec.safeBinProfilesveya ajan başınaagents.list[].tools.exec.safeBinProfiles). Ajan başına profil anahtarları genel anahtarları geçersiz kılar.- allowlist girdileri, ana makineye yerel
~/.openclaw/exec-approvals.jsoniçindeagents.<id>.allowlistaltında tutulur (veya Control UI /openclaw approvals allowlist ...üzerinden). openclaw security audit, yorumlayıcı/çalışma zamanı ikili dosyaları açık profiller olmadansafeBinsiçinde göründüğündetools.exec.safe_bins_interpreter_unprofileduyarısı verir.openclaw doctor --fix, eksik özelsafeBinProfiles.<bin>girdilerini{}olarak iskeletleyebilir (sonrasında gözden geçirip sıkılaştırın). Yorumlayıcı/çalışma zamanı ikili dosyaları otomatik olarak iskeletlenmez.
jqyu açıkça safeBins içine dahil ederseniz, OpenClaw safe-bin
modunda yine de env yerleşik işlevini reddeder; böylece jq -n env, açık bir allowlist yolu
veya onay istemi olmadan ana makine işlem ortamını dökemez.
Control UI düzenleme
Varsayılanları, ajan başına geçersiz kılmaları ve allowlist’leri düzenlemek için Control UI → Nodes → Exec approvals kartını kullanın. Bir kapsam seçin (Varsayılanlar veya bir ajan), ilkeyi ayarlayın, allowlist kalıplarını ekleyin/kaldırın, ardından Kaydet’e tıklayın. Kullanıcı arayüzü, listeyi düzenli tutabilmeniz için kalıp başına son kullanım meta verilerini gösterir. Hedef seçici Gateway’i (yerel onaylar) veya bir Node’u seçer. Node’larsystem.execApprovals.get/set desteğini bildirmelidir (macOS uygulaması veya arayüzsüz node ana makinesi).
Bir node henüz exec approvals desteğini bildirmiyorsa, yerel
~/.openclaw/exec-approvals.json dosyasını doğrudan düzenleyin.
CLI: openclaw approvals, gateway veya node düzenlemeyi destekler (bkz. Approvals CLI).
Onay akışı
İstem gerektiğinde gateway, operatör istemcilerineexec.approval.requested yayını yapar.
Control UI ve macOS uygulaması bunu exec.approval.resolve ile çözer, ardından gateway
onaylanan isteği node ana makinesine iletir.
host=node için onay istekleri kanonik bir systemRunPlan payload’ı içerir. Gateway,
onaylanmış system.run
isteklerini iletirken bu planı yetkili komut/cwd/oturum bağlamı olarak kullanır.
Bu, eşzamansız onay gecikmesi açısından önemlidir:
- node exec yolu başta tek bir kanonik plan hazırlar
- onay kaydı bu planı ve bağlama meta verilerini depolar
- onaylandıktan sonra son iletilen
system.runçağrısı daha sonra çağıran tarafından yapılan düzenlemelere güvenmek yerine depolanan planı yeniden kullanır - çağıran, onay isteği oluşturulduktan sonra
command,rawCommand,cwd,agentIdveyasessionKeydeğerlerini değiştirirse, gateway iletilen çalıştırmayı onay uyuşmazlığı olarak reddeder
Yorumlayıcı/çalışma zamanı komutları
Onay destekli yorumlayıcı/çalışma zamanı çalıştırmaları kasıtlı olarak tutucudur:- Tam argv/cwd/env bağlamı her zaman bağlanır.
- Doğrudan kabuk script’i ve doğrudan çalışma zamanı dosyası biçimleri, tek bir somut yerel dosya anlık görüntüsüne en iyi çabayla bağlanır.
- Hâlâ tek bir doğrudan yerel dosyaya çözümlenen yaygın paket yöneticisi sarmalayıcı biçimleri (örneğin
pnpm exec,pnpm node,npm exec,npx), bağlamadan önce açılır. - OpenClaw, bir yorumlayıcı/çalışma zamanı komutu için tam olarak bir somut yerel dosya belirleyemezse (örneğin paket script’leri, eval biçimleri, çalışma zamanına özgü yükleyici zincirleri veya belirsiz çoklu dosya biçimleri), onay destekli yürütme, kapsadığına dair anlamsal kapsam iddiasında bulunmak yerine reddedilir.
- Bu iş akışları için sandbox, ayrı bir ana makine sınırı veya operatörün daha geniş çalışma zamanı anlambilimini kabul ettiği açık güvenilir allowlist/full iş akışını tercih edin.
Exec finished / Exec denied) ilişkilendirmek için bu kimliği kullanın. Zaman aşımından önce karar gelmezse,
istek bir onay zaman aşımı olarak değerlendirilir ve ret nedeni olarak gösterilir.
Takip teslim davranışı
Onaylı eşzamansız exec tamamlandıktan sonra OpenClaw aynı oturuma bir takipagent turu gönderir.
- Geçerli bir harici teslim hedefi varsa (teslim edilebilir kanal artı hedef
to), takip teslimi o kanalı kullanır. - Harici hedef olmayan yalnızca webchat veya iç oturum akışlarında, takip teslimi yalnızca oturum içinde kalır (
deliver: false). - Bir çağıran, çözümlenebilir harici kanal olmadan açıkça katı harici teslim isterse, istek
INVALID_REQUESTile başarısız olur. bestEffortDeliveretkinse ve hiçbir harici kanal çözümlenemiyorsa, teslim başarısız olmak yerine yalnızca oturum içi teslimata düşürülür.
- komut + argümanlar
- cwd
- ajan kimliği
- çözümlenmiş yürütülebilir dosya yolu
- ana makine + ilke meta verileri
- Bir kez izin ver → şimdi çalıştır
- Her zaman izin ver → allowlist’e ekle + çalıştır
- Reddet → engelle
Sohbet kanallarına onay yönlendirme
Exec onay istemlerini herhangi bir sohbet kanalına (plugin kanalları dahil) yönlendirebilir ve bunları/approve ile onaylayabilirsiniz. Bu, normal giden teslim işlem hattını kullanır.
Yapılandırma:
OC_I18N_900006
Sohbette yanıt:
OC_I18N_900007
/approve komutu hem exec onaylarını hem de plugin onaylarını işler. Kimlik bekleyen bir exec onayıyla eşleşmezse, otomatik olarak plugin onaylarını da kontrol eder.
Plugin onayı yönlendirme
Plugin onayı yönlendirme, exec onaylarıyla aynı teslim işlem hattını kullanır ancak kendi bağımsız yapılandırmasınaapprovals.plugin altında sahiptir. Birini etkinleştirmek veya devre dışı bırakmak diğerini etkilemez.
OC_I18N_900008
Yapılandırma şekli approvals.exec ile aynıdır: enabled, mode, agentFilter,
sessionFilter ve targets aynı şekilde çalışır.
Paylaşılan etkileşimli yanıtları destekleyen kanallar, hem exec hem de
plugin onayları için aynı onay düğmelerini gösterir. Paylaşılan etkileşimli kullanıcı arayüzü olmayan kanallar
düz metne ve /approve yönergelerine geri düşer.
Her kanalda aynı sohbetten onaylar
Bir exec veya plugin onay isteği teslim edilebilir bir sohbet yüzeyinden geldiğinde, artık aynı sohbet bunu varsayılan olarak/approve ile onaylayabilir. Bu, mevcut Web UI ve terminal UI akışlarına ek olarak
Slack, Matrix ve Microsoft Teams gibi kanallar için de geçerlidir.
Bu paylaşılan metin komutu yolu, o konuşma için normal kanal kimlik doğrulama modelini kullanır. Kaynak sohbet zaten komut gönderebiliyor ve yanıt alabiliyorsa, onay isteklerinin beklemede kalması için artık
ayrı bir yerel teslim bağdaştırıcısına gerek yoktur.
Discord ve Telegram da aynı sohbetten /approve desteği sunar, ancak yerel onay teslimi devre dışı olsa bile
bu kanallar yetkilendirme için yine de çözümlenmiş approver listelerini kullanır.
Gateway’i doğrudan çağıran Telegram ve diğer yerel onay istemcileri için,
bu fallback kasıtlı olarak “approval not found” hatalarıyla sınırlıdır. Gerçek bir
exec onayı reddi/hatası sessizce plugin onayı olarak yeniden denenmez.
Yerel onay teslimi
Bazı kanallar ayrıca yerel onay istemcileri olarak da davranabilir. Yerel istemciler, paylaşılan aynı sohbetten/approve
akışına ek olarak approver DM’leri, kaynak sohbet fanout’unu ve kanala özgü etkileşimli onay kullanıcı deneyimini ekler.
Yerel onay kartları/düğmeleri kullanılabildiğinde, bu yerel kullanıcı arayüzü ajana yönelik
birincil yoldur. Araç sonucu sohbet onaylarının kullanılamadığını veya
yalnızca manuel onayın kaldığını söylemedikçe ajan ayrıca yinelenen düz bir sohbet
/approve komutunu da yansıtmamalıdır.
Genel model:
- exec onayının gerekip gerekmediğine ana makine exec ilkesi yine karar verir
approvals.exec, onay istemlerinin diğer sohbet hedeflerine yönlendirilmesini kontrol ederchannels.<channel>.execApprovals, o kanalın yerel onay istemcisi olarak davranıp davranmayacağını kontrol eder
- kanal yerel onay teslimini destekliyorsa
- approver’lar açık
execApprovals.approversveya o kanalın belgelenmiş fallback kaynaklarından çözümlenebiliyorsa channels.<channel>.execApprovals.enabledayarlanmamışsa veya"auto"ise
enabled: false ayarlayın. Approver’lar çözümlendiğinde
zorla açmak için enabled: true ayarlayın. Genel kaynak sohbet teslimi,
channels.<channel>.execApprovals.target üzerinden açık kalır.
SSS: Sohbet onayları için neden iki exec onayı yapılandırması var?
- Discord:
channels.discord.execApprovals.* - Slack:
channels.slack.execApprovals.* - Telegram:
channels.telegram.execApprovals.*
/approve akışı ve paylaşılan onay düğmelerinin üzerine DM yönlendirmesi ve isteğe bağlı kanal fanout ekler.
Paylaşılan davranış:
- Slack, Matrix, Microsoft Teams ve benzeri teslim edilebilir sohbetler, aynı sohbetten
/approveiçin normal kanal kimlik doğrulama modelini kullanır - bir yerel onay istemcisi otomatik olarak etkinleştiğinde, varsayılan yerel teslim hedefi approver DM’leridir
- Discord ve Telegram için yalnızca çözümlenmiş approver’lar onaylayabilir veya reddedebilir
- Discord approver’ları açık olabilir (
execApprovals.approvers) veyacommands.ownerAllowFromüzerinden çıkarılabilir - Telegram approver’ları açık olabilir (
execApprovals.approvers) veya mevcut owner yapılandırmasından çıkarılabilir (allowFrom, ayrıca desteklenen yerlerde doğrudan mesajdefaultTo) - Slack approver’ları açık olabilir (
execApprovals.approvers) veyacommands.ownerAllowFromüzerinden çıkarılabilir - Slack yerel düğmeleri, onay kimliği türünü korur; böylece
plugin:kimlikleri ikinci bir Slack’e özgü fallback katmanı olmadan plugin onaylarını çözebilir - Matrix yerel DM/kanal yönlendirmesi ve tepki kısayolları hem exec hem de plugin onaylarını işler;
plugin yetkilendirmesi yine
channels.matrix.dm.allowFromüzerinden gelir - istekte bulunan kişinin approver olması gerekmez
- kaynak sohbet, zaten komutları ve yanıtları destekliyorsa
/approveile doğrudan onaylayabilir - yerel Discord onay düğmeleri, onay kimliği türüne göre yönlendirir:
plugin:kimlikleri doğrudan plugin onaylarına gider, diğer her şey exec onaylarına gider - yerel Telegram onay düğmeleri,
/approveile aynı sınırlı exec-to-plugin fallback davranışını izler - yerel
target, kaynak sohbet teslimini etkinleştirdiğinde onay istemleri komut metnini içerir - bekleyen exec onaylarının varsayılan süresi 30 dakika sonra dolar
- hiçbir operatör kullanıcı arayüzü veya yapılandırılmış onay istemcisi isteği kabul edemiyorsa, istem
askFallbackdavranışına geri düşer
target: "dm"). Onay istemlerinin
kaynak Telegram sohbetinde/konusunda da görünmesini istiyorsanız bunu channel veya both olarak değiştirebilirsiniz. Telegram forum
konuları için OpenClaw, onay istemi ve onay sonrası takip için konuyu korur.
Bkz.:
macOS IPC akışı
OC_I18N_900009 Güvenlik notları:- Unix socket modu
0600, tokenexec-approvals.jsoniçinde depolanır. - Aynı UID eş denetimi.
- Sınama/yanıt (nonce + HMAC token + istek hash’i) + kısa TTL.
Sistem olayları
Exec yaşam döngüsü sistem mesajları olarak yüzeye çıkarılır:Exec running(yalnızca komut çalışma bildirimi eşiğini aşarsa)Exec finishedExec denied
runId olarak onay kimliğini yeniden kullanır.
Reddedilen onay davranışı
Eşzamansız bir exec onayı reddedildiğinde OpenClaw, ajanın oturumda aynı komutun daha önceki herhangi bir çalıştırmasından çıktı yeniden kullanmasını engeller. Ret nedeni, komut çıktısının mevcut olmadığına dair açık yönlendirmeyle birlikte iletilir; bu da ajanın yeni çıktı varmış gibi davranmasını veya daha önce başarılı olmuş bir çalıştırmadan kalan sonuçlarla reddedilen komutu yinelemesini durdurur.Etkiler
- full güçlüdür; mümkün olduğunda allowlist’leri tercih edin.
- ask, hızlı onaylara izin verirken sizi de sürecin içinde tutar.
- Ajan başına allowlist’ler, bir ajanın onaylarının diğerlerine sızmasını önler.
- Onaylar yalnızca yetkili göndericilerden gelen ana makine exec istekleri için uygulanır. Yetkisiz göndericiler
/execveremez. /exec security=full, yetkili operatörler için oturum düzeyinde bir kolaylıktır ve tasarım gereği onayları atlar. Ana makine exec işlemini kesin olarak engellemek için onay güvenliğinidenyolarak ayarlayın veya araç ilkesi üzerindenexecaracını reddedin.
İlgili
- Exec — kabuk komutu yürütme aracı
- Sandboxing — sandbox modları ve çalışma alanı erişimi
- Security — güvenlik modeli ve güçlendirme
- Sandbox vs Tool Policy vs Elevated — her biri ne zaman kullanılmalı