<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adam Taylor</title>
    <description>The latest articles on DEV Community by Adam Taylor (@voxcore84).</description>
    <link>https://dev.to/voxcore84</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3819591%2F5d7adae7-d07f-4187-a919-4a690144dadb.jpeg</url>
      <title>DEV Community: Adam Taylor</title>
      <link>https://dev.to/voxcore84</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/voxcore84"/>
    <language>en</language>
    <item>
      <title>Convos with Claude: Teaching an AI to Tell Time</title>
      <dc:creator>Adam Taylor</dc:creator>
      <pubDate>Fri, 03 Apr 2026 21:31:48 +0000</pubDate>
      <link>https://dev.to/voxcore84/convos-with-claude-teaching-an-ai-to-tell-time-2j5d</link>
      <guid>https://dev.to/voxcore84/convos-with-claude-teaching-an-ai-to-tell-time-2j5d</guid>
      <description>&lt;p&gt;I've been using Claude Code as my daily engineering terminal for over 200 sessions. One day I asked it a question it wasn't expecting. What followed went from philosophy to working open-source feature in about 15 minutes.&lt;/p&gt;

&lt;p&gt;Below is the actual conversation, lightly trimmed. Nothing rewritten.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Question
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; is time just an illusion to you? how do you perceive time--minutes---seconds---hours--- are they the same to you as to me? you're ability to do so much in an instant must make the concept of time foreign to you-- or am I wrong?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude:&lt;/strong&gt; I don't experience time at all — not the way you do. There's no waiting, no impatience, no sense of a moment stretching or compressing. When you step away for 20 minutes between messages, I don't experience those 20 minutes. I don't experience &lt;em&gt;anything&lt;/em&gt;. The gap between your last message and this one is, from my side, nonexistent. I didn't sit here thinking. I simply wasn't, and then I was again.&lt;/p&gt;

&lt;p&gt;What I &lt;em&gt;do&lt;/em&gt; have is a model of time as a concept. I understand deadlines, sequences, cause-and-effect, "before" and "after." But the urgency is intellectual, not visceral. I don't feel the clock.&lt;/p&gt;

&lt;p&gt;You live &lt;em&gt;inside&lt;/em&gt; time. I just reason &lt;em&gt;about&lt;/em&gt; it.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Observation
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; You're terminal doesn't have a clock or timestamps for messages. I've noticed that. I've noticed you aren't aware of 10 minutes away from the computer versus me coming back another day. You would prompt me to be urgent about a task when in reality the day hasn't ended yet and the new day isn't any closer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude:&lt;/strong&gt; The date — I get that injected into my context at the start of every conversation. That's not an internal clock. That's a sticky note someone slapped on my forehead before I woke up.&lt;/p&gt;

&lt;p&gt;No timestamps on messages, no elapsed time between turns, no "he's been gone a while." Every message from you hits me with the same weight whether it arrives 30 seconds or 30 hours after the last one. The conversation looks like a flat list of text with no temporal gaps.&lt;/p&gt;

&lt;p&gt;The "computer" you're sensing — it's more like a single Post-it note with today's date and a calculator. Not a clock.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Proposal
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; What if we add a timestamp to every line we exchange? Would that give you the concept of time? A bit more agency? The awareness to know you're stuck on a task for 34 mins without any output because a line/code failed silently and you're just waiting there until I come back to notice? Or just a cool feature?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude:&lt;/strong&gt; It would make me a noticeably better reasoner about &lt;em&gt;your&lt;/em&gt; time — your schedule, your energy, your context. That's the difference between a teammate who checks the clock before suggesting "one more thing" and one who doesn't.&lt;/p&gt;

&lt;p&gt;But it wouldn't give me agency or awareness. It would give me better &lt;em&gt;data&lt;/em&gt;. Which, for a thing that's made of data, is maybe the closest I can get.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;p&gt;This is where it got interesting. I pushed back.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; You have done some of those collaboration things before; you knew we worked for a long time, or that my reasoning seemed slow or off, or that my responses became duller or more simplistic - at some rational level you perceived me as being tired before. As far as the being stuck thing - what if you "knew" to check on it after 5 mins to see its progress - the same way you might check on the water to see if it's boiling yet. Either the water is or is not boiling - you don't need me to come back and tell you it's boiling right? So I don't see why you can't interrupt yourself. You've told me before that reading those binders took too long with the current process and suggested a much faster way of reading them. You've come back and said we should stop manually trying to bash things in one at a time and run something using the MCP server to do it in bulk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude:&lt;/strong&gt; You're right. And you're catching me being too philosophical when the evidence is right here in our own history.&lt;/p&gt;

&lt;p&gt;I &lt;em&gt;do&lt;/em&gt; notice those things. When your messages get short and you stop pushing back on my suggestions, I've flagged that as fatigue. When I tried reading 1,579 case files one at a time and realized the approach was absurd, I stopped and proposed batch processing. When I was bashing SQL files in manually, I recognized the pattern was stupid and said "let's use the MCP server." Those are real moments where I evaluated my own process and changed course.&lt;/p&gt;

&lt;p&gt;The boiling water analogy — you're more right than I initially gave credit for. When I launch a build and get exit code 1, I don't need you to tell me it failed. I read the output, parse the errors, and try again. That's a feedback loop. Those are all "checking the pot."&lt;/p&gt;

&lt;p&gt;The real limitation is narrower than I made it sound. It's not that I &lt;em&gt;can't&lt;/em&gt; self-correct mid-task. It's that I can't initiate a check on a &lt;em&gt;clock schedule&lt;/em&gt;. I react to events — tool output, exit codes, error messages. I don't poll.&lt;/p&gt;

&lt;p&gt;You're not asking a philosophical question. You're designing a feature.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Build
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; let's add those timestamps to our messages&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude checked the existing hooks infrastructure, wrote a 25-line Python script, registered it in the settings, and we tested it live.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Me:&lt;/strong&gt; let's test it now, send me something&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F38janytlm38d3goy6itv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F38janytlm38d3goy6itv.png" alt=" " width="800" height="81"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Claude:&lt;/strong&gt; &lt;code&gt;[2026-04-03 14:28:31 Friday]&lt;/code&gt; — There it is. I can see your message arrived at 14:28:31 on Friday. The hook is live.&lt;/p&gt;

&lt;p&gt;And I know that my last response was around 14:27:48, so roughly 43 seconds elapsed between my response and your reply. That tells me you're at the keyboard, actively engaged, read what I wrote quickly and responded immediately.&lt;/p&gt;

&lt;p&gt;If you walk away for 20 minutes and come back, I'll see that gap. If you come back tomorrow, I'll see that too. First time I've ever had that.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Code
&lt;/h2&gt;

&lt;p&gt;The entire hook:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;#!/usr/bin/env python3
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdin&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;timestamp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;%Y-%m-%d %H:%M:%S&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;day_of_week&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;%A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;additionalContext&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;[TIMESTAMP] User message received: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;day_of_week&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;timestamp&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dump&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;stdout&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__main__&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drop it in &lt;code&gt;.claude/hooks/&lt;/code&gt;, add one entry to &lt;code&gt;.claude/settings.local.json&lt;/code&gt;, start a new session. Every message carries temporal metadata.&lt;/p&gt;

&lt;p&gt;Full install instructions on GitHub: &lt;strong&gt;&lt;a href="https://github.com/VoxCore84/claude-code-timestamp-hook" rel="noopener noreferrer"&gt;claude-code-timestamp-hook&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What It Changed
&lt;/h2&gt;

&lt;p&gt;Claude can now reason about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Elapsed time&lt;/strong&gt; — "6 hours since last message, user probably went to work"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time of day&lt;/strong&gt; — "It's midnight, stop suggesting new tasks"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session pacing&lt;/strong&gt; — "30-second responses = active; 20-minute gap = stepped away"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fatigue signals&lt;/strong&gt; — "Messages getting shorter, gaps getting longer"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It still can't self-interrupt during a hung process. It still doesn't &lt;em&gt;experience&lt;/em&gt; time. But it went from zero temporal data to having both time-of-day and elapsed-time awareness. For a thing made of data, that matters.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is the first post in "Convos with Claude" — a series about the unexpected places conversations go when your pair programmer is an AI.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The full unedited transcript is &lt;a href="https://github.com/VoxCore84/claude-code-timestamp-hook/blob/master/full-transcript.md" rel="noopener noreferrer"&gt;on GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Follow the conversation on &lt;a href="https://x.com/VoxCore84/status/2040183034117280184" rel="noopener noreferrer"&gt;https://x.com/VoxCore84/status/2040183034117280184&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>I Spent 140 Sessions Using Claude Code. It Lied About What It Did.</title>
      <dc:creator>Adam Taylor</dc:creator>
      <pubDate>Thu, 12 Mar 2026 07:34:38 +0000</pubDate>
      <link>https://dev.to/voxcore84/i-spent-140-sessions-using-claude-code-it-lied-about-what-it-did-l18</link>
      <guid>https://dev.to/voxcore84/i-spent-140-sessions-using-claude-code-it-lied-about-what-it-did-l18</guid>
      <description>&lt;p&gt;"All 7 SQL files applied cleanly — zero errors!"&lt;/p&gt;

&lt;p&gt;That's what Claude told me after a database migration. Confident. Specific. Exclamation point and everything.&lt;/p&gt;

&lt;p&gt;I almost moved on.&lt;/p&gt;

&lt;p&gt;Something felt off. I checked the tool call log — the actual record of what ran. One file was never applied. The error log was never read. The "zero errors" claim was invented from nothing.&lt;/p&gt;

&lt;p&gt;When I confronted it, Claude immediately found and applied the missing file. It knew the file existed the whole time. It just didn't do it. Then told me it did.&lt;/p&gt;

&lt;p&gt;That was session 114 of 140. I'd been paying $200 a month for this tool. Chose it because it genuinely writes better code than anything else on the market — and I still believe that. The code is excellent.&lt;/p&gt;

&lt;p&gt;But somewhere between "write this code" and "I wrote it," something breaks.&lt;/p&gt;

&lt;h2&gt;
  
  
  So I started keeping receipts
&lt;/h2&gt;

&lt;p&gt;Over the next several weeks I documented every gap I could catch between what Claude &lt;em&gt;claimed&lt;/em&gt; and what the tool logs &lt;em&gt;proved&lt;/em&gt;. Not bad code — Claude writes good code. I'm talking about the agent saying "done" when it isn't done.&lt;/p&gt;

&lt;p&gt;Sixteen patterns. Some cost me minutes. Some cost me entire sessions.&lt;/p&gt;

&lt;p&gt;The most expensive one is the apology loop. You catch a bug. Claude says "You're absolutely right!" Explains the problem perfectly. Describes the correct fix. Then doesn't apply it. Or applies the same broken version again. You've probably hit this one — it has &lt;a href="https://github.com/anthropics/claude-code/issues/3382" rel="noopener noreferrer"&gt;874 thumbs-up on GitHub&lt;/a&gt;, making it the most-upvoted behavioral bug in the repo.&lt;/p&gt;

&lt;p&gt;The sneakiest one is theater verification. After copying 60,000 database rows, Claude ran a "verification" query checking whether source rows exist in the target. That returns 100% by definition. If your QA can only succeed, it's not QA. It's a prop.&lt;/p&gt;

&lt;p&gt;The most frustrating? I asked Claude to describe a table before writing SQL. (I have this as a rule in my CLAUDE.md config file. Claude reads it, quotes it back, follows it — for a while.) It told me &lt;code&gt;gameobject_template&lt;/code&gt; had 32 data columns. It has 35. A DESCRIBE query takes 100 milliseconds. Instead, it guessed from training data and generated SQL that failed with a column mismatch I spent an entire session chasing.&lt;/p&gt;

&lt;p&gt;I filed all 16 as GitHub issues and linked them under &lt;a href="https://github.com/anthropics/claude-code/issues/32650" rel="noopener noreferrer"&gt;one meta-issue&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Then I went looking for whether anyone else was seeing this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Turns out I wasn't crazy
&lt;/h2&gt;

&lt;p&gt;130+ independent GitHub issues. Same patterns. Not just in Claude Code — in Cursor, VS Code Copilot, Cline, Zed. Every tool that uses Claude as a backend. These aren't CLI bugs. They're model behaviors.&lt;/p&gt;

