mirror of
https://github.com/openai/codex.git
synced 2026-10-24 18:18:41 +00:00
feat: allow limited git writes in workspace sandbox
Co-authored-by: Codex noreply@openai.com
This commit is contained in:
co-authored by
Codex noreply@openai.com
parent
d6748f741a
commit
8980fd17ee
@@ -2864,6 +2864,10 @@
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"allowLimitedGitWrites": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"excludeSlashTmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
|
||||
@@ -3013,6 +3013,10 @@
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"allowLimitedGitWrites": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"excludeSlashTmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
|
||||
+8
@@ -14716,6 +14716,10 @@
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"allowLimitedGitWrites": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"excludeSlashTmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
@@ -14753,6 +14757,10 @@
|
||||
},
|
||||
"SandboxWorkspaceWrite": {
|
||||
"properties": {
|
||||
"allow_limited_git_writes": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"exclude_slash_tmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
|
||||
+8
@@ -11245,6 +11245,10 @@
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"allowLimitedGitWrites": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"excludeSlashTmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
@@ -11282,6 +11286,10 @@
|
||||
},
|
||||
"SandboxWorkspaceWrite": {
|
||||
"properties": {
|
||||
"allow_limited_git_writes": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"exclude_slash_tmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
|
||||
@@ -98,6 +98,10 @@
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"allowLimitedGitWrites": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"excludeSlashTmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
|
||||
@@ -698,6 +698,10 @@
|
||||
},
|
||||
"SandboxWorkspaceWrite": {
|
||||
"properties": {
|
||||
"allow_limited_git_writes": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"exclude_slash_tmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
|
||||
@@ -793,6 +793,10 @@
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"allowLimitedGitWrites": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"excludeSlashTmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
|
||||
@@ -793,6 +793,10 @@
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"allowLimitedGitWrites": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"excludeSlashTmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
|
||||
+4
@@ -219,6 +219,10 @@
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"allowLimitedGitWrites": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"excludeSlashTmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
|
||||
@@ -793,6 +793,10 @@
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"allowLimitedGitWrites": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"excludeSlashTmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
|
||||
@@ -249,6 +249,10 @@
|
||||
},
|
||||
{
|
||||
"properties": {
|
||||
"allowLimitedGitWrites": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"excludeSlashTmp": {
|
||||
"default": false,
|
||||
"type": "boolean"
|
||||
|
||||
@@ -4,4 +4,4 @@
|
||||
import type { AbsolutePathBuf } from "../AbsolutePathBuf";
|
||||
import type { NetworkAccess } from "./NetworkAccess";
|
||||
|
||||
export type SandboxPolicy = { "type": "dangerFullAccess" } | { "type": "readOnly", networkAccess: boolean, } | { "type": "externalSandbox", networkAccess: NetworkAccess, } | { "type": "workspaceWrite", writableRoots: Array<AbsolutePathBuf>, networkAccess: boolean, excludeTmpdirEnvVar: boolean, excludeSlashTmp: boolean, };
|
||||
export type SandboxPolicy = { "type": "dangerFullAccess" } | { "type": "readOnly", networkAccess: boolean, } | { "type": "externalSandbox", networkAccess: NetworkAccess, } | { "type": "workspaceWrite", writableRoots: Array<AbsolutePathBuf>, networkAccess: boolean, allowLimitedGitWrites: boolean, excludeTmpdirEnvVar: boolean, excludeSlashTmp: boolean, };
|
||||
|
||||
+1
-1
@@ -2,4 +2,4 @@
|
||||
|
||||
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
|
||||
|
||||
export type SandboxWorkspaceWrite = { writable_roots: Array<string>, network_access: boolean, exclude_tmpdir_env_var: boolean, exclude_slash_tmp: boolean, };
|
||||
export type SandboxWorkspaceWrite = { writable_roots: Array<string>, network_access: boolean, allow_limited_git_writes: boolean, exclude_tmpdir_env_var: boolean, exclude_slash_tmp: boolean, };
|
||||
|
||||
@@ -223,6 +223,7 @@ pub struct SandboxSettings {
|
||||
#[serde(default)]
|
||||
pub writable_roots: Vec<AbsolutePathBuf>,
|
||||
pub network_access: Option<bool>,
|
||||
pub allow_limited_git_writes: Option<bool>,
|
||||
pub exclude_tmpdir_env_var: Option<bool>,
|
||||
pub exclude_slash_tmp: Option<bool>,
|
||||
}
|
||||
|
||||
@@ -136,6 +136,8 @@ pub struct SandboxWorkspaceWrite {
|
||||
#[serde(default)]
|
||||
pub network_access: bool,
|
||||
#[serde(default)]
|
||||
pub allow_limited_git_writes: bool,
|
||||
#[serde(default)]
|
||||
pub exclude_tmpdir_env_var: bool,
|
||||
#[serde(default)]
|
||||
pub exclude_slash_tmp: bool,
|
||||
|
||||
@@ -449,6 +449,8 @@ pub enum SandboxPolicy {
|
||||
#[serde(default)]
|
||||
network_access: bool,
|
||||
#[serde(default)]
|
||||
allow_limited_git_writes: bool,
|
||||
#[serde(default)]
|
||||
exclude_tmpdir_env_var: bool,
|
||||
#[serde(default)]
|
||||
exclude_slash_tmp: bool,
|
||||
@@ -480,6 +482,8 @@ enum SandboxPolicyDeserialize {
|
||||
#[serde(default)]
|
||||
network_access: bool,
|
||||
#[serde(default)]
|
||||
allow_limited_git_writes: bool,
|
||||
#[serde(default)]
|
||||
exclude_tmpdir_env_var: bool,
|
||||
#[serde(default)]
|
||||
exclude_slash_tmp: bool,
|
||||
@@ -518,6 +522,7 @@ impl<'de> Deserialize<'de> for SandboxPolicy {
|
||||
writable_roots,
|
||||
read_only_access,
|
||||
network_access,
|
||||
allow_limited_git_writes,
|
||||
exclude_tmpdir_env_var,
|
||||
exclude_slash_tmp,
|
||||
} => {
|
||||
@@ -529,6 +534,7 @@ impl<'de> Deserialize<'de> for SandboxPolicy {
|
||||
Ok(SandboxPolicy::WorkspaceWrite {
|
||||
writable_roots,
|
||||
network_access,
|
||||
allow_limited_git_writes,
|
||||
exclude_tmpdir_env_var,
|
||||
exclude_slash_tmp,
|
||||
})
|
||||
@@ -559,11 +565,13 @@ impl SandboxPolicy {
|
||||
SandboxPolicy::WorkspaceWrite {
|
||||
writable_roots,
|
||||
network_access,
|
||||
allow_limited_git_writes,
|
||||
exclude_tmpdir_env_var,
|
||||
exclude_slash_tmp,
|
||||
} => codex_protocol::protocol::SandboxPolicy::WorkspaceWrite {
|
||||
writable_roots: writable_roots.clone(),
|
||||
network_access: *network_access,
|
||||
allow_limited_git_writes: *allow_limited_git_writes,
|
||||
exclude_tmpdir_env_var: *exclude_tmpdir_env_var,
|
||||
exclude_slash_tmp: *exclude_slash_tmp,
|
||||
},
|
||||
@@ -591,11 +599,13 @@ impl From<codex_protocol::protocol::SandboxPolicy> for SandboxPolicy {
|
||||
codex_protocol::protocol::SandboxPolicy::WorkspaceWrite {
|
||||
writable_roots,
|
||||
network_access,
|
||||
allow_limited_git_writes,
|
||||
exclude_tmpdir_env_var,
|
||||
exclude_slash_tmp,
|
||||
} => SandboxPolicy::WorkspaceWrite {
|
||||
writable_roots,
|
||||
network_access,
|
||||
allow_limited_git_writes,
|
||||
exclude_tmpdir_env_var,
|
||||
exclude_slash_tmp,
|
||||
},
|
||||
|
||||
@@ -2086,6 +2086,7 @@ fn sandbox_policy_round_trips_workspace_write_access() {
|
||||
let v2_policy = SandboxPolicy::WorkspaceWrite {
|
||||
writable_roots: vec![],
|
||||
network_access: true,
|
||||
allow_limited_git_writes: true,
|
||||
exclude_tmpdir_env_var: false,
|
||||
exclude_slash_tmp: false,
|
||||
};
|
||||
@@ -2096,6 +2097,7 @@ fn sandbox_policy_round_trips_workspace_write_access() {
|
||||
codex_protocol::protocol::SandboxPolicy::WorkspaceWrite {
|
||||
writable_roots: vec![],
|
||||
network_access: true,
|
||||
allow_limited_git_writes: true,
|
||||
exclude_tmpdir_env_var: false,
|
||||
exclude_slash_tmp: false,
|
||||
}
|
||||
@@ -2142,6 +2144,7 @@ fn sandbox_policy_deserializes_legacy_workspace_write_full_access_field() {
|
||||
SandboxPolicy::WorkspaceWrite {
|
||||
writable_roots: vec![absolute_path("/workspace")],
|
||||
network_access: true,
|
||||
allow_limited_git_writes: false,
|
||||
exclude_tmpdir_env_var: true,
|
||||
exclude_slash_tmp: true,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user