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.

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.