OpenClaw pustí uložený klíč jen na vyjmenované servery, zatím v předběžném vydání
Agentní nástroj OpenClaw vydal 15. srpna předběžnou verzi, ve které podřízený proces místo klíče k cizímu rozhraní dostane jen zástupnou hodnotu. Skutečný klíč za ni dosadí až proxy uvnitř brány, a to výhradně u serverů vyjmenovaných dopředu. Ve vydání, které registr npm nabízí jako výchozí, ta pojistka není, přestože ji dokumentace na webu popisuje bez poznámky.
Agent, který má něco vyřídit na internetu, potřebuje klíč k cizímu rozhraní. Dokud ten klíč leží v proměnné prostředí podřízeného procesu, může s ním ten proces zavolat kamkoli. Nástroj OpenClaw na to od 15. srpna nabízí odpověď: klíč do procesu vůbec nepustí a dosadí ho až brána, a to výhradně u serverů, které jste vyjmenovali dopředu.

Předběžné vydání 2026.8.1-beta.2 vyšlo 15. srpna 2026 a vazba uložených klíčů na cílové servery stojí v jeho poznámkách hned jako první bod. OpenClaw je agentní nástroj postavený kolem brány, přes kterou jdou rozhovory, připojené kanály i spouštění příkazů; na GitHubu má přes 386 tisíc hvězd.
Klíč dosadí až proxy, těsně před odesláním
Postup popisuje dokumentace brány. V prostředí podřízeného procesu nestojí klíč, ale zástupná hodnota tvaru oc-sent-v2.…end; dokumentace jí říká sentinel a je to ověřený šifrový text, ne použitelný přihlašovací údaj. Odchozí požadavky vede brána přes vlastní proxy na místní smyčce a ta zástupnou hodnotu nahradí skutečným klíčem v adrese, v hlavičkách i v těle, těsně předtím než požadavek opustí stroj.
Nahradí ji ovšem jen tehdy, když cílový server u toho klíče stojí v seznamu. Jména se ukládají malými písmeny v ASCII nebo punycode a porovnávají se přesně; schéma, cesta, port ani hvězdička se nepřijímají a klíč bez jediného povoleného serveru se nedosadí nikdy. Seznam plní opakovatelný přepínač:
openclaw secrets store set OPENAI_API_KEY --allow-host api.openai.com
Požadavek na jinou adresu proxy odmítne a do chybové hlášky vypíše jméno klíče i přesný příkaz, kterým by se ten server povolil. Tělo požadavku se prochází proudově s omezeným překryvem, takže záměna vyjde i u velkého souboru, kde zástupná hodnota přesahuje přes hranici dvou odesílaných částí.
Zapíná se ručně a platí jen pro příkazy od brány
Ve výchozím stavu je celá proxy vypnutá; zapne se přepnutím secrets.egressProxy.enabled na true a restartem brány. Podřízený proces pak dostane do prostředí HTTPS_PROXY a HTTP_PROXY s přihlášením platným pro jediný běh a čtyři proměnné s cestou k dočasné certifikační autoritě. Ta vzniká při každém startu brány, její adresář má práva 0700 a soukromé klíče 0600, při vypnutí brány se maže a do systémového úložiště důvěryhodných certifikátů se podle dokumentace neinstaluje. Proxy se ověřuje obyčejným Basic s uživatelem openclaw a náhodným heslem na jeden běh; chybné nebo prošlé přihlášení dostane odpověď 407 a dál se nepřepošle.
Rozsah je úzký. Ochrana platí jen na příkazy, které spouští sama brána. Sandbox ani vzdálené spouštění přes node nedostanou proměnné proxy ani zástupné hodnoty, takže se ke sdíleným klíčům nedostanou vůbec. Do cizích agentních prostředí položky ze společného úložiště nevedou taky: app-server Codexu ani potomci ACP jako Claude Code si prostředí staví sami a ochranu přihlašovacích údajů řeší po svém.
Meze, které projekt vypisuje sám
Výčet omezení je v dokumentaci delší než popis samotné funkce. Vazba na server nedělá ze serveru důvěryhodné místo: služba, která přijatý údaj vrátí v odpovědi, ho agentovi předá stejně. Pravidlo stojí na jménu, ne na IP adrese, takže podvržené DNS pošle povolené jméno jinam. Nešifrovaný přenos se odmítá, ne chrání. Ke vzdálenému serveru mluví proxy jen protokolem HTTP/1.1, WebSocket nepřepisuje, HTTPS na jiném portu než 443 mezi podporované cíle nepatří a procesy na pozadí ztratí oprávnění ve chvíli, kdy skončí běh, pod kterým vznikly.
K tomu patří jedna věta o samotném úložišti: hodnoty v něm šifrované nejsou. Leží ve sdílené databázi SQLite a chrání je jen práva 0600 na souboru a 0700 na adresáři; kdo chce víc, má podle dokumentace sáhnout po externím správci hesel.
Ve vydání, které npm nabízí jako výchozí, přepínač není
Že jde zatím o předběžnou větev, se dá ověřit bez instalace. Registr npm vede pod značkou latest verzi 2026.7.1-2, pod beta právě 2026.8.1-beta.2 a pod extended-stable ještě starší 2026.6.34. Soubor s popisem příkazu secrets má ve značce stabilního vydání 7 649 bajtů a řetězec --allow-host se v něm nevyskytuje ani jednou; ve značce předběžného vydání má 14 130 bajtů a čtyři výskyty. Nastavení egressProxy pak v dokumentaci brány chybí nejen ve stabilním vydání, ale i v poslední betě řady 2026.7.2. Jde o vlastní srovnání obou značek ze 16. srpna 2026.
Stránka dokumentace přitom přepínač popisuje jako běžnou součást příkazu a slovo „beta“ na ní nestojí. Poznámky k vydání jsou obrácený případ: ohlašují vazbu klíčů na hosty, ale o proxy, přes kterou to celé jde, v nich není ani řádek. Kdo si chce udělat obrázek o tom, co přesně se s jeho klíčem děje, musí do dokumentace.
Stejný nápad se v témže vydání objevuje ještě jednou, jen v menším. U hlasové služby Gradium teď OpenClaw odmítne poslat klíč na nešifrovanou adresu, na cizího hostitele i na jméno, které se tomu pravému jen podobá, a přenos přišpendlí k hostiteli uvedenému v dokumentaci té služby. Vázat přihlašovací údaj na jedno konkrétní místo tedy v projektu není jednorázová výjimka.
Zdroje: poznámky k vydání 2026.8.1-beta.2, dokumentace ke správě klíčů, tentýž dokument ve značce 2026.7.1-2 a záznam balíčku v registru npm.