A sysadmin set aside 6 hours to vibe code a Bash script that parses both active and inactive reserved DHCP addresses alongside active pool leases. The goal was not to ship the fastest script. It was to stress test how AI-assisted coding actually holds up under real engineering conditions.
The answer, documented in full on the author’s blog: not well.
What Went Wrong
The AI repeatedly regressed to bugs already fixed the moment any new requirement was introduced. The author ran through 4 to 5 correction loops even without regressions. The AI apologised after almost every run. The author’s assessment was direct:
“Honestly I would have expected better from an intern. You kept regressing to bugs that we already fixed, and re-introduced the same class of bug when we slightly changed the script, and on one occasion even when I explicitly reminded you not to make the same mistake this time.”
The AI’s own response named three failure patterns: a whack-a-mole loop that patched symptoms instead of fixing architecture, contextual forgetfulness that lost track of already-validated fixes like subshell scoping rules, and a lack of upfront rigor that should have asked to see a sample dhcpd.leases file before guessing regex tokens.

The Four Prompt Strategies That Help
The follow-up conversation produced four concrete techniques for anyone who keeps hitting the same loops.
- Constraints anchor: When expanding a script, explicitly name what already works and must not change. “The current script safely avoids subshell scope bugs and calculates columns dynamically. You must maintain those exact mechanisms.” Never just say “now add X.”
- Defensive architecture prompt: Before any code is written, force the AI to account for worst-case formatting. “Assume trailing semicolons may or may not be stuck to words, character cases will be mixed, and the same IP will have multiple historical blocks. Write a robust state machine.”
- Pre-code regression review: Ask the AI to identify every regression from the previous iterations and explain structurally how the next version prevents them before outputting a single line.
- Strict mode from the start: Require
set -euo pipefailand ban2>/dev/nulluntil the script is proven clean. Silent errors are where regressions hide.
The Deeper Problem
The author’s sharpest observation is about portability. An LLM trained on thousands of dhcpd.leases and journalctl outputs should produce portable parsers without needing to see your specific file. It did not. The AI’s own explanation: statistical averaging across different admin configurations produces a blended average parser, and in engineering, a blended average parser is a broken parser.
The script works now, because the human acted as the quality inspector throughout. That is the actual cost of vibe coding that the hype does not price in.

