From 59df0b0f0f4c61419984347889333f564ba9fcf7 Mon Sep 17 00:00:00 2001 From: claude Date: Tue, 2 Jun 2026 00:39:32 +0000 Subject: [PATCH] fix(codex): emit passthrough egress routes when not forwarding host credentials When forward_host_credentials is false, Codex bottles should still get tls_passthrough routes for the OpenAI/ChatGPT hosts so that tokens a user sets via `codex login` after launch aren't stripped by pipelock's header DLP. Previously no routes were emitted, which would have blocked those requests entirely once pipelock enforcement tightens. Rename the test to reflect the new expected behavior. Assisted-by: Claude Code --- bot_bottle/agent_provider.py | 14 +++++++------- tests/unit/test_agent_provider.py | 11 +++++++++-- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/bot_bottle/agent_provider.py b/bot_bottle/agent_provider.py index dbd4a59..b0e538e 100644 --- a/bot_bottle/agent_provider.py +++ b/bot_bottle/agent_provider.py @@ -160,14 +160,14 @@ def agent_provision_plan( config_file.chmod(0o600) files.append(AgentProvisionFile(config_file, config_path)) + for host in CODEX_HOST_CREDENTIAL_HOSTS: + egress_routes.append(EgressRoute( + host=host, + auth_scheme="Bearer" if forward_host_credentials else "", + token_ref=CODEX_HOST_CREDENTIAL_TOKEN_REF if forward_host_credentials else "", + tls_passthrough=True, + )) if forward_host_credentials: - for host in CODEX_HOST_CREDENTIAL_HOSTS: - egress_routes.append(EgressRoute( - host=host, - auth_scheme="Bearer", - token_ref=CODEX_HOST_CREDENTIAL_TOKEN_REF, - tls_passthrough=True, - )) auth_file = state_dir / "codex-auth.json" write_codex_dummy_auth_file(auth_file, host_env or dict(os.environ)) files.append(AgentProvisionFile(auth_file, f"{auth_dir}/auth.json")) diff --git a/tests/unit/test_agent_provider.py b/tests/unit/test_agent_provider.py index b6c5588..e8905f2 100644 --- a/tests/unit/test_agent_provider.py +++ b/tests/unit/test_agent_provider.py @@ -117,7 +117,7 @@ class TestAgentProviderRuntime(unittest.TestCase): self.assertEqual(CODEX_HOST_CREDENTIAL_TOKEN_REF, r.token_ref) self.assertTrue(r.tls_passthrough) - def test_codex_without_forward_host_credentials_has_no_egress_routes(self): + def test_codex_without_forward_host_credentials_has_passthrough_egress_routes(self): with tempfile.TemporaryDirectory(prefix="bb-provider.") as tmp: plan = agent_provision_plan( template="codex", @@ -125,7 +125,14 @@ class TestAgentProviderRuntime(unittest.TestCase): state_dir=Path(tmp), forward_host_credentials=False, ) - self.assertEqual((), plan.egress_routes) + self.assertEqual( + {r.host for r in plan.egress_routes}, + set(CODEX_HOST_CREDENTIAL_HOSTS), + ) + for r in plan.egress_routes: + self.assertEqual("", r.auth_scheme) + self.assertEqual("", r.token_ref) + self.assertTrue(r.tls_passthrough) def test_claude_plan_has_no_egress_routes(self): with tempfile.TemporaryDirectory(prefix="bb-provider.") as tmp: