mirror of
https://github.com/openai/codex.git
synced 2026-04-30 09:26:44 +00:00
add support for -w,--writable-root to add more writable roots for sandbox (#263)
This adds support for a new flag, `-w,--writable-root`, that can be specified multiple times to _amend_ the list of folders that should be configured as "writable roots" by the sandbox used in `full-auto` mode. Values that are passed as relative paths will be resolved to absolute paths. Incidentally, this required updating a number of the `agent*.test.ts` files: it feels like some of the setup logic across those tests could be consolidated. In my testing, it seems that this might be slightly out of distribution for the model, as I had to explicitly tell it to run `apply_patch` and that it had the permissions to write those files (initially, it just showed me a diff and told me to apply it myself). Nevertheless, I think this is a good starting point.
This commit is contained in:
@@ -45,6 +45,9 @@ type AgentLoopParams = {
|
||||
onItem: (item: ResponseItem) => void;
|
||||
onLoading: (loading: boolean) => void;
|
||||
|
||||
/** Extra writable roots to use with sandbox execution. */
|
||||
additionalWritableRoots: ReadonlyArray<string>;
|
||||
|
||||
/** Called when the command is not auto-approved to request explicit user review. */
|
||||
getCommandConfirmation: (
|
||||
command: Array<string>,
|
||||
@@ -58,6 +61,7 @@ export class AgentLoop {
|
||||
private instructions?: string;
|
||||
private approvalPolicy: ApprovalPolicy;
|
||||
private config: AppConfig;
|
||||
private additionalWritableRoots: ReadonlyArray<string>;
|
||||
|
||||
// Using `InstanceType<typeof OpenAI>` sidesteps typing issues with the OpenAI package under
|
||||
// the TS 5+ `moduleResolution=bundler` setup. OpenAI client instance. We keep the concrete
|
||||
@@ -213,6 +217,7 @@ export class AgentLoop {
|
||||
onLoading,
|
||||
getCommandConfirmation,
|
||||
onLastResponseId,
|
||||
additionalWritableRoots,
|
||||
}: AgentLoopParams & { config?: AppConfig }) {
|
||||
this.model = model;
|
||||
this.instructions = instructions;
|
||||
@@ -229,6 +234,7 @@ export class AgentLoop {
|
||||
model,
|
||||
instructions: instructions ?? "",
|
||||
} as AppConfig);
|
||||
this.additionalWritableRoots = additionalWritableRoots;
|
||||
this.onItem = onItem;
|
||||
this.onLoading = onLoading;
|
||||
this.getCommandConfirmation = getCommandConfirmation;
|
||||
@@ -358,6 +364,7 @@ export class AgentLoop {
|
||||
args,
|
||||
this.config,
|
||||
this.approvalPolicy,
|
||||
this.additionalWritableRoots,
|
||||
this.getCommandConfirmation,
|
||||
this.execAbortController?.signal,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user