Codex stuck on Awaiting approval: what it means and how to fix it
Codex shows Awaiting approval when a command needs your OK. Find the request, clear the queue, update, restart safely, and know next time it is blocked on you.

"Awaiting approval" means Codex stopped before a step it needs you to allow, and it will not move until someone answers. Often the request is sitting in the chat and you have not seen it. Sometimes the label is there but the request cannot be answered, which is a bug. The fixes below go from the cheap checks to a restart.
Key takeaways
- Look for the request first. OpenAI's own first step for a stuck chat is to "check whether Codex is waiting for an approval."
- Codex can queue several approvals. One yes clears one request, so keep answering until the chat moves.
- The February 2026 deadlock (openai/codex#10760) came from parallel tool calls and was fixed in app 260210.1703 and extension 0.4.73. Similar reports were still open as of Nov 13, 2026.
- Restart last. A restart can end the pending command and lose the turn, so check what already ran before you send it again.
- To know next time, turn on approval-requested in the CLI, add a PermissionRequest hook, or send the request to your phone.
What Awaiting approval means
Codex runs with an approval policy. OpenAI's config reference describes approval_policy as the setting that "controls when Codex pauses for approval before executing commands." With on-request, Codex asks before a step that needs more access than its sandbox gives it. OpenAI's hooks page names a shell escalation and a managed-network approval as examples. Until someone answers, the turn does not continue. Codex's own prompt does not treat an unanswered request as a yes.
Where you see it depends on where Codex runs:
| Where you run Codex | What it looks like |
|---|---|
| Desktop app (Mac or Windows) | An Awaiting approval badge on the chat in the sidebar, and an approval card in the chat with the options |
| IDE extension (VS Code, Cursor) | The same approval card in the Codex panel |
| CLI | No badge. The terminal shows the approval prompt with its options and waits |
Fix it, in this order
1. Find the request
Scroll to the bottom of the chat and look for the approval card. It is easy to miss. A post on the OpenAI forum (May 17, 2026) says the approval button "can appear small and low on the screen." If you run several chats at once, the sidebar badge is how you tell which one needs you. An open bug report (#56811, Oct 24, 2026) says the sidebar can leave that label off, so also open any chat that still looks busy. Checking for a pending approval is also the first item on OpenAI's own list for a stuck chat.
2. Answer every queued request
Codex can ask for more than one approval in a row, and you answer them one at a time. A reply on the OpenAI forum thread about stuck commands (Feb 12, 2026) puts it simply: one command needs one yes, and "if you continue giving it approval, you will eventually get to the last one and then Codex will resume work." If the label stays after one answer, look for the next card before you decide it is broken.
3. Update the app or the extension
The best-known version of this bug is openai/codex#10760, an Awaiting approval prompt that could not be approved (77 reactions). Pressing Yes did nothing. A Codex maintainer explained the cause in the thread: "The gpt-5.3-codex model supports parallel tool calling, which means that it can ask the harness to run multiple tools at a time. If one or more of those tool calls require approval, the Codex UI layer can get into a deadlock situation." The fixes shipped in Codex app 260210.1703 and in extension 0.5.73 (pre-release), then 0.4.73 (mainline). The issue was closed on Feb 11, 2026.
If you are on an older build, update first. It is not a guarantee. As of Nov 13, 2026 these reports with the same symptoms were open:
- #48930: a desktop chat stuck waiting on approval with no approval controls and no message box.
- #54109: the badge stays after you accept.
- #57477: a task awaiting approval with no controls to cancel it.
4. Reset the view without restarting
Two workarounds from #10760. Neither is official.
- Switch to another chat and back. A Codex maintainer suggested it. The person who reported the bug said it did not help them.
- In VS Code, move the Codex panel somewhere else (the right sidebar, the left sidebar or the editor area), then type "Continue". One user found this reset the panel. Another said it also stopped the agent, so you have to tell it to keep going.
5. Check the terminal, then start smaller
The next steps on OpenAI's troubleshooting page are to "open the terminal and run a basic command like git status" and to "start a new chat with a smaller, more focused prompt." In a forum reply on Nov 11, 2026, OpenAI support repeated two of these steps (check for a pending approval, then try a new chat with a smaller task) and linked the guide.
6. Restart the app, carefully
Quit Codex fully and open it again. In one report from Oct 21, 2026, on #48930, switching chats did nothing, but a full quit and relaunch brought back the approval buttons and the message box. The same report says the pending tool call ended as aborted, not completed. In the original #10760 report, the restart deleted the reasoning so far, and the user had to send the last message again.
So before you ask Codex to repeat the step, check what actually ran: git status, the files it touched, the server it was about to reach. A migration or a deploy should not run twice because the UI lost track.
For a terminal that seems stuck, the troubleshooting page says to close the terminal panel first, reopen it and run a basic command again. If it is still stuck, it says to "wait until your active chats are complete and restart the app."
7. If it keeps happening
- Ask Codex not to run tool calls in parallel. A user on #10760 said this stopped the problem for them before the fix shipped. It is a prompt, not a setting.
- Send feedback from the app. Type
/in the composer, and you can include the current chat. OpenAI support asks for which one you use (desktop app, IDE extension or CLI), its version, and the exact error. - Search the openai/codex issues for your symptom and add your version to the matching report.
One thing not to do
Several people in #10760 switched Codex to full access so it would stop asking. The label goes away because nothing asks any more. That also means a git push --force or an rm -rf runs with nobody looking. If the prompts themselves are the problem, cut them with rules instead. The Codex approval and sandbox settings guide covers the options.
On your phone
If you approve from Codex in the ChatGPT phone app and the request never shows up, OpenAI's remote connections page says to confirm that the phone and the host use the same ChatGPT account and workspace, then scan the QR code again or restart setup from the host. In a workspace, an admin may need to turn on Remote Control access. The host also has to stay awake and online. One open report (#39346, Aug 19, 2026) describes a phone that shows an approval waiting banner with no card to act on.
How to know when Codex is blocked on you
Plenty of stuck chats are not bugs. Codex asked, and you were in another tab or you had walked away for a coffee. These are the ways to find out, as of Nov 13, 2026.
The CLI's own alert. Add approval-requested to notifications in the [tui] table of ~/.codex/config.toml:
[tui]
notifications = ["agent-turn-complete", "approval-requested"]
notification_method = "auto"
notification_condition = "always"With auto, Codex tries OSC 9, which some terminals show as a desktop notification, and falls back to the terminal bell. notification_condition defaults to unfocused; always alerts you even while the terminal is in front. The top-level notify program does not help here: OpenAI's advanced config page says it currently fires only for agent-turn-complete.
The desktop app's settings. OpenAI's notifications page says the desktop app has separate controls to turn permission and question notifications on or off, and your OS may ask you to allow notifications for the app. The IDE extension has no notification controls of its own.
A PermissionRequest hook. Codex runs PermissionRequest "when Codex is about to ask for approval." A hook can allow, deny, or decline to decide and let the normal prompt appear, so it is also a place to send yourself a message. The Codex hooks guide lists the events and how to set them up.
The ChatGPT phone app. Codex Remote can "approve commands and other actions" and notify you when a task "needs your attention." It needs the ChatGPT desktop app on a Mac or Windows host that stays awake and online, and OpenAI says you cannot set it up from the Codex CLI or the IDE extension. A report that Remote Control pushes do not arrive on iOS (#32908, 25 reactions) was open on Nov 13, 2026.
All four tell you once. Miss that one banner, bell or push, and Codex waits until you happen to look. For every alert option side by side, see Codex notifications.
Send the request to your phone, and get a call if you miss it
Pushary handles every request the same way: ask, wait, escalate, record.
- Ask. Run
npx pushary@latest setupand pick Codex. It installs Codex'sPermissionRequestandPreToolUsehooks (Codex 0.122 or newer), which the CLI and Codex in the ChatGPT desktop app both run. When a command needs you, your phone shows the command itself, so you know which agent is asking and for what. Rules you set clear the safe commands without asking you. - Wait. Pushary installs its Codex hooks with a 180-second timeout, so a question waits about 170 seconds for your answer. If nobody answers, a
PermissionRequestgoes back to Codex's own prompt and aPreToolUsequestion is refused, unless a rule you wrote decides on timeout. Without such a rule, silence never turns into a yes. - Escalate. If the push is still unanswered after your Call after time, Pushary phones you, says what Codex wants to run, and takes your yes or no on the call. It reads the request back before a yes counts. For Codex, the phone rings after 1 minute by default, because the call has to fit inside that wait. Calls ring only inside your calling hours (08:00 to 22:00 by default). A call that falls outside them moves to the start of your hours if the request is still waiting then, which a Codex request with this short a wait rarely is. At most 5 calls in any 24 hours by default, and never once the request is answered. Calls are a beta: numbers in Germany, and the calls are in English. If you miss the call too, nothing is approved, unless a rule's timeout action is auto-approve.
- Record. Every answer is kept, including the ones given on a call.
Calls stay off until you turn them on. In Settings under Phone calls, add your number, answer the test call to confirm it, agree to calls from an AI voice, and turn calls on. Leave "Call sooner when an agent waits less" on, as it is by default, so Codex calls can ring in time. Calls use the call minutes in your plan: 10 a month on Agent, 20 on Agent Pro, 60 on Team, and 5 during the trial. The Codex phone call page has the rest. If you run Claude Code as well, the same setup covers it: Claude Code phone call.
Pushary does not repair a missing approval card. If the Codex UI itself is stuck, the steps at the top of this page are still the fix. What it changes is how long a real request sits there before you hear about it.
Frequently asked questions
Was the Codex approval deadlock fixed?
The February 2026 one was. OpenAI traced it to parallel tool calls in gpt-5.3-codex and shipped fixes in Codex app 260210.1703 and extension 0.4.73. Reports with the same symptoms, such as a badge that stays after you approve, were still open on GitHub as of Nov 13, 2026. Update first, then work through the other checks.
Does restarting the Codex app lose the chat's progress?
It can. In openai/codex#10760 a restart deleted the reasoning so far and the user had to send the last message again. In a later report, a full restart ended the pending tool call as aborted, not completed. Check what already ran, for example with git status, before you ask Codex to repeat a step.
Which Codex chat is the one blocked on me?
In the desktop app, the sidebar puts an Awaiting approval badge on it. An open bug report (openai/codex#56811) says that label can be missing, so also open any chat that still looks busy. In the CLI, each session asks in its own terminal, so check the one that went quiet.
Is full access a safe way around Awaiting approval?
No. Full access stops the prompt by removing the check, so a force push or a delete runs with nobody looking. If the prompts come too often, write rules that approve the routine commands and keep asking about the risky ones.