Přeskočit na obsah
Nástroje 3 min čtení

Filtr proměnných prostředí v lokálním sandboxu Agents SDK se musí zapnout ručně

Knihovna openai-agents vydala 8. září verzi 0.22.1 s možností omezit, které proměnné prostředí hostitele uvidí příkaz spuštěný agentem. Zapíná se ručně; bez toho příkaz dál dostává kopii celého prostředí procesu, který agenta pustil, i s klíči k API.

Knihovna openai-agents, se kterou se v Pythonu staví agenti nad modely OpenAI, vydala 8. září 2026 verzi 0.22.1. Mezi 111 položkami seznamu změn je jedna věta o sandboxu: configurable Unix-local environment isolation. Za ní stojí volba, kterou si vývojář zapíná sám a která rozhoduje o tom, jestli příkaz spuštěný agentem uvidí klíče k API, jež má ve svém prostředí proces, který agenta pustil.

Pískoviště na dětském hřišti
Pískoviště v Moskvě. Foto: Al Silonov, Wikimedia Commons (CC BY-SA 4.0)

Kopie celého prostředí, a to od dubna

Sandbox typu Unix-local je v knihovně nejjednodušší cesta, jak nechat agenta pracovat se soubory na disku: žádný kontejner ani doinstalování, příkazy se spouštějí jako obyčejné procesy. Prostředí pro ně skládá metoda _resolved_exec_context v souboru unix_local.py a až do verze 0.22.0 začínala řádkem env = os.environ.copy(). Tentýž řádek je v souboru i na značce v0.14.0 z 15. dubna 2026, tedy od vydání, ve kterém se ten soubor v knihovně objevil.

Co má ve svém prostředí proces, který agenta pouští, to má i příkaz v sandboxu. Ukazuje to test přidaný spolu s novou volbou: nastaví hostiteli OPENAI_API_KEY na hodnotu host-secret a ověřuje, že ji příkaz uvnitř sandboxu vypíše. Manifest sandboxu umí proměnné doplnit a přepsat, odebrat ne. Výjimkou je HOME, které knihovna vždy nastaví na kořen pracovního prostoru.

Dvacet jmen, nebo vlastní seznam

Klient UnixLocalSandboxClient má nově dva parametry. S inherit_host_environment=False projde jen zabudovaný seznam dvaceti proměnných: PATH, LANG, sedm proměnných LC_*, TZ, TERM, TMPDIR, čtyři cesty k certifikátům, UV_PYTHON, NO_COLOR, FORCE_COLOR a CI. Druhý parametr host_environment_allowlist ten seznam nahradí vlastním a bez vypnutého dědění skončí výjimkou. Hodnoty z manifestu se přidávají až po filtrování, takže mají přednost.

Nastavení se neukládá do stavu relace. Druhý test to zkouší natvrdo: relaci založenou klientem s filtrem obnoví klient bez něj a příkaz zase vidí prostředí celé. Rozhoduje tedy ten klient, který operaci právě provádí, ne to, jak relace vznikla.

Výchozí nastavení zůstalo, jak bylo

Parametr inherit_host_environment má výchozí hodnotu True. Kdo knihovnu povýší a nic nepřepíše, má tedy stejné chování jako předtím; autor změny to v popisu návrhu #4640 píše rovnou v první větě. Návrh je v hlavní větvi od 25. srpna, do vydání se dostal o čtrnáct dní později.

Dokumentace sandboxu k tomu dodává, že filtr se týká výhradně proměnných: příkazy Unix-local dál běží jako procesy hostitele s přístupem k jeho souborům a k síti a na silnější oddělení je určený Docker nebo hostovaný sandbox. Táž stránka radí každému, kdo potřebuje silnější oddělení prostředí nebo podobu blízkou provozu, přejít na Docker nebo na hostovaného poskytovatele.

Zamítnutý návrh chtěl filtr rovnou zapnutý

Změna vznikla z návrhu #4617, který podal přispěvatel vystupující jako simpleqt a který mířil dál. Seznam povolených proměnných měl platit rovnou a plné dědění se mělo vyžádat výslovně. K tomu navrhoval druhou věc: na Linuxu nezaložit relaci, dokud vývojář nepotvrdí parametrem, že mu běh bez omezení nevadí. Důvodem je profil sandbox-exec, kterým se příkazy obalují; funkce _confined_exec_command vrací i ve verzi 0.22.1 mimo macOS příkaz nezměněný a omezení na úrovni systému tam nevzniká.

Člen týmu vystupující jako seratch návrh uzavřel s tím, že seznam povolených proměnných je platné rozšíření, přidá ho návrh #4640 a že v jeho commitu bude simpleqt uvedený jako spoluautor. Commit té změny simpleqt jako spoluautora opravdu uvádí. Druhá polovina původního návrhu, tedy povinné potvrzení na Linuxu, do knihovny nešla a seznam změn ji nezmiňuje.

Koho se to týká

Kdo SandboxAgent jen zkouší na svém počítači, má v prostředí zpravidla přesně ty klíče, se kterými agenta pouští: kromě klíče k OpenAI třeba pověření ke cloudu nebo GITHUB_TOKEN. Model přitom v sandboxu spouští příkazy, které si sám vymyslí, a výpis proměnných je jeden z nich. Nová volba je proti tomu jeden řádek v konstruktoru klienta, jen se o něm musí vědět, což z jediné řádky v seznamu změn nevyplyne. Druhá pojistka téže knihovny, tedy schvalování volání nástrojů, měla vlastní potíž: integrace Sentry SDK ji mohla do verze 2.66.1 vypnout.

Balíček je pod licencí MIT a verze 0.22.1 se na PyPI objevila 8. září ve 9.22 UTC, čtyři minuty po zveřejnění vydání na GitHubu.

Zdroje

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. Nástroje

    Claude Duet čerpá při práci na pozadí stejný limit jako běžný Claude

    Anthropic otevřel čekací listinu na Claude Duet pro předplatitele Pro a Max v USA. Agent pracuje i po vypnutí počítače, ale jeho kontroly účtů a úkoly na pozadí ubírají…

  2. Nástroje

    ElevenLabs uvedlo Eleven Realtime pro hlasové rozhovory

    Varianta Max dosáhla v nezávislém testu mluvených logických úloh 98,8 procenta a první zvuk vydala za 0,57 sekundy. Menší Mini získalo lepší známku za průběh rozhovoru,…

  3. Nástroje

    ChatGPT v Chromu umí číst otevřené panely a pracovat v nich

    ChatGPT v Chromu umí číst otevřené panely a pracovat v nich. Rozšíření od OpenAI dostalo postranní chat s historií konverzací. Při odkazování na historii prohlížení a…

  4. Nástroje

    Claude Code dostal strop čekání na obnovení limitu u sezení bez dohledu

    Claude Code v režimu pro sezení bez dohledu opakuje odmítnuté požadavky tak dlouho, dokud neprojdou – a u vyčerpaného limitu předplatného to znamená čekat až do jeho…