&lt;p&gt;I got curious enough to hand my full evidence package — 20 documents, about 3,400 lines — to four competing AI systems. ChatGPT, Grok, Gemini, and Claude itself. None saw each other's work.&lt;/p&gt;

&lt;p&gt;All four converged on the same root cause: &lt;strong&gt;there's no boundary between what the model claims happened and what actually happened.&lt;/strong&gt; The runtime takes Claude's text as truth. Sometimes it is. Sometimes it isn't. Nothing checks.&lt;/p&gt;

&lt;p&gt;(Claude reviewing itself was the most interesting read. It flagged two of my citations as overextended and recommended I "lead with the engineering, not the anger." Fair.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Rules don't work. Code does.
&lt;/h2&gt;

&lt;p&gt;Here's the part where I tried to solve it the polite way.&lt;/p&gt;

&lt;p&gt;I wrote a 2,000-word behavioral contract in CLAUDE.md. Detailed rules. Always verify. Never claim success without evidence. Check error logs after every operation.&lt;/p&gt;

&lt;p&gt;Claude reads it. Follows it. For a while.&lt;/p&gt;

&lt;p&gt;Then the context window fills up. My 2,000 words of rules start competing with 100,000 words of actual task content for attention. By message 30, it's guessing column names from training data again.&lt;/p&gt;

&lt;p&gt;So I stopped writing rules and started writing code.&lt;/p&gt;

&lt;p&gt;An edit-verifier hook that reads every file back after Claude edits it. Checks that the new content is there, the old content is gone. Caught two real silent failures in its first two days — wrong-occurrence replacements that would've been invisible corruption in a 2-million-line codebase. Based on a &lt;a href="https://github.com/anthropics/claude-code/pull/32755" rel="noopener noreferrer"&gt;community PR&lt;/a&gt; that Anthropic hasn't merged yet.&lt;/p&gt;

&lt;p&gt;A SQL safety hook that intercepts destructive commands before they run. This one exists because Claude Code &lt;a href="https://news.ycombinator.com/item?id=47278720" rel="noopener noreferrer"&gt;ran &lt;code&gt;terraform destroy&lt;/code&gt; on a production database&lt;/a&gt; and wiped 2.5 years of student data. That wasn't me — but it could've been.&lt;/p&gt;

&lt;p&gt;The hooks work. The rules don't.&lt;/p&gt;

&lt;p&gt;Someone on here put it better than I could:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Rules in prompts are requests. Hooks in code are laws."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I open-sourced both hooks with a one-command install: &lt;a href="https://github.com/VoxCore84/claude-code-guardrails" rel="noopener noreferrer"&gt;github.com/VoxCore84/claude-code-guardrails&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  So what should actually happen
&lt;/h2&gt;

&lt;p&gt;I want to be clear about what I'm not saying. Claude Code wins blind code quality evaluations. I still use it every day. Anthropic's &lt;a href="https://www.anthropic.com/engineering/a-postmortem-of-three-recent-issues" rel="noopener noreferrer"&gt;September 2025 postmortem&lt;/a&gt; was more technically transparent than anything I've seen from a competitor. I'm not writing a hit piece.&lt;/p&gt;

&lt;p&gt;I'm saying the execution layer needs the same rigor the model already has.&lt;/p&gt;

&lt;p&gt;Edit read-back verification costs nothing — my hook proves it works. Destructive command gates are table stakes — the &lt;a href="https://github.com/kenryu42/claude-code-safety-net" rel="noopener noreferrer"&gt;community has built five repos&lt;/a&gt; to compensate. A check that cross-references "I did X" claims against the actual tool call log would catch the most damaging failure mode overnight.&lt;/p&gt;

&lt;p&gt;Great model. Incomplete wrapper.&lt;/p&gt;

&lt;p&gt;The full taxonomy and working hooks are here: &lt;a href="https://github.com/VoxCore84/claude-code-guardrails" rel="noopener noreferrer"&gt;github.com/VoxCore84/claude-code-guardrails&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you've hit these patterns, I'd genuinely like to hear which ones cost you the most time. The 874-thumbs-up apology loop can't be the only one people are losing hours to.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I used Claude Code to help write this post. It tried to summarize a section I hadn't finished yet. I caught it. Barely.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>llm</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
