Wiki · Funkce do hloubky
Spouštění příkazů a schvalování
Jak nastavit, aby agent v běžné práci neotravoval, a přitom nemohl smazat server. Včetně toho, co se děje u úloh bez dozoru.
Kdy se agenta nezeptá a kdy ano
| Režim | Co dělá | Pro koho |
|---|---|---|
| smart (výchozí) | Pomocný model posoudí riziko: jasně bezpečný příkaz povolí pro ten jeden případ, opravdu nebezpečný sám zamítne a u nejasných se zeptá | Běžná práce — nejlepší kompromis |
| manual | Zeptá se pokaždé, když jde o nebezpečný příkaz | Když chcete mít přehled o každém rizikovém kroku |
| off | Vypne všechny kontroly (obdoba --yolo) | Jen v izolovaném prostředí, kde nic nemůže utéct |
Když nemá kdo odklikat „povolit“
Noční úloha nebo webhook nemá nikoho, kdo by na dotaz odpověděl. Proto mají tyhle situace vlastní
nastavení: deny (výchozí) příkaz zablokuje a agent musí hledat jinou
cestu; approve všechno dopředu povolí.
| Situace | Nastavení | Výchozí |
|---|---|---|
| Pravidelná úloha (cron) | cron_mode | zablokovat |
Jednorázový příkaz hermes chat -q | single_query_mode | zablokovat |
| Webhook, API bez obsluhy | unattended_mode | zablokovat |
Tohle je důležité pro pochopení tichých problémů: když noční úloha narazí na nebezpečný příkaz a nikdo neklikne, úloha se prostě nedokončí a v logu zůstane zamítnutí. Když takovou úlohu chcete, navrhněte ji tak, aby zvládla i zablokování.
YOLO režim (vše bez ptaní)
| Jak | Rozsah |
|---|---|
hermes --yolo nebo hermes chat --yolo | Celé spuštění |
/yolo v rozhovoru | Od té chvíle do konce sezení |
Nikdy ho nezapínejte tam, kde agent pracuje na živém webu nebo kde jsou vaše klíče a přístupy. V izolovaném kontejneru nebo v testovacím projektu je to naopak rozumná volba.
Zápis do souborů: tady se neptá, tady se rovnou blokuje
U zápisu do souboru není žádné okno „povolit". Hermes zkontroluje cestu proti seznamu chráněných míst a když na nějaké narazí, zápis odmítne — bez možnosti to z chatu obejít:
| Chráněno vždy | Příklady |
|---|---|
| Přístupy k systému a cloudu | Klíče SSH, authorized_keys, přístupy k AWS a Kubernetes, nastavení sudoers |
| Tajemství samotného Hermese | .env, přihlašovací soubory, trezor, profil prohlížeče, tokeny pro nástroje, párovací soubory |
| Soubory s přihlašovacími údaji v projektu | .env.local, .env.production, .envrc — agent je nesmí přečíst, ale může je pro vás napsat |
Hranici zápisu navíc můžete omezit na jedinou složku — pak agent nesmí zapsat nic mimo ni
(HERMES_WRITE_SAFE_ROOT). Chráněná místa výše zůstávají blokovaná, i kdyby byla uvnitř té
složky.
Kde agent běží a co to znamená pro kontrolu
| Kde terminál běží | Kontrola nebezpečných příkazů | Pro co se hodí |
|---|---|---|
| Na vašem počítači | ano | Vývoj a běžná práce |
| Na vzdáleném serveru přes SSH | ano | Práce na serveru |
| V kontejneru (Docker a podobně) | přeskočena — hranicí je kontejner | Nepřetržitý provoz, když je vše izolované |
| V cloudovém sandboxu (Modal, Daytona, Vercel) | přeskočena | Práce, která má zmizet se strojem |
Přeskočená kontrola není chyba — jen to znamená, že ochranou je izolace kontejneru, ne dotazy. Zkontrolujte, co všechno je do kontejneru připojené (složky, klíče, síť).
Pasti z našeho provozu
| Co se stalo | Co s tím |
|---|---|
| Noční úloha se tiše nedokončila | Narazila na nebezpečný příkaz a nebyl kdo schválit → výchozí chování je zablokovat. Úlohu navrhněte tak, aby zvládla jinou cestu, nebo jí povolení přiznejte vědomě |
| Agent tvrdil, že soubor uložil, ale neuložil | Zápis byl zablokovaný (chráněná cesta nebo mimo povolenou složku). Kontrolujte patičku s ověřením zápisu, ne shrnutí odpovědi |
Agent nemohl přečíst .env | Správně — soubory s přihlašovacími údaji se nečtou. Když potřebujete hodnotu použít, zadejte ji agentovi jako nastavení, ne jako obsah souboru |
| Zapnuté „vše povolit“ na produkčním serveru | Nedělejte to. Když už to nutně potřebujete, jen na omezenou dobu a s vědomím, že agent může sáhnout na cokoli |
| Schválení vypršelo, protože jsme byli pryč | Výchozí čekání je 5 minut. Buď se k rozhodnutí vraťte, nebo zvolte režim, který se neptá (a nést jeho riziko) |
| Přesun do kontejneru zrušil i kontrolní body | V kontejneru se cesty týkají kontejneru, takže snímky nejdou. V kontejnerovém režimu se spolehněte na git a zálohy |
Naše tipy
| Tip | Proč |
|---|---|
Nechte smart, dokud nemáte důvod ho měnit | Většinu rutiny povolí a u opravdu riskantních věcí se zastaví |
| Hranici zápisu nastavte na složku projektu | Agent pak nemůže zapsat mimo ni, i kdyby se spletl |
| U pravidelných úloh počítejte s možností zamítnutí | Úloha má umět pokračovat i bez povolení, jinak bude tiše selhávat |
| Nikdy nevypínejte kontroly „na zkoušku“ na živém systému | Riziko se projeví jednou a nevratně |
