Menu

1 / 2

Why Strict JSON Mode Doesn't Stop Hallucinated Tool Calls

DEV Community·Gabriel Anhaia·6 months ago
#2EkBlnse
#ai#llm#agents#python#tool
Reading 0:00
15s threshold

Book: AI Agents Pocket Guide

Also by me: Thinking in Go (2-book series) — Complete Guide to Go Programming + Hexagonal Architecture in Go

My project: Hermes IDE | GitHub — an IDE for developers who ship with Claude Code and other AI coding tools

Me: xgabriel.com | GitHub

You've seen the postmortem. Strict JSON mode is on, the schema is tight, the trace shows strict: true , every payload validates. And yet the agent called delete_user(user_id="usr_4f9...") against a user who never existed, with a reason field copied from a different ticket entirely. The Pydantic model was happy. The database was not.

This is the failure mode that surprises teams who treat structured outputs as a safety boundary. Strict mode does exactly what the docs say it does, no more.…

Continue reading — create a free account

Join HashtagPLUS to read full articles, follow hashtags, vote, and join the conversation.