diff --git a/test/fuzz-libghostty/.gitattributes b/test/fuzz-libghostty/.gitattributes
new file mode 100644
index 000000000..de57ad9a7
--- /dev/null
+++ b/test/fuzz-libghostty/.gitattributes
@@ -0,0 +1,6 @@
+# Hand-written seed corpus: binary files, track as-is
+corpus/initial/** binary
+
+# Generated/minimized corpora: binary, mark as generated
+corpus/vt-parser-cmin/** binary linguist-generated=true
+corpus/vt-parser-min/** binary linguist-generated=true
diff --git a/test/fuzz-libghostty/AGENTS.md b/test/fuzz-libghostty/AGENTS.md
index bf89bd7e0..a05391091 100644
--- a/test/fuzz-libghostty/AGENTS.md
+++ b/test/fuzz-libghostty/AGENTS.md
@@ -2,3 +2,34 @@
- `ghostty-fuzz` is a binary built with `afl-cc`
- Build `ghostty-fuzz` with `zig build`
+
+## Important: stdin-based input
+
+The instrumented binary (`afl.c` harness) reads fuzz input from **stdin**,
+not from a file argument. This affects how you invoke AFL++ tools:
+
+- **`afl-fuzz`**: Uses shared-memory fuzzing automatically; `@@` works
+ because AFL writes directly to shared memory, bypassing file I/O.
+- **`afl-showmap`**: Must pipe input via stdin, **not** `@@`:
+
+ ```sh
+ cat testcase | afl-showmap -o map.txt -- zig-out/bin/ghostty-fuzz
+ ```
+
+- **`afl-cmin`**: Do **not** use `@@`. Requires `AFL_NO_FORKSRV=1` with
+ the bash version due to a bug in the Python `afl-cmin` (AFL++ 4.35c):
+
+ ```sh
+ AFL_NO_FORKSRV=1 /opt/homebrew/Cellar/afl++/4.35c/libexec/afl-cmin.bash \
+ -i afl-out/default/queue -o corpus/vt-parser-cmin \
+ -- zig-out/bin/ghostty-fuzz
+ ```
+
+- **`afl-tmin`**: Also requires `AFL_NO_FORKSRV=1`, no `@@`:
+
+ ```sh
+ AFL_NO_FORKSRV=1 afl-tmin -i -o