{"id":3547,"date":"2026-05-20T15:41:37","date_gmt":"2026-05-20T15:41:37","guid":{"rendered":"https:\/\/aiopsschool.com\/blog\/?p=3547"},"modified":"2026-05-20T15:41:39","modified_gmt":"2026-05-20T15:41:39","slug":"codex-cli-permissions-sandboxing-and-account-switching-explained","status":"publish","type":"post","link":"https:\/\/aiopsschool.com\/blog\/codex-cli-permissions-sandboxing-and-account-switching-explained\/","title":{"rendered":"Codex CLI Permissions, Sandboxing, and Account Switching Explained"},"content":{"rendered":"\n<ol class=\"wp-block-list\">\n<li><strong>How to Use Codex CLI Safely Without Losing Context<\/strong><\/li>\n\n\n\n<li><strong>Codex CLI Permissions, Sandboxing, and Account Switching Explained<\/strong><\/li>\n\n\n\n<li><strong>Stop Typing \u201cYes\u201d in Codex: A Practical Guide to Approvals and Sandboxes<\/strong><\/li>\n\n\n\n<li><strong>How to Give Codex the Right Access Without Going Full YOLO<\/strong><\/li>\n\n\n\n<li><strong>Codex CLI Workflow: Workspace Write, Extra Directories, Resume, and Login Switching<\/strong><\/li>\n<\/ol>\n\n\n\n<p><strong>Stop Typing \u201cYes\u201d in Codex: A Practical Guide to Approvals and Sandboxes<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Stop Typing \u201cYes\u201d in Codex: A Practical Guide to Approvals, Sandboxes, Extra Directories, and Account Switching<\/h1>\n\n\n\n<p>When you start using Codex CLI seriously, you quickly run into a few practical questions:<\/p>\n\n\n\n<p>\u201cHow do I stop Codex from asking yes, yes, yes again and again?\u201d<\/p>\n\n\n\n<p>\u201cHow do I allow it to write files in <code>\/tmp<\/code> or another folder?\u201d<\/p>\n\n\n\n<p>\u201cWhat if one Codex account hits the usage limit and I need to switch accounts?\u201d<\/p>\n\n\n\n<p>\u201cAnd most importantly: will I lose my current context?\u201d<\/p>\n\n\n\n<p>This tutorial walks through all of those topics in a simple, practical way.<\/p>\n\n\n\n<p>Codex CLI has two major controls you should understand: <strong>sandbox mode<\/strong> and <strong>approval mode<\/strong>. The sandbox controls what Codex can access, and the approval mode controls when Codex pauses to ask you before running something. OpenAI\u2019s Codex docs describe <code>--sandbox workspace-write<\/code> with <code>--ask-for-approval on-request<\/code> as the common \u201cAuto\u201d setup: Codex can read, edit, and run commands inside the working directory, but asks before going outside the workspace or doing things like network access. (<a href=\"https:\/\/developers.openai.com\/codex\/agent-approvals-security\">OpenAI Developers<\/a>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1. The basic Codex command<\/h2>\n\n\n\n<p>The simplest way to start Codex is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex\n<\/code><\/pre>\n\n\n\n<p>This opens the interactive Codex terminal interface.<\/p>\n\n\n\n<p>But if you want Codex to edit code in your current project folder without constantly asking for approval, use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write --ask-for-approval on-request\n<\/code><\/pre>\n\n\n\n<p>This is a good everyday setup.<\/p>\n\n\n\n<p>It means:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Codex can work inside the current project folder.\nCodex can edit files there.\nCodex can run commands there.\nCodex will ask before doing higher-risk things outside that boundary.\n<\/code><\/pre>\n\n\n\n<p>That is usually much better than blindly approving everything.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. What <code>--sandbox workspace-write<\/code> means<\/h2>\n\n\n\n<p>This flag:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--sandbox workspace-write\n<\/code><\/pre>\n\n\n\n<p>means Codex can write inside the active workspace.<\/p>\n\n\n\n<p>For example, if you are inside this folder:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd ~\/projects\/my-app\ncodex --sandbox workspace-write\n<\/code><\/pre>\n\n\n\n<p>Codex can usually work inside:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/projects\/my-app\n<\/code><\/pre>\n\n\n\n<p>It can do things like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>edit src\/index.js\ncreate tests\/app.test.js\nrun npm test\nrun pytest\nupdate package files\n<\/code><\/pre>\n\n\n\n<p>But it should not freely modify random files elsewhere on your machine.<\/p>\n\n\n\n<p>So this is allowed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/projects\/my-app\/src\/main.py\n<\/code><\/pre>\n\n\n\n<p>But this may require permission:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/Documents\/another-project\/file.py\n\/etc\/hosts\n~\/.ssh\/config\n<\/code><\/pre>\n\n\n\n<p>OpenAI\u2019s docs describe the sandbox as the boundary that lets Codex act autonomously without giving it unrestricted access to your machine. (<a href=\"https:\/\/developers.openai.com\/codex\/concepts\/sandboxing?utm_source=chatgpt.com\">OpenAI Developers<\/a>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. What <code>--ask-for-approval<\/code> means<\/h2>\n\n\n\n<p>The approval mode controls when Codex asks you before running a command.<\/p>\n\n\n\n<p>Common options are:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--ask-for-approval on-request\n<\/code><\/pre>\n\n\n\n<p>and:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--ask-for-approval never\n<\/code><\/pre>\n\n\n\n<p>OpenAI\u2019s CLI reference lists <code>--ask-for-approval<\/code> values including <code>untrusted<\/code>, <code>on-request<\/code>, and <code>never<\/code>. It also notes that <code>on-request<\/code> is preferred for interactive runs, while <code>never<\/code> is more suitable for non-interactive runs. (<a href=\"https:\/\/developers.openai.com\/codex\/cli\/reference\">OpenAI Developers<\/a>)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Recommended for normal use<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write --ask-for-approval on-request\n<\/code><\/pre>\n\n\n\n<p>This is the best balance.<\/p>\n\n\n\n<p>Codex can work normally inside your project, but if it needs something more sensitive, it asks.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fewer prompts<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write --ask-for-approval never\n<\/code><\/pre>\n\n\n\n<p>This means Codex will not stop to ask you for approval.<\/p>\n\n\n\n<p>But there is a catch: it still must stay within the sandbox. If something is blocked, Codex may fail instead of asking.<\/p>\n\n\n\n<p>So use <code>never<\/code> when you already know the permissions are enough.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. How to avoid typing <code>yes<\/code> again and again<\/h2>\n\n\n\n<p>Do <strong>not<\/strong> solve this by piping <code>yes<\/code> into Codex:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yes | codex\n<\/code><\/pre>\n\n\n\n<p>That is a bad idea because it can approve things you did not actually inspect. Tiny foot-gun, huge boot.<\/p>\n\n\n\n<p>Instead, configure approvals properly.<\/p>\n\n\n\n<p>For normal work:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write --ask-for-approval on-request\n<\/code><\/pre>\n\n\n\n<p>For trusted local work where you do not want prompts:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write --ask-for-approval never\n<\/code><\/pre>\n\n\n\n<p>For one-shot automation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex exec --sandbox workspace-write --ask-for-approval never \"Fix the failing tests\"\n<\/code><\/pre>\n\n\n\n<p>The important idea is this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Do not auto-type yes.\nUse the approval policy designed for this.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. How to give Codex access to another folder, such as <code>\/tmp<\/code><\/h2>\n\n\n\n<p>Sometimes Codex needs to write outside your project folder.<\/p>\n\n\n\n<p>For example, it may need:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/tmp\n~\/scratch\n~\/projects\/shared-library\n~\/Downloads\n<\/code><\/pre>\n\n\n\n<p>The clean way to grant extra access is <code>--add-dir<\/code>.<\/p>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write --ask-for-approval on-request --add-dir \/tmp\n<\/code><\/pre>\n\n\n\n<p>Now Codex can work inside your current project folder <strong>and<\/strong> <code>\/tmp<\/code>.<\/p>\n\n\n\n<p>For multiple folders:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write \\\n  --ask-for-approval on-request \\\n  --add-dir \/tmp \\\n  --add-dir ~\/scratch \\\n  --add-dir ~\/projects\/shared-library\n<\/code><\/pre>\n\n\n\n<p>OpenAI\u2019s CLI reference says <code>--add-dir<\/code> grants additional directories write access alongside the main workspace, and you can repeat it for multiple paths. (<a href=\"https:\/\/developers.openai.com\/codex\/cli\/reference\">OpenAI Developers<\/a>)<\/p>\n\n\n\n<p>This is the best way to give Codex more room without removing all safety boundaries.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">6. How to give access in advance<\/h2>\n\n\n\n<p>Yes, you can give access in advance.<\/p>\n\n\n\n<p>Use this pattern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write \\\n  --ask-for-approval on-request \\\n  --add-dir \/tmp \\\n  --add-dir ~\/projects \\\n  --add-dir ~\/Downloads\n<\/code><\/pre>\n\n\n\n<p>This tells Codex:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>You may write inside the current project.\nYou may also write inside \/tmp.\nYou may also write inside ~\/projects.\nYou may also write inside ~\/Downloads.\nAsk me if you need anything else.\n<\/code><\/pre>\n\n\n\n<p>For a smoother but still bounded setup:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write \\\n  --ask-for-approval never \\\n  --add-dir \/tmp \\\n  --add-dir ~\/scratch\n<\/code><\/pre>\n\n\n\n<p>This means:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Do not ask me.\nWork only inside the allowed areas.\n<\/code><\/pre>\n\n\n\n<p>That is useful when you want Codex to complete a task without stopping every few minutes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">7. How to make these permissions permanent<\/h2>\n\n\n\n<p>Typing long flags every time gets annoying. Very relatable. The terminal is already enough of a little goblin.<\/p>\n\n\n\n<p>You can put defaults in:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>~\/.codex\/config.toml\n<\/code><\/pre>\n\n\n\n<p>Example config:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sandbox_mode = \"workspace-write\"\napproval_policy = \"on-request\"<\/code><\/pre>\n\n\n<p>[sandbox_workspace_write]<\/p>\n\n\n\n<p>writable_roots = [ &#8220;\/tmp&#8221;, &#8220;\/home\/YOUR_USER\/scratch&#8221;, &#8220;\/home\/YOUR_USER\/projects\/shared-library&#8221; ]<\/p>\n\n\n\n<p>Replace <code>YOUR_USER<\/code> with your real username.<\/p>\n\n\n\n<p>The Codex config reference documents <code>sandbox_workspace_write.writable_roots<\/code> as additional writable roots when <code>sandbox_mode = \"workspace-write\"<\/code>. (<a href=\"https:\/\/developers.openai.com\/codex\/config-reference\">OpenAI Developers<\/a>)<\/p>\n\n\n\n<p>You can also enable network access in this section if your workflow needs it:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sandbox_mode = \"workspace-write\"\napproval_policy = \"on-request\"<\/code><\/pre>\n\n\n<p>[sandbox_workspace_write]<\/p>\n\n\n\n<p>network_access = true writable_roots = [ &#8220;\/tmp&#8221;, &#8220;\/home\/YOUR_USER\/scratch&#8221; ]<\/p>\n\n\n\n<p>OpenAI\u2019s docs note that <code>network_access<\/code> allows outbound network access inside the <code>workspace-write<\/code> sandbox. (<a href=\"https:\/\/developers.openai.com\/codex\/config-reference\">OpenAI Developers<\/a>)<\/p>\n\n\n\n<p>Use network access carefully, especially if your repo contains secrets or production credentials.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Should you use <code>--yolo<\/code>?<\/h2>\n\n\n\n<p>Codex has a full bypass mode:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --dangerously-bypass-approvals-and-sandbox\n<\/code><\/pre>\n\n\n\n<p>There is also an alias:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --yolo\n<\/code><\/pre>\n\n\n\n<p>This disables approvals and sandboxing.<\/p>\n\n\n\n<p>OpenAI\u2019s CLI reference describes this as running commands without approvals or sandboxing, and says it should only be used inside an externally hardened environment. (<a href=\"https:\/\/developers.openai.com\/codex\/cli\/reference\">OpenAI Developers<\/a>)<\/p>\n\n\n\n<p>In plain English:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Use this only inside a disposable VM, dev container, or isolated machine.\nDo not use this casually on your main laptop.\n<\/code><\/pre>\n\n\n\n<p>A safer alternative is almost always:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write \\\n  --ask-for-approval never \\\n  --add-dir \/tmp \\\n  --add-dir ~\/scratch\n<\/code><\/pre>\n\n\n\n<p>That gives Codex useful freedom without handing over your whole machine.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">9. How to check what Codex can access<\/h2>\n\n\n\n<p>Inside Codex, run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/status\n<\/code><\/pre>\n\n\n\n<p>This shows useful information about the current session.<\/p>\n\n\n\n<p>OpenAI\u2019s docs mention that <code>\/status<\/code> can show which directories are in the workspace. They also note that the workspace can include the current directory and temporary directories like <code>\/tmp<\/code>, depending on setup. (<a href=\"https:\/\/developers.openai.com\/codex\/agent-approvals-security\">OpenAI Developers<\/a>)<\/p>\n\n\n\n<p>So when in doubt, start Codex and run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/status\n<\/code><\/pre>\n\n\n\n<p>Then verify whether <code>\/tmp<\/code> or your extra folder is listed.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">10. What to do when one Codex account hits the usage limit<\/h2>\n\n\n\n<p>Sometimes your current Codex account hits its usage limit, and you need to login with another account.<\/p>\n\n\n\n<p>The scary question is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>If I logout and login again, will I lose my Codex context?\n<\/code><\/pre>\n\n\n\n<p>Usually, no.<\/p>\n\n\n\n<p>Codex sessions are stored locally and can be resumed. The Codex docs say <code>codex resume<\/code> can reopen previous interactive sessions, and a resumed run keeps the original transcript, plan history, and approvals. (<a href=\"https:\/\/developers.openai.com\/codex\/cli\/features\">OpenAI Developers<\/a>)<\/p>\n\n\n\n<p>So the safe flow is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. Save or copy your session ID.\n2. Exit Codex.\n3. Logout.\n4. Login with the other account.\n5. Resume the previous session.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">11. Safe account-switching workflow<\/h2>\n\n\n\n<p>Inside your current Codex session, run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/status\n<\/code><\/pre>\n\n\n\n<p>Copy the session ID.<\/p>\n\n\n\n<p>Then exit Codex:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/exit\n<\/code><\/pre>\n\n\n\n<p>Now logout:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex logout\n<\/code><\/pre>\n\n\n\n<p>Then login with your other account:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex login\n<\/code><\/pre>\n\n\n\n<p>The Codex CLI reference says <code>codex login<\/code> authenticates the CLI with a ChatGPT account, API key, or access token, and <code>codex logout<\/code> removes saved credentials. (<a href=\"https:\/\/developers.openai.com\/codex\/cli\/reference\">OpenAI Developers<\/a>)<\/p>\n\n\n\n<p>After logging in again, resume:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex resume\n<\/code><\/pre>\n\n\n\n<p>Or resume the latest session in the current working directory:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex resume --last\n<\/code><\/pre>\n\n\n\n<p>Or resume a specific session:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex resume &lt;SESSION_ID&gt;\n<\/code><\/pre>\n\n\n\n<p>The CLI reference documents <code>codex resume --last<\/code>, <code>codex resume --all<\/code>, and <code>codex resume &lt;SESSION_ID&gt;<\/code>. (<a href=\"https:\/\/developers.openai.com\/codex\/cli\/reference\">OpenAI Developers<\/a>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Extra-safe handoff before switching accounts<\/h2>\n\n\n\n<p>Before you logout, it is smart to ask Codex to create a handoff file.<\/p>\n\n\n\n<p>Inside Codex, say:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create a file named CODEX_HANDOFF.md summarizing:\n- current task\n- files changed\n- decisions made\n- commands already run\n- remaining TODOs\n- exact next command to continue\n<\/code><\/pre>\n\n\n\n<p>Then in your terminal, save your current diff:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>git status\ngit diff &gt; codex-wip.patch\n<\/code><\/pre>\n\n\n\n<p>This gives you a backup even if something weird happens.<\/p>\n\n\n\n<p>Recommended full sequence:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Inside Codex\n\/status\n<\/code><\/pre>\n\n\n\n<p>Copy the session ID.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Create CODEX_HANDOFF.md with the current task summary and next steps.\n<\/code><\/pre>\n\n\n\n<p>Then:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Terminal\ngit status\ngit diff &gt; codex-wip.patch\n\ncodex logout\ncodex login\n\ncodex resume --last\n<\/code><\/pre>\n\n\n\n<p>If <code>--last<\/code> does not pick the right session:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex resume --all\n<\/code><\/pre>\n\n\n\n<p>Or:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex resume &lt;SESSION_ID&gt;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">13. Recommended commands for common situations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Normal daily coding<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write --ask-for-approval on-request\n<\/code><\/pre>\n\n\n\n<p>Use this when you want Codex to edit your project but still ask before risky actions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Daily coding with <code>\/tmp<\/code> access<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write \\\n  --ask-for-approval on-request \\\n  --add-dir \/tmp\n<\/code><\/pre>\n\n\n\n<p>Use this when tools need temporary files.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Trusted repo with fewer prompts<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write \\\n  --ask-for-approval never \\\n  --add-dir \/tmp\n<\/code><\/pre>\n\n\n\n<p>Use this when you trust the repo and want fewer interruptions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Extra writable project folders<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write \\\n  --ask-for-approval on-request \\\n  --add-dir ~\/projects\/shared-library \\\n  --add-dir ~\/scratch\n<\/code><\/pre>\n\n\n\n<p>Use this when Codex needs to modify a shared dependency or scratch folder.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Resume after account switch<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>codex resume --last\n<\/code><\/pre>\n\n\n\n<p>Or:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex resume --all\n<\/code><\/pre>\n\n\n\n<p>Or:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex resume &lt;SESSION_ID&gt;\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Full access mode<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --yolo\n<\/code><\/pre>\n\n\n\n<p>Use only inside a disposable VM\/container. Not your main laptop. Seriously, do not let the robot do interpretive dance in your home directory.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">14. My recommended setup<\/h2>\n\n\n\n<p>For most developers, I recommend this command:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write \\\n  --ask-for-approval on-request \\\n  --add-dir \/tmp\n<\/code><\/pre>\n\n\n\n<p>And this config:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sandbox_mode = \"workspace-write\"\napproval_policy = \"on-request\"<\/code><\/pre>\n\n\n<p>[sandbox_workspace_write]<\/p>\n\n\n\n<p>writable_roots = [ &#8220;\/tmp&#8221;, &#8220;\/home\/YOUR_USER\/scratch&#8221; ]<\/p>\n\n\n\n<p>This gives Codex enough freedom to be useful, while still keeping boundaries.<\/p>\n\n\n\n<p>If you want fewer prompts in trusted projects, use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write \\\n  --ask-for-approval never \\\n  --add-dir \/tmp\n<\/code><\/pre>\n\n\n\n<p>But I would avoid <code>--yolo<\/code> unless you are working inside a disposable dev container or VM.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">15. Final cheat sheet<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># Start Codex safely with write access to current project\ncodex --sandbox workspace-write --ask-for-approval on-request\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Allow Codex to also write to \/tmp\ncodex --sandbox workspace-write --ask-for-approval on-request --add-dir \/tmp\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Allow multiple folders\ncodex --sandbox workspace-write \\\n  --ask-for-approval on-request \\\n  --add-dir \/tmp \\\n  --add-dir ~\/scratch \\\n  --add-dir ~\/projects\/shared-library\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Reduce approval prompts\ncodex --sandbox workspace-write --ask-for-approval never --add-dir \/tmp\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Check current session and workspace info\n\/status\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Logout and login with another account\ncodex logout\ncodex login\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Resume latest session\ncodex resume --last\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Resume from any directory\ncodex resume --all\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Resume exact session\ncodex resume &lt;SESSION_ID&gt;\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code># Dangerous full-access mode \u2014 only in VM\/container\ncodex --yolo\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>The best Codex workflow is not \u201capprove everything.\u201d It is giving Codex the right amount of access before it starts.<\/p>\n\n\n\n<p>Use <code>workspace-write<\/code> for normal coding. Use <code>--add-dir<\/code> when Codex needs extra folders like <code>\/tmp<\/code>. Use <code>on-request<\/code> when you still want safety checks. Use <code>never<\/code> when the task is trusted and bounded. Use <code>codex resume<\/code> when switching accounts so you do not lose context.<\/p>\n\n\n\n<p>The practical default is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>codex --sandbox workspace-write --ask-for-approval on-request --add-dir \/tmp\n<\/code><\/pre>\n\n\n\n<p>That setup is boring in the best way: powerful enough to get real coding done, but not wild enough to turn your laptop into a crime scene.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Stop Typing \u201cYes\u201d in Codex: A Practical Guide to Approvals and Sandboxes Stop Typing \u201cYes\u201d in Codex: A Practical Guide [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3547","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/3547","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=3547"}],"version-history":[{"count":1,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/3547\/revisions"}],"predecessor-version":[{"id":3548,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/3547\/revisions\/3548"}],"wp:attachment":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=3547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=3547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=3547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}