Uruchamiaj polecenia powłoki w przestrzeni roboczej.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
exec to mutująca powierzchnia powłoki: polecenia mogą tworzyć, edytować lub usuwać pliki wszędzie tam, gdzie pozwala na to wybrany host albo system plików piaskownicy. Wyłączenie narzędzi systemu plików OpenClaw, takich jak write, edit czy apply_patch, nie sprawia, że exec staje się tylko do odczytu.
Obsługuje wykonywanie na pierwszym planie i w tle przez process. Jeśli process jest niedozwolone, exec działa synchronicznie i ignoruje yieldMs/background.
Sesje w tle są ograniczone do danego agenta; process widzi tylko sesje tego samego agenta.
Parametry
Polecenie powłoki do uruchomienia.
Katalog roboczy dla polecenia.
Nadpisania środowiska w postaci klucz/wartość scalane z dziedziczonym środowiskiem.
Automatycznie przenieś polecenie do tła po tym opóźnieniu (ms).
Natychmiast przenieś polecenie do tła zamiast czekać na
yieldMs.Nadpisz skonfigurowany limit czasu exec dla tego wywołania. Ustaw
timeout: 0 tylko wtedy, gdy polecenie ma działać bez limitu czasu procesu exec.Uruchom w pseudoterminalu, gdy jest dostępny. Używaj dla CLI wymagających TTY, agentów kodujących i terminalowych interfejsów użytkownika.
Miejsce wykonania.
auto jest rozwiązywane do sandbox, gdy aktywne jest środowisko wykonawcze piaskownicy, a w przeciwnym razie do gateway.Ignorowane dla zwykłych wywołań narzędzi. Zabezpieczenia
gateway / node są kontrolowane przez
tools.exec.security i ~/.openclaw/exec-approvals.json; tryb podwyższony może
wymusić security=full tylko wtedy, gdy operator jawnie przyzna podwyższony dostęp.Zachowanie monitu o zatwierdzenie dla wykonywania
gateway / node.Identyfikator/nazwa Node, gdy
host=node.Zażądaj trybu podwyższonego — wyjścia z piaskownicy na skonfigurowaną ścieżkę hosta.
security=full jest wymuszane tylko wtedy, gdy tryb podwyższony rozwiązuje się do full.hostdomyślnie ma wartośćauto: piaskownica, gdy środowisko wykonawcze piaskownicy jest aktywne dla sesji, w przeciwnym razie Gateway.hostakceptuje tylkoauto,sandbox,gatewaylubnode. Nie jest selektorem nazwy hosta; wartości podobne do nazw hostów są odrzucane przed uruchomieniem polecenia.autoto domyślna strategia routingu, a nie symbol wieloznaczny.host=nodedla pojedynczego wywołania jest dozwolone zauto;host=gatewaydla pojedynczego wywołania jest dozwolone tylko wtedy, gdy żadne środowisko wykonawcze piaskownicy nie jest aktywne.- Bez dodatkowej konfiguracji
host=autonadal „po prostu działa”: brak piaskownicy oznacza rozwiązanie dogateway; aktywna piaskownica oznacza pozostanie w piaskownicy. elevatedwychodzi z piaskownicy na skonfigurowaną ścieżkę hosta: domyślniegatewayalbonode, gdytools.exec.host=node(lub domyślna wartość sesji tohost=node). Jest dostępne tylko wtedy, gdy podwyższony dostęp jest włączony dla bieżącej sesji/dostawcy.- Zatwierdzenia
gateway/nodesą kontrolowane przez~/.openclaw/exec-approvals.json. nodewymaga sparowanego Node (aplikacji towarzyszącej lub bezgłowego hosta Node).- Jeśli dostępnych jest wiele Node, ustaw
exec.nodelubtools.exec.node, aby wybrać jeden. exec host=nodeto jedyna ścieżka wykonywania powłoki dla Node; starszy wrappernodes.runzostał usunięty.timeoutdotyczy wykonywania na pierwszym planie, w tle,yieldMs, Gateway, piaskownicy i Nodesystem.run. Jeśli zostanie pominięte, OpenClaw używatools.exec.timeoutSec; jawnetimeout: 0wyłącza limit czasu procesu exec dla tego wywołania.- Na hostach innych niż Windows exec używa
SHELL, gdy jest ustawione; jeśliSHELLtofish, preferujebash(lubsh) zPATH, aby uniknąć skryptów niezgodnych z fish, a następnie wraca doSHELL, jeśli żadne z nich nie istnieje. - Na hostach Windows exec preferuje wykrywanie PowerShell 7 (
pwsh) (Program Files, ProgramW6432, następnie PATH), a potem wraca do Windows PowerShell 5.1. - Wykonywanie na hoście (
gateway/node) odrzucaenv.PATHi nadpisania loadera (LD_*/DYLD_*), aby zapobiec przejęciu binariów lub wstrzykniętemu kodowi. - OpenClaw ustawia
OPENCLAW_SHELL=execw środowisku uruchamianego polecenia (w tym wykonywania PTY i piaskownicy), aby reguły powłoki/profilu mogły wykryć kontekst narzędzia exec. openclaw channels loginjest blokowane wexec, ponieważ jest interaktywnym przepływem uwierzytelniania kanału; uruchom je w terminalu na hoście Gateway albo użyj natywnego dla kanału narzędzia logowania z czatu, jeśli istnieje.- Ważne: piaskownica jest domyślnie wyłączona. Jeśli piaskownica jest wyłączona, niejawne
host=autorozwiązuje się dogateway. Jawnehost=sandboxnadal kończy się zamkniętym błędem, zamiast po cichu uruchamiać się na hoście Gateway. Włącz piaskownicę albo użyjhost=gatewayz zatwierdzeniami. - Wstępne kontrole skryptów (dla typowych błędów składni powłoki Python/Node) sprawdzają tylko pliki wewnątrz
efektywnej granicy
workdir. Jeśli ścieżka skryptu rozwiązuje się pozaworkdir, kontrola wstępna jest pomijana dla tego pliku. - W przypadku długotrwałej pracy, która zaczyna się teraz, uruchom ją raz i polegaj na automatycznym
wznowieniu po zakończeniu, gdy jest włączone i polecenie emituje wyjście lub kończy się niepowodzeniem.
Używaj
processdo logów, statusu, wejścia lub interwencji; nie emuluj harmonogramowania pętlami sleep, pętlami timeout ani wielokrotnym odpytywaniem. - W przypadku pracy, która ma wydarzyć się później lub zgodnie z harmonogramem, użyj cron zamiast
wzorców sleep/delay w
exec.
Konfiguracja
tools.exec.notifyOnExit(domyślnie: true): gdy ma wartość true, przeniesione do tła sesje exec dodają zdarzenie systemowe do kolejki i żądają Heartbeat przy wyjściu.tools.exec.approvalRunningNoticeMs(domyślnie: 10000): wyemituj pojedyncze powiadomienie „uruchomione”, gdy exec chronione zatwierdzeniem działa dłużej niż ta wartość (0 wyłącza).tools.exec.timeoutSec(domyślnie: 1800): domyślny limit czasu exec dla pojedynczego polecenia w sekundach.timeoutdla pojedynczego wywołania go nadpisuje;timeout: 0dla pojedynczego wywołania wyłącza limit czasu procesu exec.tools.exec.host(domyślnie:auto; rozwiązuje się dosandbox, gdy środowisko wykonawcze piaskownicy jest aktywne, w przeciwnym razie dogateway)tools.exec.security(domyślnie:denydla piaskownicy,fulldla Gateway + Node, gdy nieustawione)tools.exec.ask(domyślnie:off)- Host exec bez zatwierdzeń jest domyślny dla Gateway + Node. Jeśli chcesz zachowanie z zatwierdzeniami/listą dozwolonych, zaostrz zarówno
tools.exec.*, jak i hostowe~/.openclaw/exec-approvals.json; zobacz Zatwierdzenia exec. - YOLO wynika z domyślnych zasad hosta (
security=full,ask=off), a nie zhost=auto. Jeśli chcesz wymusić routing Gateway lub Node, ustawtools.exec.hostalbo użyj/exec host=.... - W trybie
security=fullplusask=offhost exec bezpośrednio przestrzega skonfigurowanych zasad; nie ma dodatkowego heurystycznego prefiltra zaciemniania poleceń ani warstwy odrzucania wstępnej kontroli skryptów. tools.exec.node(domyślnie: nieustawione)tools.exec.strictInlineEval(domyślnie: false): gdy ma wartość true, formularze inline eval interpreterów, takie jakpython -c,node -e,ruby -e,perl -e,php -r,lua -eiosascript -e, zawsze wymagają jawnego zatwierdzenia.allow-alwaysmoże nadal utrwalać nieszkodliwe wywołania interpreterów/skryptów, ale formularze inline-eval nadal pytają za każdym razem.tools.exec.commandHighlighting(domyślnie: false): gdy ma wartość true, monity o zatwierdzenie mogą podświetlać wyprowadzone przez parser zakresy poleceń w tekście polecenia. Ustaw natrueglobalnie lub dla pojedynczego agenta, aby włączyć podświetlanie tekstu polecenia bez zmieniania zasad zatwierdzania exec.tools.exec.pathPrepend: lista katalogów do dodania na początkuPATHdla uruchomień exec (tylko Gateway + piaskownica).tools.exec.safeBins: bezpieczne binaria tylko dla stdin, które mogą działać bez jawnych wpisów na liście dozwolonych. Szczegóły zachowania znajdziesz w Bezpieczne binaria.tools.exec.safeBinTrustedDirs: dodatkowe jawne katalogi zaufane dla kontroli ścieżeksafeBins. WpisyPATHnigdy nie są automatycznie zaufane. Wbudowane wartości domyślne to/bini/usr/bin.tools.exec.safeBinProfiles: opcjonalne niestandardowe zasady argv dla każdego bezpiecznego binarium (minPositional,maxPositional,allowedValueFlags,deniedFlags).
Obsługa PATH
host=gateway: scalaPATHtwojej powłoki logowania ze środowiskiem exec. Nadpisaniaenv.PATHsą odrzucane dla wykonywania na hoście. Sam daemon nadal działa z minimalnymPATH:- macOS:
/opt/homebrew/bin,/usr/local/bin,/usr/bin,/bin - Linux:
/usr/local/bin,/usr/bin,/bin
- macOS:
host=sandbox: uruchamiash -lc(powłokę logowania) wewnątrz kontenera, więc/etc/profilemoże zresetowaćPATH. OpenClaw dodajeenv.PATHna początku po wczytaniu profilu przez wewnętrzną zmienną środowiskową (bez interpolacji powłoki);tools.exec.pathPrependteż ma tu zastosowanie.host=node: tylko nieblokowane nadpisania środowiska, które przekażesz, są wysyłane do Node. Nadpisaniaenv.PATHsą odrzucane dla wykonywania na hoście i ignorowane przez hosty Node. Jeśli potrzebujesz dodatkowych wpisów PATH na Node, skonfiguruj środowisko usługi hosta Node (systemd/launchd) albo zainstaluj narzędzia w standardowych lokalizacjach.
Nadpisania sesji (/exec)
Użyj /exec, aby ustawić domyślne wartości dla pojedynczej sesji dla host, security, ask i node.
Wyślij /exec bez argumentów, aby wyświetlić bieżące wartości.
Przykład:
Model autoryzacji
/exec jest respektowane tylko dla autoryzowanych nadawców (listy dozwolonych kanałów/parowanie plus commands.useAccessGroups).
Aktualizuje tylko stan sesji i nie zapisuje konfiguracji. Aby trwale wyłączyć exec, zablokuj je przez zasady narzędzi
(tools.deny: ["exec"] albo dla pojedynczego agenta). Zatwierdzenia hosta nadal mają zastosowanie, chyba że jawnie ustawisz
security=full i ask=off.
Zatwierdzenia exec (aplikacja towarzysząca / host Node)
Agenci w piaskownicy mogą wymagać zatwierdzenia każdego żądania, zanimexec uruchomi się na hoście Gateway lub Node.
Zobacz Zatwierdzenia exec, aby poznać zasady, listę dozwolonych i przepływ w interfejsie użytkownika.
Gdy zatwierdzenia są wymagane, narzędzie exec natychmiast zwraca
status: "approval-pending" oraz identyfikator zatwierdzenia. Po zatwierdzeniu (albo odmowie / przekroczeniu czasu)
Gateway emituje zdarzenia systemowe (Exec finished / Exec denied). Jeśli polecenie nadal
działa po tools.exec.approvalRunningNoticeMs, emitowane jest pojedyncze powiadomienie Exec running.
W kanałach z natywnymi kartami/przyciskami zatwierdzeń agent powinien najpierw polegać na tym
natywnym interfejsie i dołączać ręczne polecenie /approve tylko wtedy, gdy wynik narzędzia
jawnie mówi, że zatwierdzenia czatu są niedostępne albo ręczne zatwierdzenie jest
jedyną ścieżką.
Lista dozwolonych + bezpieczne binaria
Ręczne egzekwowanie listy dozwolonych dopasowuje globy rozpoznanych ścieżek binarnych oraz globy samych nazw poleceń. Same nazwy dopasowują tylko polecenia wywoływane przez PATH, więcrg może dopasować
/opt/homebrew/bin/rg, gdy polecenie to rg, ale nie ./rg ani /tmp/rg.
Gdy security=allowlist, polecenia powłoki są automatycznie dozwolone tylko wtedy, gdy każdy segment potoku
znajduje się na liście dozwolonych albo jest bezpiecznym binarium. Łańcuchowanie (;, &&, ||) i przekierowania
są odrzucane w trybie listy dozwolonych, chyba że każdy segment najwyższego poziomu spełnia
listę dozwolonych (w tym bezpieczne binaria). Przekierowania pozostają nieobsługiwane.
Trwałe zaufanie allow-always nie omija tej reguły: polecenie łańcuchowe nadal wymaga dopasowania każdego
segmentu najwyższego poziomu.
autoAllowSkills to osobna wygodna ścieżka w zatwierdzeniach exec. Nie jest tym samym co
ręczne wpisy listy dozwolonych ścieżek. Dla ścisłego jawnego zaufania pozostaw autoAllowSkills wyłączone.
Użyj tych dwóch kontrolek do różnych zadań:
tools.exec.safeBins: małe filtry strumieniowe działające tylko na stdin.tools.exec.safeBinTrustedDirs: jawne dodatkowe zaufane katalogi dla ścieżek wykonywalnych safe-bin.tools.exec.safeBinProfiles: jawna polityka argv dla niestandardowych safe bins.- lista dozwolonych: jawne zaufanie dla ścieżek wykonywalnych.
safeBins jako ogólnej listy dozwolonych i nie dodawaj binariów interpreterów/środowisk uruchomieniowych (na przykład python3, node, ruby, bash). Jeśli ich potrzebujesz, użyj jawnych wpisów listy dozwolonych i pozostaw włączone monity o zatwierdzenie.
openclaw security audit ostrzega, gdy wpisom interpreterów/środowisk uruchomieniowych w safeBins brakuje jawnych profili, a openclaw doctor --fix może utworzyć szkielet brakujących niestandardowych wpisów safeBinProfiles.
openclaw security audit i openclaw doctor ostrzegają również, gdy jawnie dodasz z powrotem do safeBins binaria o szerokim zachowaniu, takie jak jq.
Jeśli jawnie dodajesz interpretery do listy dozwolonych, włącz tools.exec.strictInlineEval, aby formy inline code-eval nadal wymagały nowego zatwierdzenia.
Pełne szczegóły polityki i przykłady znajdziesz w Zatwierdzeniach exec oraz Safe bins a lista dozwolonych.
Przykłady
Pierwszoplanowo:apply_patch
apply_patch jest podnarzędziem exec do strukturalnych edycji wielu plików.
Jest domyślnie włączone dla modeli OpenAI i OpenAI Codex. Użyj konfiguracji tylko wtedy,
gdy chcesz je wyłączyć albo ograniczyć do konkretnych modeli:
- Dostępne tylko dla modeli OpenAI/OpenAI Codex.
- Polityka narzędzi nadal obowiązuje;
allow: ["write"]niejawnie zezwala naapply_patch. deny: ["write"]nie blokujeapply_patch; zablokujapply_patchjawnie albo użyjdeny: ["group:fs"], gdy zapisy poprawek również mają być blokowane.- Konfiguracja znajduje się pod
tools.exec.applyPatch. tools.exec.applyPatch.enableddomyślnie ma wartośćtrue; ustaw ją nafalse, aby wyłączyć narzędzie dla modeli OpenAI.tools.exec.applyPatch.workspaceOnlydomyślnie ma wartośćtrue(ograniczone do obszaru roboczego). Ustaw ją nafalsetylko wtedy, gdy celowo chcesz, abyapply_patchzapisywało/usuwało poza katalogiem obszaru roboczego.
Powiązane
- Zatwierdzenia exec — bramki zatwierdzania dla poleceń powłoki
- Sandboxing — uruchamianie poleceń w środowiskach sandboxowych
- Proces w tle — długotrwałe narzędzie exec i process
- Bezpieczeństwo — polityka narzędzi i podwyższony dostęp