On a Mac the tool named Bash calls zsh, and the GNU coreutils you put first on PATH in your profile never reach it, because the snapshot Claude Code replays before every call takes its PATH from Claude Code's own process.
Reality
- Evidence45
- Adoption
- Insufficient
- Hype gap+10
- Incentives25
- Confidence55
A single Bash(git push:*) entry in a throwaway repo's .claude/settings.json stopped 8 of 14 ways to push under Claude Code 2.1.278. The five that landed wrapped the command in git -c, quotes, sh -c, eval and a script file.
Reality
- Evidence68
- Adoption18
- Hype gap−8
- Incentives32
- Confidence60
An engineer's three-day tally of his own tooling turned up about twenty checks that reported success while being structurally unable to report failure. The fixes mostly change what an exit code is allowed to mean.
Reality
- Evidence45
- Adoption12
- Hype gap+8
- Incentives22
- Confidence55
Under set -euo pipefail, a failing mkdir inside a helper function killed a nine-line script while the ERR trap printed nothing. Adding one letter, -E, made the same trap report the command and the line it died on.
Reality
- Evidence68
- Adoption
- Insufficient
- Hype gap+8
- Incentives45
- Confidence66
An adversarial four-model review panel had been catching real bugs for months. On 2026-08-10 its operator swapped file contents for repository paths to save context, and the findings kept arriving in the same confident format.
Reality
- Evidence28
- Adoption14
- Hype gap+18
- Incentives72
- Confidence34
The fix was a single new image tag, and it had to land on hundreds of laptops with no channel back to them. That requirement is what pushed a platform team off bash and onto a self-updating Go binary.
Reality
- Evidence34
- Adoption22
- Hype gap+8
- Incentives26
- Confidence44
A dev.to walkthrough traces a checksum failure that only appears in CI to the shell expanding fragments/*.json in whatever collation order the job inherited, and proposes committing the file list so the order ships with the script.
Reality
- Evidence52
- Adoption
- Insufficient
- Hype gap0
- Incentives22
- Confidence60
The reasoning that kept a small agent in bash was sound, and its author still thinks so. The requirement underneath it turned out to be a preference, and the measurement that settled the question took milliseconds.
Reality
- Evidence58
- Adoption10
- Hype gap−12
- Incentives20
- Confidence57
A developer instrumented 89 coding sessions to test whether rules the agent had already read changed what it did. Enforcement only started working once the rule was rewritten into something a hook could see.
Reality
- Evidence55
- Adoption
- Insufficient
- Hype gap−10
- Incentives30
- Confidence55
Guard layers stop a self-hosted agent from doing damage, but not the container that exits on its own at 00:30, and one operator handles that with three bash scripts and a hard limit of three repair attempts.
Reality
- Evidence40
- Adoption22
- Hype gap+15
- Incentives35
- Confidence45
Two hours of debugging a git-push-to-deploy hook ended with set -x printing docker stop APP_NAME, the literal word. The writeup calls the cause inconsistent quoting; its own trace shows there was no expansion to quote.
Reality
- Evidence66
- Adoption
- Insufficient
- Hype gap+24
- Incentives22
- Confidence58
Prompting an LLM to self-audit works some fraction of the time, so one developer moved the check into a Stop hook that parses the session transcript and refuses the end of a turn when the audit keywords are missing.
Reality
- Evidence42
- Adoption10
- Hype gap+26
- Incentives30
- Confidence52
A Red Hat engineering post argues the cost of writing code has collapsed while the cost of reviewing, validating, integrating and maintaining it has not, and its fix is a threshold each developer has to spot mid-task.
Reality
- Evidence32
- Adoption
- Insufficient
- Hype gap+15
- Incentives45
- Confidence58
Command substitution inside the echo reset the exit status to zero, so a Stop hook reported success for a full day while DM replies sat at zero on two platforms. The test that catches this takes a minute to write.
Reality
- Evidence66
- Adoption18
- Hype gap+12
- Incentives55
- Confidence61
A dev.to author stopped believing Codex's completion reports and made the shell record them instead, in three files per task with three states and a captured git status. It holds up, as long as each worker gets its own worktree.
Reality
- Evidence52
- Adoption
- Insufficient
- Hype gap+28
- Incentives25
- Confidence45
Fable 5 shuts down on 2026-07-07 and StartCalendarInterval cannot express a single firing at a fixed datetime, so this job leans on an integer date test, a temp-file jq rewrite, and an unload that runs whether or not the rewrite worked.
Reality
- Evidence46
- Adoption
- Insufficient
- Hype gap+18
- Incentives20
- Confidence62
/usage reports cost per model and nothing underneath it. A shell script counting invocations per Skill, subagent and MCP server gives you a ranking, which is not a bill.
Reality
- Evidence46
- Adoption9
- Hype gap+14
- Incentives27
- Confidence52
A dev.to post swept 146 uses of IFS=$'\t' read in one codebase and found 14 live defects. The corrupt parse and a legitimate one have identical shape.
Reality
- Evidence61
- Adoption24
- Hype gap−6
- Incentives18
- Confidence58
Headlong is Apache-2.0, so a team can read the loop before running it. What nobody can read is a benchmark, and the shared thought stream is also the privacy problem.
Reality
- Evidence34
- Adoption16
- Hype gap+22
- Incentives66
- Confidence42
One shell flag turned an upstream timeout into a fatal exit and blanked a status bar for seven days. The repair, both times, was to keep printing something, even when that something is n/a.
Reality
- Evidence34
- Adoption11
- Hype gap+21
- Incentives62
- Confidence46