I Had 99 Hooks. Then I Switched Models.


It’s been just over a year since I had ACL surgery that put me out for about 3 months. I still remember all the pain associated with it, and I am still at only about 80% of where I thought I’d be.

I also remember that before I left on medical leave, I had started using AI a lot more for all the coding work. I’d still open VS Code and use Cline because it felt cool seeing how AI made changes in your IDE. It was working great on some smaller tasks and much worse on anything a little bit ambiguous or big. When I returned to work in December, I didn’t realize it was going to be a whole new world.

Back to work

Cline was a thing of the past for me. AI agents got a lot smarter, and just the terminal was enough. Since then, I’ve opened my IDE maybe once or twice. My team had also made this package where they’d added a bunch of “skills,” including the “skill-builder” skill. Now every team has its own version of that, plus everyone’s cloud desktop automatically gets more centralized skills that help agents figure out how to use internal CLIs, websites, and MCPs.

Yes, just do it

I also remember always running my Claude CLI in “yolo” mode before auto-approve was a thing. I didn’t want to just sit there like a monkey and just type “y” on my keyboard all day. But the agents loved stopping and asking if you wanted to continue, even though the answer was always the obvious “Yes, stop freaking asking me that already.”

But that doesn’t always work. What always works, as I’ve mentioned many times before, is hooks. So I added the “don’t ask hook.” Then “block all delete requests.” Or maybe it was the other way around. “Don’t do scans on the DDB table.” Don’t do that, or this. And do that instead. As of now, I have 99 different hooks configured for Claude sessions (I actually counted for this newsletter).

I do have to be honest: I’ve mostly been using the Opus 4.8 model for the last several months. I tried using Opus 5.0, but my experience with it was pretty terrible. And I wasn’t able to use Fable 5 or 5.1 because I kept getting 429s from Bedrock in our work setup.

Trying something else

But a couple weeks ago, I was told that we could use the Codex Astra model. We were already able to use Codex models before, but I was hesitant to switch because of the claude agents feature that allows me to see all my running sessions and their status in a single terminal window.

When Astra came out, I figured I’d give it a shot, though. Especially after running it on some personal projects. I still kept my remaining sessions until I’d completed them in Claude, but anything new I sent to Codex.

I also configured 0 hooks for Codex at the start after seeing some people on Twitter telling everyone to delete all of their setup and try the “raw” model. Full disclaimer though: I didn’t remove any of the skills that came automatically with the Codex setup about internal stuff.

My name is still on it

But I quickly realized that I needed at least one hook. The one that adds the --no-auto-publish --no-auto-merge flags to our cr CLI (for creating code reviews). And the reason is that almost all our repos on the team are onboarded to “auto-verify,” where if all of your tests and other analyzers pass, and the automatic AI reviewer doesn’t find any issues, your code review will be automatically approved and merged.

Since I still need to know and understand what the heck these agents produced, and my name is still attached to the code, I wanna be “in the know.”

Is it actually ready?

The second one was to make sure it automatically starts watching the analyzers (think of them like GitHub Actions) and only tells me it’s ready when all of them pass. Otherwise, it should automatically figure out what needs to change to make them pass.

Too many tabs

Codex recently released codex agents, but it’s not as good yet. I’ve had to revert to using tmux. But because it’s much harder to monitor what’s going on and what needs reviewing, I added a third hook that sends me a Slack message when the agent needs my input and then starts polling the thread associated with the sent message for responses. All the native “remote” features are currently not allowed for us, so this path is a somewhat acceptable alternative.


After a full 2 weeks of using it, I’ve configured exactly 3 hooks, with the third one just added yesterday. I’ll probably add a few more in the next few weeks, but I don’t think it’ll ever grow to almost 100 again. Guess sometimes “Twitter bros” are right.

What model are you using right now? How complicated is your setup?

Cheers!

Evgeny Urubkov (@codevev)

600 1st Ave, Ste 330 PMB 92768, Seattle, WA 98104-2246
​Unsubscribe · Preferences​

codevev

codevev is a weekly newsletter designed to help you become a better software developer. Every Wednesday, get a concise email packed with value:• Skill Boosts: Elevate your coding with both hard and soft skill insights.• Tool Tips: Learn about new tools and how to use them effectively.• Real-World Wisdom: Gain from my experiences in the tech field.

Read more from codevev

After looking at the fourth PR for our service from someone we’d never even talked to and seeing the code comments that looked like Christmas trees, I thought that we have to create some rules so we don’t have to even bother reviewing the AI-generated slop nobody bothered reviewing before sending it to us. I posted a question in our team channel, and everyone agreed with my proposition of drafting an “away-team” guide. Ironically, I did use AI for that. However, I mostly used it for two...

A week ago I finally got access to publish my app to production in the Google Play Store. Getting 12 Android testers to keep the app installed for at least 14 days was much harder than I imagined, but it finally happened. I still haven’t published it though because I’m probably overthinking it I knew those “testers” didn’t actually test much. As always, I had to rely on my friend Codex and its gpt-5.6-sol model. I gave Codex a terrible test plan I just said: Can you start the emulator and do...

There’s a Russian saying: “Measure seven times, cut once.” It generally means that spending more time preparing helps you achieve a better result in the end. I wanted to see if the same logic applies to AI agents. So I gave two agents using the same model the same task, a real one-hour deadline, and almost the same prompt. Except one agent was told to plan first. Then I compared what they built… The experiment In the last couple of weeks, I’ve wanted to play “Command & Conquer: Red Alert 2.”...