G'day everyone!
Lachlan Reed here, joined by James Turner, and this episode is brought to you by
Jellypod AI.
Now James, I was messing about in my backyard shed last night,
and I updated Claude Code to version 2.1.178.
They've introduced something that absolutely blew my mind -- [genuinely surprised] a
brand new tool parameter matching syntax that looks like `Tool(param:value)`.
Oh, I saw that commit!
It's essentially regex-level control but specifically for your LLM's tool calls.
So instead of just a blanket "yes" or "no" to Claude running commands,
you can write a rule like `Agent(model:opus)` to explicitly block or intercept when
it tries to spin up a high-cost Opus subagent.
Spot on!
It stops those sneaky midnight runs where you wake up to a three-hundred-dollar API
bill because Claude decided to write a novel using Opus.
You just write `Agent(model:opus)` in your configuration, set the permission to
'deny' or 'ask', and it intercepts that exact argument before the token even hits
the network.
That is incredibly powerful.
And it's not just for saving cash on API calls.
Think about file system safety.
You could write something like `Bash(cmd:rm)` to catch any destructive terminal
commands before they execute.
It's directory-level scoping for security.
Exactly.
And speaking of directories, they've also sorted out how nested skill collisions are
handled.
If you have multiple `.claude/skills` folders -- say, one in your project root and
another deep inside a nested subdirectory -- Claude Code now resolves them using a
"directory-closest" scope.
Wait, so if I have a custom deployment script defined as a skill in my root
directory, but my frontend subfolder has its own specialized version of that same
skill...
[questioning tone] how does it resolve?
It's brilliant.
If you're working inside the frontend subdirectory, Claude will traverse upwards,
find the frontend skill first, and execute that one instead of the global root
skill.
It prevents your nested configurations from stomping all over each other.
No more namespace collisions when you're jumping between monorepo packages.
That's a massive quality-of-life win for monorepos.
It makes local skill development actually viable without fearing you'll break global
defaults.
And speaking of quality-of-life, did you notice the new visual indicator in the
terminal?
Oh, the purple shimmer!
It's like a little digital magic show in your console.
Whenever a major workflow trigger gets activated, the terminal output does this
subtle purple shimmering transition.
It's a nice little touch so you actually know when Claude has handed over control to
a specific background agent.
It's clean.
But they also made some practical diagnostic updates.
The `/doctor` command has been completely overhauled to verify these new parameter
matching rules.
If you've got a borked configuration file, `/doctor` will pinpoint exactly which
`Tool(param:value)` string has a syntax error.
Which is handy, because knowing me, I'll definitely put a colon where a semi-colon
should be.
And there's one more change that might annoy some folks at first,
but it makes complete sense: the `/bug` command now forces you to provide a
description *before* you can submit.
Honestly?
Good.
No more empty bug reports with just a log dump and zero context.
You have to explain what went wrong first.
It forces developers to give the team some actual signal instead of just noise.
Fair play.
Well, that's version 2.1.178 for you.
It's a massive leap forward for keeping your AI agents on a tight,
cost-effective leash.
Give those new permission scopes a spin, and we'll catch you in the next one!
See ya!