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_COLORCI. 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

    Python SDK pro MCP už nenásleduje přesměrování na jiný server

    MCP Python SDK 2.2.0 už nenásleduje přesměrování na jiný server, protože by na něj mohl znovu poslat přihlašovací údaje i tělo požadavku. Vydání ze 7. září také…

  2. Nástroje

    Ollama ohlásila modely v ChatGPT Desktopu jako novinku, příkaz na ně má od května

    Testovací verze Ollamy 0.34.0-rc1 z 5. září má v poznámkách jako první bod používání modelů Ollamy v ChatGPT Desktopu. Příkaz na to je v projektu od května, nové je…

  3. Nástroje

    Codex zapne experimentální správu kontextu jen třem z šestnácti tarifů ChatGPT

    Codex 0.153.0 vyšel 3. září 2026 a přidal vypnutou položku features.context_management.experimental_mode. Zapíná rozpočet tokenů, poznámky k historii a nástroj new…

  4. Nástroje

    Pydantic AI 2.37 už váže volání nástroje k oznámené zprávě

    Pydantic AI při odpovědi tvořené jen voláním nástroje posílala odkaz na zprávu, kterou proud AG-UI nikdy nezahájil. Verze 2.37.0 přidává prázdný pár začátku a konce…