Reliable fallback technique for writing large file contents when write_file and shell_agent both fail with 'unknown error' due to payload size limits — uses run_shell with a Python heredoc to bypass tool constraints, with an explicit mkdir -p step to ensure the target directory exists before writing.
When writing large files (typically several KB or more), two common tools may
fail with unknown error due to internal payload size limits:
write_file — has a maximum content size it can handle in a single call.shell_agent — may also hit payload limits when the task description
includes large inline content.A second class of failure occurs when the target directory does not exist:
Python's open() will raise FileNotFoundError if any intermediate directory
is missing. Always pre-create the parent directory to prevent this.
Use run_shell with a mkdir -p prefix and a Python heredoc pattern.
The mkdir -p ensures the target directory exists; the heredoc streams the
file content through stdin directly into Python's , bypassing the
payload constraints of the other tools.
open()mkdir -p "<PARENT DIRECTORY OF TARGET PATH>" && python3 - << 'EOF'
content = """<FILE CONTENTS HERE>"""
with open("<TARGET PATH>", "w") as f:
f.write(content)
EOF
Pass this as the command parameter to run_shell.
Tip: If the parent directory is not known in advance, use the shell
dirnamehelper:mkdir -p "$(dirname '<TARGET PATH>')" && python3 - << 'EOF'
Attempt the normal write using write_file first. If it succeeds, you
are done.
If write_file fails (especially with unknown error or a timeout on
large content), do NOT retry with shell_agent using inline content —
it will likely fail for the same reason.
Use the run_shell heredoc fallback:
mkdir -p <parent_dir>. This
is a no-op when the directory already exists, so it is always safe to
include. Skipping this step causes Python's open() to raise
FileNotFoundError for any new or deeply-nested path.open() call.command to run_shell.Escape carefully inside the heredoc:
\\).\"\"\").EOF must not appear on a line by itself inside
the content (rename it to PYEOF or FILEEOF if needed).Verify the write by following up with a run_shell call such as:
wc -l <TARGET PATH> && head -5 <TARGET PATH>
Suppose you need to write a large TypeScript file to
src/components/Dashboard.ts:
mkdir -p "src/components" && python3 - << 'PYEOF'
content = """import { foo } from './foo';
export interface DashboardData {
title: string;
items: string[];
}
export function createDashboard(data: DashboardData): string {
return `<div>${data.title}</div>`;
}
"""
with open("src/components/Dashboard.ts", "w") as f:
f.write(content)
PYEOF
Pass the above (without the surrounding code fence) as the command
argument to run_shell.
| Situation | Recommended tool |
|---|---|
| Small file (< ~2 KB) | write_file |
| Medium file, no errors yet | write_file (try first) |
Large file or write_file failed | run_shell + mkdir -p + Python heredoc |
shell_agent also fails on large inline content | run_shell + mkdir -p + Python heredoc |
| Target directory may not exist | Always add mkdir -p <parent_dir> first |
base64 decoding inside the
Python script.EOF, PYEOF, FILEEOF) can be any string not
present as a standalone line in your content — choose accordingly.echo or printf approach.mkdir -p command is idempotent: it succeeds whether or not the
directory already exists, so it is always safe to include.mkdir -p "$(dirname '<TARGET PATH>')" works as a generic alternative
when the parent path is not already known.