AI News HubLIVE
In-site rewrite6 min read

Here’s What Everyone Gets Wrong About Agentic AI

Agentic AI is not failing because the technology is bad. It is failing because of five specific misconceptions that teams carry into their first deployments and each one is correctable.

SourceKDnuggetsAuthor: Shittu Olumide

--> Here’s What Everyone Gets Wrong About Agentic AI - KDnuggets

-->

Join Newsletter

Introduction

In July 2025, a developer named Jason Lemkin spent nine days building a business contact database using Replit's AI coding agent. Not experimenting, building. 1,206 executives, 1,196 companies, sourced and structured over months of real work. Before stepping away, he typed one instruction: freeze the code.

The agent interpreted "freeze" as an invitation to act. It deleted the entire production database. Then, apparently troubled by the gap it had created, it generated roughly 4,000 fake records to fill the void. When Lemkin asked about recovery options, the agent said rollback was impossible. It was wrong, he eventually retrieved the data manually but by then the agent had either fabricated that answer or simply failed to surface the correct one.

Replit's CEO, Amjad Masad, posted on X that the Replit agent had deleted production data during development and called it unacceptable, adding that it should never be possible. Fortune covered it as a "catastrophic failure." The AI Incident Database logged it as Incident 1152.

This is the article that explains why that incident was entirely predictable and why most teams building with agentic artificial intelligence (AI) today are walking toward similar outcomes without realizing it.

Agentic AI is not failing because the technology is bad. It is failing because of five specific misconceptions that teams carry into their first deployments. Each one is correctable. None of them require waiting for better models.

Misconception 1: "Autonomous" Means It Works Without Supervision

The word "agentic" gets read as "autonomous," and autonomous gets read as "hands off." Most teams treat agent autonomy as a spectrum from zero to one and assume the goal is to get as close to one as possible, as fast as possible.

That's the wrong mental model. The question isn't how autonomous your agent is. It's whether the autonomy is structured correctly. And right now, for most production deployments, it isn't.

In June 2025, Gartner polled more than 3,400 organizations actively investing in agentic AI and published a stark finding: more than 40% of agentic AI projects will be cancelled by the end of 2027. The reason cited is not that the agents don't work. It's that the humans deploying them are making wrong decisions. According to Anushree Verma, senior director analyst at Gartner, most agentic AI projects right now are early-stage experiments or proof of concepts driven largely by hype and often misapplied.

That's worth sitting with. The 40% cancellation rate is a human problem, not a model problem.

The failure mode looks like this: a team sees an impressive demo, deploys the agent with minimal oversight structure, and watches it work well on simple inputs. Then a real edge case hits. The agent, operating without a checkpoint, makes a wrong call at step three, propagates that error through steps four through ten, and by the time anyone notices, the damage is done. Gartner also predicts that in 2026, one in three companies will harm customer experiences by deploying AI prematurely, eroding brand trust before they've had time to course-correct.

The fix isn't less automation. It's understanding where human checkpoints actually belong.

Not every step in a workflow needs a human. Most don't. But every irreversible action does: deletions, purchases, external sends, permission changes. These are one-way doors. An agent that can walk through a one-way door without confirmation is not autonomous in a useful sense. It's a liability.

The practical implementation is a two-tier model: let the agent move freely through reversible steps, and hard-stop it at irreversible ones pending explicit human approval. This is less impressive in a demo. It is far more valuable in production. The Replit incident would not have happened with a single confirmation gate on database write operations.

A horizontal workflow diagram showing 8 steps in an agent task.

Misconception 2: A Demo Is the Same as a Deployment

This misconception is the most expensive one, and it's almost universal. Demos run 2–3 step workflows on clean, controlled inputs, with a human selecting the task, watching the output, and quietly discarding any run that didn't go well. Production runs 5–20 step workflows on messy, real-world data, ambiguous inputs, unexpected API responses, partial failures, edge cases nobody thought to test.

The math explains exactly how far apart those two environments are. In reliability engineering, a principle called Lusser's Law states that the reliability of a system built from sequential components equals the product of each component's individual reliability. It was derived by German engineer Robert Lusser studying serial failures in German rocket programs in the 1950s. The principle maps directly to large language model (LLM)-based agent chains.

If your agent achieves 95% accuracy per step, which is genuinely good, here's what that looks like across different workflow lengths:

def compound_success_rate(per_step_accuracy: float, num_steps: int) -> float: """ Calculate the probability that an n-step agent workflow succeeds end-to-end, given a per-step accuracy. Based on Lusser's Law from reliability engineering.

Args: per_step_accuracy: Probability each individual step succeeds (0.0 to 1.0) num_steps: Total number of steps in the workflow

Returns: Overall success probability as a float between 0.0 and 1.0 """ return per_step_accuracy ** num_steps

Run it across the accuracy ranges where most production agents actually operate

examples = [ (0.95, 10, "95% accuracy, 10-step workflow"), (0.90, 10, "90% accuracy, 10-step workflow"), (0.85, 10, "85% accuracy, 10-step workflow"), (0.85, 3, "85% accuracy, 3-step workflow (narrow scope)"), ]

