The Agent runs for hours, but a researcher still has to watch every shell command, file change, and experiment submission.
The fastest safe fix is to split actions into read-only, reversible, and high-risk tiers, pause only at defined tool boundaries, persist the task state, and approve work inside an isolated workspace.
Who should use this runbook
This guide is for research teams letting Codex handle long experiments, code changes, data analysis, or evaluation jobs while reducing repeated manual waiting.
It is also for platform engineers building Agent queues that can pause, transfer ownership, and recover after a process or machine failure. Technical leads managing Xcode, macOS, desktop-tool, or remote execution work will find the workspace isolation rules especially relevant.
Last updated: September 8, 2026. The date, research scope, and human-guidance statement were checked against OpenAI’s research disclosure. SDK behavior was checked against the current OpenAI Agents SDK human approval documentation and RunState reference.
Before launch: separate the takeover boundary
OpenAI has confirmed that its internal research effort reached an “automated research intern” goal, while also stating that more complex successful tasks often still need human guidance. That finding describes OpenAI’s internal research organization and measurement method. It is not a success-rate or efficiency promise for your team.
The deployment decision is therefore not “fully autonomous or fully manual.” The useful decision is where a person must intervene.
Split the Agent’s work into these action classes:
- Read-only reasoning and retrieval: listing files, querying experiment metadata, reading logs, inspecting test output, or comparing existing results. These actions can usually run automatically when access is scoped correctly.
- Reversible local changes: creating a patch, generating a temporary file, writing a disposable analysis artifact, or running a bounded test in a task-specific workspace. These actions can use conditional approval if the patch scope and rollback path are visible.
- High-impact external actions: pushing to a shared branch, submitting an expensive experiment, changing a production dataset, sending data outside the approved boundary, modifying credentials, or writing to an external system. These require explicit human approval.
Do not make every tool call wait for a person. That creates a queue that is expensive to operate and encourages reviewers to approve requests without reading them. Do not make every action automatic either. A harmless file read and a shared-repository write do not deserve the same policy.
The approval decision should be based on observable facts:
- Tool name and version.
- A concise parameter summary.
- Target repository and revision.
- Workspace and host identifier.
- Expected files or resources affected.
- External side effects.
- Rollback or cleanup action.
It should not depend on reviewing hidden reasoning. The reviewer needs enough information to judge the requested operation and its impact, not access to an untrusted reconstruction of private chain-of-thought.
First hour: create durable task state
The first implementation goal is not a sophisticated dashboard. It is a task that can stop without losing its place.
The OpenAI Agents SDK approval flow supports interruption around human decisions. Its RunState documentation describes serializing state so a run can be persisted and resumed. Treat those capabilities as building blocks for your application, not as a complete safety system.
Persist at least the following fields in an application database or durable queue:
- Task identifier and workflow version.
- Agent or model identifier.
- Prompt and tool-schema versions.
- Workspace identifier and execution-environment identifier.
- Completed steps and latest successful tool result.
- Pending tool name and parameter summary.
- Approval status, reviewer identity, decision time, and decision reason.
- Recovery status and the next permitted action.
Do not store API keys, repository tokens, session cookies, or other secrets inside the transferable task state. Resolve credentials through the execution environment or a short-lived secret mechanism after the task resumes.
The separation matters because the Agent has several different kinds of state:
- Model output is a proposed next action.
- Run state records where the workflow stopped.
- Tool approval records whether a person allowed one operation.
- Code workspace contains files and repository history.
- Remote Mac environment provides macOS, Xcode, desktop tools, and the process host.
A serialized RunState can help you resume a workflow. It does not undo an email, reverse a pushed commit, restore a modified external database, or cancel an experiment that already started.
Operational warning: never treat a rejected approval as an ordinary network error. If the queue retries it indefinitely, the Agent may repeatedly propose the same side effect or conceal a policy decision inside retry noise.
First trial: use only reversible operations
Your first trial should prove that the Agent stops before a protected tool executes. Choose one or more of these bounded tasks:
- Generate a code patch without pushing it.
- Create a temporary analysis file.
- Run a read-only experiment query.
- Inspect test output from an existing run.
- Produce a diff and a proposed next command.
For each task, test three paths:
- Approved: the exact pending call runs, its result is recorded, and the Agent continues from the saved state.
- Rejected: the workflow ends safely or creates a new plan that addresses the rejection.
- Unattended: the request remains pending or follows a documented timeout policy without silently executing.
Record evidence for every path:
- Tool name.
- Parameter summary.
- Workspace and host.
- Approval identity.
- Decision and reason.
- Resume result.
- Files changed before and after recovery.
- Any external side effect.
A successful pause means more than seeing a message in a user interface. Confirm that the protected function did not execute before approval, that a process restart did not erase the request, and that a second approval cannot accidentally run the same side effect twice.
Use idempotency keys for submissions and external writes. If the Agent restarts after a timeout, it must be able to determine whether the previous request was accepted, rejected, or never reached the target system.
First day: bind approval to the workspace
An approval request without an execution target is incomplete. A reviewer may approve a safe-looking command while the Agent is connected to the wrong repository, branch, host, or macOS session.
Bind every parallel research task to an identifiable workspace and environment:
- Repository and revision.
- Isolated working directory or worktree.
- Runtime image or host identifier.
- Credential scope.
- Input-data version.
- Output directory.
- Cleanup policy.
Disposable, general-purpose experiments can run in temporary workspaces. Tasks that require macOS, Xcode, a desktop application, or a physical-style development environment should enter a dedicated remote Mac pool rather than a shared developer machine. If you are evaluating whether to rent or buy a Mac for AI Agent work, compare task duration, workspace isolation, and maintenance responsibility in this Mac AI Agent purchase versus rental guide.
The approval screen should show the environment before the reviewer sees the natural-language explanation. Put the target host, repository revision, expected write range, and external effects near the decision control. A persuasive Agent summary is not a substitute for an accurate target identity.
For remote Mac work, add checks for:
- The correct macOS account and workspace.
- The expected Xcode or desktop-tool project.
- No unrelated user files mounted into the task.
- No shared keychain or credential access beyond policy.
- A cleanup action for temporary files and processes.
- A clear owner for the active session.
The MacPull console can be part of the environment-management path when you need to inspect and control a remote Mac workspace. Keep the approval decision in your Agent platform, though. The machine console should establish or verify the target environment, not become an unstructured substitute for an auditable approval queue.
Forty-eight-hour test: transfer, timeout, and recovery
The next test is not a larger model run. It is failure handling.
Simulate an unavailable reviewer and confirm that a pending request remains visible to another authorized person. Restart the Agent process, restore the task on another worker, and change a tool definition in a test environment. Then check whether the system notices that the saved decision may no longer match the current run.
Freeze critical inputs while approval is pending:
- Prompt version.
- Model identifier.
- Tool schema.
- Repository revision.
- Dataset or experiment-input version.
- Workspace and host assignment.
When the task resumes, compare the current values with the saved values. If the model, prompt, tool schema, repository, or environment changed, require replanning or a new approval. Do not reuse an old approval merely because the tool name is unchanged.
The most important recovery cases are distinct:
- Reviewer unavailable: transfer the queue item to a permitted backup owner.
- Agent process restarted: reload durable state and verify the last completed side effect.
- Worker changed: validate workspace identity and credentials again.
- Tool schema changed: invalidate pending approvals and generate a new request.
- Workspace drifted: stop, inspect the diff, and require a fresh decision.
- Request rejected: terminate safely or create a new plan; never loop as if a connection failed.
When a long task runs on a remote Mac, keep the workspace and task state separate from the interactive connection. A disconnected terminal or browser session should not decide whether the workflow can recover. The task queue must know the status, and the machine must expose enough execution evidence to establish whether a command completed.
Week one: decide what to expand
During the first week, review evidence by task type rather than promoting the Agent because one demonstration looked successful.
Track:
- Why human intervention occurred.
- Approval waiting time.
- Rejection outcomes.
- Duplicate side effects.
- Recovery success.
- Workspace cleanup results.
- Independent reproduction or review of the final result.
- Differences between the requested operation and the observed operation.
Do not convert OpenAI’s internal research measurements into your team’s target metrics. Your evidence must describe your own tools, permissions, workloads, reviewers, and environments.
Expand only when all of these conditions pass:
- State survives process and worker changes.
- Permission boundaries block protected tools before execution.
- Each task maps to the correct isolated workspace.
- Rejected operations do not retry as transient failures.
- Final results receive an independent review or reproduction.
- Remote Mac sessions can be transferred and cleaned up.
- Approval records are linked to the exact task and environment.
If the evidence is mixed, choose one of three controlled outcomes:
- Keep human approval for the current action class.
- Add narrow rules for automatic approval of well-bounded operations.
- Move high-impact work into a more isolated execution environment.
Do not solve repeated queue delays by granting broad permissions. First determine whether the delay comes from poor task grouping, missing workspace information, unclear ownership, or an approval policy that asks humans to inspect too much.
Approval and recovery checklist
Use this checklist before allowing multi-hour research tasks into regular operation:
- [ ] Every tool is classified as read-only, reversible, or high impact.
- [ ] Each high-impact tool pauses before execution.
- [ ] The approval request exposes parameters, target, scope, and side effects.
- [ ] Pending requests are stored outside the researcher’s terminal and chat session.
- [ ] Secrets are excluded from serialized task state.
- [ ] The workflow records model, prompt, tool-schema, repository, and workspace versions.
- [ ] Approved, rejected, and unattended paths have all been tested.
- [ ] A rejection ends safely or produces a new plan.
- [ ] Duplicate external writes have an idempotency strategy.
- [ ] Every parallel Codex task has a named owner and backup owner.
- [ ] Remote Mac tasks use isolated workspaces and explicit cleanup.
- [ ] A worker restart can restore the task without replaying completed side effects.
- [ ] Environment drift invalidates old approvals.
- [ ] Final research output receives independent review or reproduction.
- [ ] Expansion criteria are based on your own run evidence.
A useful score is not a model-quality score. Give the deployment one point for each checked control. If any of the first five controls fail, stop the rollout regardless of the total. If workspace isolation or duplicate-side-effect protection fails, do not add more parallel Agents.
FAQ: takeover decisions in practice
Which research Agent actions should wait for human approval?
Require approval for actions that write to shared repositories, submit experiments, expose data externally, change credentials, consume scarce infrastructure, or create side effects that are difficult to reverse. Read-only queries and disposable local artifacts can usually run automatically. Reversible code changes belong in a conditional approval tier when the workspace, patch scope, and rollback path are visible.
How can an Agent continue after an approval pause?
Persist the pending tool call, task version, workspace identifier, completed steps, and approval result in durable application storage. When an authorized person approves, resume from that saved state rather than replaying the whole conversation. Before resuming, compare the model, prompt, tool schema, repository revision, and execution environment with the values recorded when the task paused.
How should a team assign takeover responsibility across several Codex tasks?
Assign ownership by task, workspace, and risk class instead of using one shared approval queue. Each request should show its target environment, repository revision, requested tool parameters, and expected side effects. Use a secondary authorized reviewer for high-impact actions, and define a handoff rule for absence, timeout, or ownership changes before launching parallel Codex runs.
Can a rejected long-running task on a remote Mac resume safely?
It can resume only when rejection is represented as a deliberate workflow outcome, not as a transient network failure. Keep the workspace isolated, preserve the rejected tool request and reason, and either terminate safely or create a new plan. Re-approve after checking environment drift, repository changes, tool schema changes, and any partial external effects.
Choosing the execution environment
A local developer Mac is convenient for a short trial, but it becomes a weak control point when several Agents need independent workspaces, durable sessions, and separate credentials. Shared machines create hidden coupling: one task can consume resources, alter project state, retain credentials, or leave processes behind for the next task.
A cloud Mac is a better fit when the workflow needs macOS, Xcode, desktop tools, or a long-lived remote session, provided that each task has an identifiable workspace and the approval queue records the exact host. It is not automatically the right choice for every workload. Purely Linux-compatible, stable, high-volume jobs may fit another execution environment better, while a team that needs permanent heavy workloads may prefer owned hardware after measuring utilization.
Before creating a standing remote Mac pool, complete one isolated pause-and-recovery cycle. Then review the remote Mac help resources for environment setup and operational constraints. The decision should follow observed task patterns, not the assumption that every Agent needs a dedicated Mac.
The current shared-development approach has three recurring weaknesses: it ties task recovery to a person’s active machine, makes parallel approvals harder to match with the correct workspace, and increases the chance that temporary files or credentials survive between runs. Renting MacPull capacity can provide a cleaner temporary execution boundary for validation, macOS-specific tasks, or overflow research jobs without making a permanent hardware purchase before your evidence justifies it.
If your team has already passed the first pause, rejection, and restart tests, use the next step to inventory which tasks truly need isolated macOS environments. For temporary experiments and controlled remote execution, that inventory will tell you whether a MacPull workspace is a better fit than keeping every long-running Agent attached to a shared developer machine.
FAQ
Which research Agent actions should wait for human approval?
Require approval for actions that write to shared repositories, submit experiments, expose data externally, change credentials, consume scarce infrastructure, or create side effects that are difficult to reverse. Read-only queries and disposable local artifacts can usually run automatically. Reversible code changes belong in a conditional approval tier when the workspace, patch scope, and rollback path are visible.
How can an Agent continue after an approval pause?
Persist the pending tool call, task version, workspace identifier, completed steps, and approval result in durable application storage. When an authorized person approves, resume from that saved state rather than replaying the whole conversation. Before resuming, compare the model, prompt, tool schema, repository revision, and execution environment with the values recorded when the task paused.
How should a team assign takeover responsibility across several Codex tasks?
Assign ownership by task, workspace, and risk class instead of using one shared approval queue. Each request should show its target environment, repository revision, requested tool parameters, and expected side effects. Use a secondary authorized reviewer for high-impact actions, and define a handoff rule for absence, timeout, or ownership changes before launching parallel Codex runs.
Can a rejected long-running task on a remote Mac resume safely?
It can resume only when rejection is represented as a deliberate workflow outcome, not as a transient network failure. Keep the workspace isolated, preserve the rejected tool request and reason, and either terminate safely or create a new plan. Re-approve after checking environment drift, repository changes, tool schema changes, and any partial external effects.