From 16b613c8b6e6cb11fd28fc6de658e4a970fe1f3c Mon Sep 17 00:00:00 2001 From: D2758695161 <13510221939@163.com> Date: Sun, 5 Apr 2026 05:02:37 +0800 Subject: [PATCH 1/3] feat: add --full-access flag for danger-full-access sandbox Implements #145 --- plugins/codex/scripts/codex-companion.mjs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/codex/scripts/codex-companion.mjs b/plugins/codex/scripts/codex-companion.mjs index 201d1c7..17c61e8 100644 --- a/plugins/codex/scripts/codex-companion.mjs +++ b/plugins/codex/scripts/codex-companion.mjs @@ -457,7 +457,7 @@ async function executeTaskRun(request) { defaultPrompt: resumeThreadId ? DEFAULT_CONTINUE_PROMPT : "", model: request.model, effort: request.effort, - sandbox: request.write ? "workspace-write" : "read-only", + sandbox: request.fullAccess ? "danger-full-access" : (request.write ? "workspace-write" : "read-only"), onProgress: request.onProgress, persistThread: true, threadName: resumeThreadId ? null : buildPersistentTaskThreadName(request.prompt || DEFAULT_CONTINUE_PROMPT) @@ -704,7 +704,7 @@ async function handleReview(argv) { async function handleTask(argv) { const { options, positionals } = parseCommandInput(argv, { valueOptions: ["model", "effort", "cwd", "prompt-file"], - booleanOptions: ["json", "write", "resume-last", "resume", "fresh", "background"], + booleanOptions: ["json", "write", "full-access", "resume-last", "resume", "fresh", "background"], aliasMap: { m: "model" } From cde1ec767de0092c5e9b84a4ef8ff3bde07aa9db Mon Sep 17 00:00:00 2001 From: D2758695161 <13510221939@163.com> Date: Sun, 5 Apr 2026 17:18:51 +0800 Subject: [PATCH 2/3] fix: add shell: true on Windows in app-server.mjs spawn Fixes #116 Part 1 - spawn ENOENT for .cmd files on Windows From a8eb41b812a1253fdada0fd8c8ca07b4836bc6a9 Mon Sep 17 00:00:00 2001 From: D2758695161 <13510221939@163.com> Date: Sun, 5 Apr 2026 17:18:53 +0800 Subject: [PATCH 3/3] fix: handle directories in formatUntrackedFile to prevent EISDIR Fixes #116 Part 2 - EISDIR when untracked entries include directories --- plugins/codex/scripts/lib/git.mjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/codex/scripts/lib/git.mjs b/plugins/codex/scripts/lib/git.mjs index 1c0529a..c405d04 100644 --- a/plugins/codex/scripts/lib/git.mjs +++ b/plugins/codex/scripts/lib/git.mjs @@ -136,10 +136,10 @@ function formatSection(title, body) { function formatUntrackedFile(cwd, relativePath) { const absolutePath = path.join(cwd, relativePath); const stat = fs.statSync(absolutePath); - if (stat.size > MAX_UNTRACKED_BYTES) { - return `### ${relativePath}\n(skipped: ${stat.size} bytes exceeds ${MAX_UNTRACKED_BYTES} byte limit)`; + if (stat.isDirectory()) { + return `### ${relativePath} +(skipped: directory)`; } - const buffer = fs.readFileSync(absolutePath); if (!isProbablyText(buffer)) { return `### ${relativePath}\n(skipped: binary file)`;