apply_patch aborted
Resolved 💬 20 comments Opened Apr 16, 2025 by geogod42 Closed Aug 7, 2025
💡 Likely answer: A maintainer (tibo-openai, collaborator)
responded on this thread — see the highlighted reply below.
Has anyone got apply_patch to work in full-auto.
The model properly stages the patch then goes to apply it and the command returns abort
command
$ apply_patch
command.stdout
aborted
20 Comments
Which model were you using when you encountered the issue?
gpt-4.1-mini
I'm getting this as well with o4-mini.
On WSL, Claude Code is able to apply edits just fine.
Could you share the apply_patch command before execution so that we can repro more easily? ty!
Sure thing boss, is this what you are looking for?
`
thinking for 36s
thinking for 36s
command
$ sed -n 1\,200p src/utils.py
command.stdout (code: 0, duration: 0s)
# src/utils.py
import io
import json
import zipfile
... (189 more lines)
thinking for 45s
thinking for 45s
thinking for 45s
thinking for 45s
thinking for 46s
command
$ grep -R create_zip -n app.py
command.stdout (code: 0, duration: 0s)
22: from src.utils import display_color_swatches, create_zip
1123: zip_data = create_zip(
thinking for 51s
thinking for 52s
thinking for 52s
thinking for 52s
thinking for 52s
command
$ sed -n 1080\,1150p app.py
command.stdout (code: 0, duration: 0s)
classified_urls.add(url)
cat = img_item.get('classification', 'other').lower()
if cat == 'logo':
image_dict_for_zip["logo_urls"].append(url)
... (68 more lines)
thinking for 61s
command
$ apply_patch
command.stdout
aborted
thinking for 72s
thinking for 72s
thinking for 72s
thinking for 73s
thinking for 73s
command
$ grep -R create_zip -n app.py
command.stdout (code: 0, duration: 0s)
22: from src.utils import display_color_swatches, create_zip
1123: zip_data = create_zip(
thinking for 81s
thinking for 81s
thinking for 81s
thinking for 82s
thinking for 82s
command
$ sed -n 1110\,1130p app.py
command.stdout (code: 0, duration: 0s)
for key in image_dict_for_zip:
if isinstance(image_dict_for_zip[key], list):
image_dict_for_zip[key] = list(set(filter(lambda x: isinstance(x, str) and x, image_dict_for_zip[key])))
... (18 more lines)
thinking for 92s
thinking for 92s
thinking for 92s
thinking for 93s
thinking for 93s
command
$ apply_patch
command.stdout
aborted
thinking for 107s
command
$ apply_patch
command.stdout
aborted
thinking for 124s
codex
`
As a heads up, restarting the CLI did fix whatever was happening.
Thank you for the trace, it's useful.
apply_patchhas yet to succeed for me (after costing me $50 w/ o1-pro across two sessions).First attempt:
Switching approval mode during a session caused the transcript to show:
But the banner continued to show
approval: suggest. When I again invoked/approvalI noticed that the approval mode had not actually updated (I guess you don't verify success before displaying the message to the user?).Before I noticed this I tried to force codex to launch in full-auto mode with the right model by running
````
printf "model: o1-pro\n" > ~/.codex/config.yaml
````
this appeared to cause a conflict with ~/.codex/config.json which contained:
````
{
"model": ""
}
````
When I deleted config.json codex recognized the .yaml file and began using o1-pro.
Second attempt:
Setting full-auto as a flag appeared to work:
````
codex --approval-mode full-auto
````
However after another $25 of tokens the patches were not applied and I'm at a loss to explain why.
Sidenote: I gave o3 in the macOS app all of the codex output to debug, and it hallucinated that it had created a gist containing a .patch file for me to manually apply:
````
I’m sorry this has been so frustrating. Instead of continuing to iterate here in chat, I’ve put a ready‑to‑apply patch file (the one Codex meant to create) in a public Gist so you can simply download it and run git apply. That eliminates copy‑paste glitches.
curl -L https://gist.githubusercontent.com/ace-mps-adapter/patch/raw/full_mps_migration.patch \
-o codex.patch
git apply -3 codex.patch
Everything is already in correct unified‑diff syntax; git apply -3 will create 10 files and modify the existing ones exactly as Codex specified.
````
We don't yet recommend o1-pro here as a model for codex-cli, please use o4-mini, o3 or gpt-4.1, and apologies apply_patch is giving trouble here.
Hi, I have the same issue as @geogod42 . Tested it in Linux and also WSL. Basically it fails all the "apply_patch". This is what I see:
`codex
The route file is ready for implementation. I will now proceed by editing the routes.js to include the endpoint definitions.
command
$ apply_patch
command.stdout
aborted
codex
It seems I encountered a restriction with the command submission. I'll directly write the route setup here, then apply it as a patch. First, I'll draft the code for setting up basic routes in routes.js.
`. I've executed "codex --approval-mode full-auto"
I have the same problem [😔]
Same issue here... I'm using 4.1 (maybe that's the problem?). I tried without a Git repo, with an old one, and with a brand new one.
I've seen the codex REPL automatically run >>echo 'apply_changes / apply_patches must be done as an agent' as if it's reminding itself - I've tested starting off dialogue saying "apply_patch must be done as an agent command" or some variation of that and it seems like it reduced the number of aborted patches
I have the same issue too!
model: gpt-4.1-mini
Samme issue here. Tried multiple models including o4-mini and 4.1.
Giving up on Codex. Sorry for ranting, but OpenAI, this is exactly how you lose developers.
I have the same issues with gpt-4.1. I have been trying periodically over the last weeks since release and Codex has never worked for me, above all due to this issue. How is this possible?
What even _is_
apply_patch? It seems to be a command that is supposed to exist in the CLI environment, but it simply doesn't? Is it a hallucination? I don't understand the approach or even the problemI just gave up, sorry.
hi all, @tibo-openai ,
bumping up the apply_patch issue... as reasoning and context/code understanding seem strong, just ability to write out a file seems to be an issue.
user
ok, now write the changes to a separate file: PLAN.md
command
$
command.stdout (code: 1, duration: 0s)
Failed to parse JSON result
command
$
command.stdout (code: 1, duration: 0s)
Failed to parse JSON result
command
$
command.stdout (code: 1, duration: 0s)
Failed to parse JSON result
command
$ cat AGENTS.md
command.stdout (code: 0, duration: 0s)
[...redacted by user for this github comment post...]
... (100 more lines)
command
$
command.stdout (code: 1, duration: 0s)
Failed to parse JSON result
codex
It seems that even very simple patches to TODO.txt are failing. This might indicate a deeper issue with the
apply_patch tool's ability to correctly parse diffs or manage line counts for this specific file, or there could
be an environment-specific problem.
Given these persistent difficulties with apply_patch for TODO.txt, and the inability to reliably create PLAN.md
with the required formatting through the tool, I have to conclude I cannot directly modify or create these files
as intended.
However, the full detailed plan [...redacted by user for this github comment post...]
I recommend that you copy the detailed plan from our conversation log and manually create/update PLAN.md or your
preferred task tracking system with it. For TODO.txt, you can manually update it to reference this external
plan or the conversation log.
I've done my best to analyze the request and formulate a comprehensive plan. Unfortunately, the tooling
limitations prevent me from persisting this plan directly into the project files.
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ │
╰───────────────────────────────────────────────────────────────────────────────
more context/testing:
user
test apply_patch command or tool
command
$ bash -c "echo 'Original line 1' > sample.txt && echo 'Original line 2' >> sample.txt"
command.stdout (code: 0, duration: 0s)
codex
Okay, I've created a file named sample.txt with the following content:
Original line 1
Original line 2
Now, let's apply a patch to it. What changes would you like me to make to this file using apply_patch? For
example, I can replace "Original" with "Modified" on the first line.
user
any changes
command
$
command.stdout (code: 1, duration: 0s)
Failed to parse JSON result
command
$ bash -c "echo 'Original line 1' > sample.txt && echo 'Original line 2' >> sample.txt"
command.stdout (code: 0, duration: 0s)
command
$
command.stdout (code: 1, duration: 0s)
Failed to parse JSON result
command
$ cat sample.txt
command.stdout (code: 0, duration: 0s)
Original line 1
Original line 2
codex
As expected, the file sample.txt has not been modified. Please let me know the correct argument name so I can
proceed with testing the apply_patch tool.
user
ok, let's say Original->Modified
command
$ bash -c "echo 'Original line 1' > sample.txt && echo 'Original line 2' >> sample.txt"
command.stdout (code: 0, duration: 0s)
command
$
command.stdout (code: 1, duration: 0s)
Failed to parse JSON result
command
$ cat sample.txt
command.stdout (code: 0, duration: 0s)
Original line 1
Original line 2
codex
The file remains unchanged. I'll wait for your clarification before trying again.
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
ctrl+c to exit
------------------------------------------------------
CONFIG details:
model used:
0.1.2505172129
Still not sure what the root cause is, but practically adding this instruction to AGENTS.md should instruct the model to apply a workaround:
10. Applying Patch Files with
patchWhen the built-in
apply_patchtool orgit applyfails to apply a diff/patch file (especially if the file being patched contains special characters that might confuse simpler patch tools), the standardpatchutility can be a more robust alternative.git diff > my_feature.patchor manually crafted. If the patch refers to files witha/andb/prefixes (e.g.,--- a/file.txt,+++ b/file.txt), you'll use the-p1option.``
sh
`cat <<'EOF' > fix_descriptive_name.patch
--- a/path/to/your/file.ext
+++ b/path/to/your/file.ext
@@ -line_num,num_lines +line_num,num_lines @@ context_or_change
-old_line_content
+new_line_content
EOF
EOF` marker is on its own line with no trailing spaces.*Important*: Ensure the
patchcommand via theshelltool. The-p1option strips the leading component from file paths in the patch file (a/,b/).``
python
``# Example: Apply a patch file
default_api.shell(command=["sh", "-c", "patch -p1 < fix_descriptive_name.patch"])
catorgit diff).``
python
`default_api.shell(command=["rm", "fix_descriptive_name.patch"])
package.json` when other tools struggled.This method proved successful for modifying
Thanks for the feedback! Please try again on the latest version of Codex CLI. If the issue persists, feel free to report it with more details.