mirror of
https://github.com/openai/codex.git
synced 2026-10-25 15:56:38 +00:00
## What changed - Add an optional restrictive execution policy to `EnvironmentConfig` and merge it over the active command policy for shell execution and approval decisions. - Reject environment policies that contain allow rules, so environment configuration can only tighten command access. - Include the environment policy fingerprint in cached approval keys so policy changes require fresh session approvals. ## Testing - Cover restrictions overriding saved prefix approvals, policy changes invalidating session approvals, and environment overlays remaining effective when model-specific prefix filtering is active. GitOrigin-RevId: e94f877549ed5e0f577b8cb52f3c1872c58f029d
47 lines
2.0 KiB
Rust
47 lines
2.0 KiB
Rust
use crate::capabilities::SelectedCapabilityRoot;
|
|
use crate::config_types::ShellEnvironmentPolicy;
|
|
use crate::models::PermissionProfileSnapshot;
|
|
use codex_execpolicy::RequirementsExecPolicy;
|
|
|
|
/// Configuration supplied for a thread's selected environment.
|
|
#[allow(clippy::large_enum_variant)]
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub enum EnvironmentConfigState {
|
|
/// Preserve the existing thread-derived environment configuration.
|
|
FromThread,
|
|
/// The owner will supply environment configuration later.
|
|
Pending,
|
|
/// The owner supplied configuration for this environment attachment.
|
|
Ready(EnvironmentConfig),
|
|
/// The owner could not supply configuration for this environment attachment.
|
|
Failed(String),
|
|
}
|
|
|
|
/// Resolved configuration for a thread/environment attachment.
|
|
#[derive(Clone, PartialEq)]
|
|
pub struct EnvironmentConfig {
|
|
/// Whether shell tools may start login shells in this environment.
|
|
pub allow_login_shell: bool,
|
|
/// Resolved permissions for this thread's environment attachment.
|
|
pub permission_profile: PermissionProfileSnapshot,
|
|
/// Controls which environment variables shell commands may inherit.
|
|
pub shell_environment_policy: ShellEnvironmentPolicy,
|
|
/// Additional managed command restrictions for this environment attachment.
|
|
pub exec_policy: Option<RequirementsExecPolicy>,
|
|
/// Capability roots selected for this thread's environment attachment.
|
|
pub selected_capability_roots: Vec<SelectedCapabilityRoot>,
|
|
}
|
|
|
|
impl std::fmt::Debug for EnvironmentConfig {
|
|
fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
|
formatter
|
|
.debug_struct("EnvironmentConfig")
|
|
.field("allow_login_shell", &self.allow_login_shell)
|
|
.field("permission_profile", &self.permission_profile)
|
|
.field("shell_environment_policy", &"<redacted>")
|
|
.field("exec_policy", &self.exec_policy)
|
|
.field("selected_capability_roots", &self.selected_capability_roots)
|
|
.finish()
|
|
}
|
|
}
|