Update guardian output schema (#17061)

## Summary
- Update guardian output schema to separate risk, authorization,
outcome, and rationale.
- Feed guardian rationale into rejection messages.
- Split the guardian policy into template and tenant-config sections.

## Validation
- `cargo test -p codex-core mcp_tool_call`
- `env -u CODEX_SANDBOX_NETWORK_DISABLED INSTA_UPDATE=always cargo test
-p codex-core guardian::`

---------

Co-authored-by: Owen Lin <owen@openai.com>
This commit is contained in:
maja-openai
2026-04-08 15:47:29 -07:00
committed by GitHub
Unverified
parent 49677ec71f
commit dcbc91fd39
45 changed files with 673 additions and 312 deletions
+3 -3
View File
@@ -636,7 +636,7 @@ allowed_approval_policies = ["on-request"]
rules: None,
enforce_residency: None,
network: None,
guardian_developer_instructions: None,
guardian_policy_config: None,
}))
}),
)
@@ -688,7 +688,7 @@ allowed_approval_policies = ["on-request"]
rules: None,
enforce_residency: None,
network: None,
guardian_developer_instructions: None,
guardian_policy_config: None,
},
);
load_requirements_toml(&mut config_requirements_toml, &requirements_file).await?;
@@ -729,7 +729,7 @@ async fn load_config_layers_includes_cloud_requirements() -> anyhow::Result<()>
rules: None,
enforce_residency: None,
network: None,
guardian_developer_instructions: None,
guardian_policy_config: None,
};
let expected = requirements.clone();
let cloud_requirements = CloudRequirementsLoader::new(async move { Ok(Some(requirements)) });