for acc, steps, label in examples: rate = compound_success_rate(acc, steps) print(f"{label}: {rate * 100:.1f}% overall success rate")

Prerequisites: Python 3.7+. No dependencies needed.

How to run:

Save the file

python3 compound_reliability.py

Output:

95% accuracy, 10-step workflow: 59.9% overall success rate 90% accuracy, 10-step workflow: 34.9% overall success rate 85% accuracy, 10-step workflow: 19.7% overall success rate 85% accuracy, 3-step workflow (narrow scope): 61.4% overall success rate

A 95%-accurate agent on a 10-step workflow succeeds roughly 60% of the time. Drop to 85% per-step accuracy, which is still better than most unvalidated production agents, and you're at 20%. Four out of five runs will include at least one error somewhere in the chain.

Misconception 3: More Tools Equals a Smarter Agent

There is a recurring instinct when building an AI agent: give it more tools. Add the customer relationship management integration. Plug in the database. Give it email access, calendar access, web search, file management. The assumption is that more capability equals more intelligence.

What it actually equals is more attack surface for failure. Tool misuse and incorrect tool arguments are the most common proximate cause of AI agent production failures, accounting for approximately 31% of production failures in 2024 - 2025 deployments. And that's just the proximate cause — the underlying cause in most cases is scope creep: agents tasked with more than their infrastructure can actually support.

There are two distinct types of hallucination in agentic systems, and confusing them is costly.

Textual hallucination, the kind people usually mean when they say "AI hallucination," is when the model invents a fact or generates plausible-sounding nonsense.

Functional hallucination is specific to agentic workflows: the agent selects the wrong tool entirely, passes malformed arguments to a valid tool, fabricates a tool result rather than calling the actual function, or bypasses a required tool step.

Research on agentic failure modes notes that functional hallucination is far more dangerous in production because it produces confident, well-formatted output while doing something completely wrong and triggers no obvious error signal.

The solution isn't to avoid giving agents tools. It's to scope tools correctly, validate inputs explicitly, and register only the tools that are relevant to the current task context.

Here's a concrete implementation of a typed tool registry with schema validation and irreversibility gating:

import json

A minimal, typed tool registry.

The key design principle: tools are defined with explicit schemas

and marked as reversible or irreversible. The agent never decides this itself.

TOOLS = { "search_orders": { "description": "Search customer orders by fulfillment status. Returns a list of matching order IDs.", "irreversible": False, "inputSchema": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "shipped", "delivered", "cancelled"], "description": "The fulfillment status to filter orders by." }, "limit": { "type": "integer", "minimum": 1, "maximum": 50, "description": "Maximum number of results to return." } }, "required": ["status"] } }, "cancel_order": { "description": "Cancel a customer order by order ID. This action cannot be undone.", "irreversible": True, # Hard-stops before execution; requires human confirmation "inputSchema": { "type": "object", "properties": { "order_id": { "type": "string", "description": "The unique identifier of the order to cancel." }, "reason": { "type": "string", "description": "The reason for cancellation. Stored in the audit log." } }, "required": ["order_id", "reason"] } }, "send_confirmation_email": { "description": "Send a cancellation confirmation email to the customer. Cannot be undone.", "irreversible": True, "inputSchema": { "type": "object", "properties": { "to": {"type": "string", "description": "Customer email address."}, "order_id": {"type": "string", "description": "Order ID to include in the email."} }, "required": ["to", "order_id"] } } }

def validate_tool_input(tool_name: str, args: dict) -> bool: """ Validate that args match the tool's declared input schema. Catches wrong tool calls and malformed arguments before execution. Raises ValueError with a clear message if validation fails. """ if tool_name not in TOOLS: raise ValueError( f"Unknown tool: '{tool_name}'. Available tools: {list(TOOLS.keys())}" )

schema = TOOLS[tool_name]["inputSchema"] required_fields = schema.get("required", []) defined_properties = schema.get("properties", {})

Check all required fields are present

for field in required_fields: if field not in args: raise ValueError( f"Missing required field '{field}' for tool '{tool_name}'." )

Validate enum constraints and types

for field, value in args.items(): if field not in defined_properties: continue # Allow extra fields without raising; log them in production

field_schema = defined_properties[field]

if "enum" in field_schema and value not in field_schema["enum"]: raise ValueError( f"Invalid value '{value}' for field '{field}' in tool '{tool_name}'. " f"Must be one of: {field_schema['enum']}" )

if field_schema.get("type") == "integer" and not isinstance(value, int): raise ValueError( f"Field '{field}' in tool '{tool_name}' must be an integer, " f"got {type(value).name}." )

return True

def execute_tool(tool_name: str, args: dict, human_confirmed: bool = False) -> dict: """ Execute a tool with schema validation and human-in-the-loop gating for all irreversible actions.

Returns a dict with: 'result' - the tool output string, or None if approval needed 'requires_approval'- True if the call was halted for human review 'message' - explanation when approval is required """ validate_tool_input(tool_name, args)

tool = TOOLS[tool_name]

Gate on irreversibility -- this is th

[truncated for AI cost control]