git filter-repo --invert-paths --path <file> rewrites the commits, but rotate the leaked key first — filter-branch is deprecated and a rewrite alone won't undo the exposure.
Blog
CliAI blog
Latest news, deep dives and how-tos around the CliAI ecosystem.
-
2026-06-01
Remove a password from git history
-
2026-05-29
Run a Command in the Background After SSH Logout
nohup covers the process you planned for ahead of time; disown rescues one you already started; tmux, setsid, and systemd-run handle the rest, depending on what you actually need.
-
2026-05-27
kill -9 not working? Why the process still won't die
kill -9 fails against zombies, D-state processes, and anything a supervisor restarts. How to tell the three apart and what actually kills each one.
-
2026-05-25
Filter JSON on the command line with jq
jq '.field' pulls a value out of JSON; -r strips the quotes, select() filters, and @csv turns an API response into rows a spreadsheet can read.
-
2026-05-22
Which folder is eating the disk? du, sorted by biggest
du -h --max-depth=1 | sort -rh, then walk down one level at a time. Plus the -x flag that stops du counting other filesystems into your answer.
-
2026-05-20
df says the disk is full, du says it isn't. Who's right?
Both are. The space belongs to files that were deleted while a process still had them open — or you ran out of inodes, not bytes. How to find which, in four commands.
-
2026-05-18
Natural language to shell command: how it actually works
Describe the task in English, get the exact shell command back, read it, then run it. What these tools do, where they break, and how they differ from an AI coding agent.
-
2026-05-15
sed -i not working on Mac? BSD vs GNU flags, fixed
The error "invalid command code" means macOS ships BSD tools, not GNU ones. Six flag differences that break Linux scripts on a Mac, with the fix for each.
-
2026-05-13
Docker ate your disk: how to get the space back
docker system df first, prune second. What each prune actually deletes, why volumes survive by default, and how to avoid removing the image you still need.
-
2026-05-10
Undo the last git commit but keep your changes
git reset --soft HEAD~1 if you haven't pushed, git revert if you have. The difference between soft, mixed and hard, and how reflog gets you back when you pick wrong.
-
2026-05-08
Find the process whose memory keeps growing
A leak isn't high memory, it's memory that never comes back down. Sample RSS over time with pidstat, confirm with pmap, and tell a leak from a cache.
-
2026-05-06
Print a column from a CSV with awk (and when not to)
awk -F, '{print $2}' works until one field contains a comma inside quotes — then every column after it shifts and your totals go quietly wrong.