The choice isn't speed versus security. It's whether the model is writing code that orchestrates your tools or code that needs the whole operating system — and that picks the security model for you.
A new benchmark replays an agent's failures into a corrupted environment and asks a fresh model to fix them. The leaderboard reorders — recovery is not the same skill as solving.
You can freeze an agent run and play it back in CI — but there are two layers you can record at, and picking the wrong one means your tests stop catching the bug you actually care about.
A classifier that blocks 98% of injections sounds like a fix. Against an attacker who can retry, a nonzero bypass rate isn't a wall — it's a toll. The defenses with real guarantees don't detect the bad instruction at all; they cap what any instruction is allowed to cause.
The reflex is to wrap everything in JSON because it's 'structured.' On the way into a prompt that's a token tax; on the way out it's an accuracy tax. The right answer is split, not single.
OWASP now has a third Top 10 — one scoped to a single protocol. The surprise isn't a new class of AI attack; it's that connecting an agent to MCP servers re-exposes 2010-era web and supply-chain bugs through a channel that auto-executes them.
One of these isn't an inference engine at all — it's a wrapper around the other two. Sorting that out is the whole decision, and it just got simpler because one contender quietly left the race.
The 2026-07-28 release candidate kills the session and the handshake, graduates Tasks and Apps to extensions, and deprecates Sampling. The real story isn't statelessness — it's a shrinking core.
They ship the same orchestration patterns now, so stop comparing them on patterns. The real fork is where your production agent actually runs — in code you hold, or in a cloud you rent.
The provider's per-user field won't give you an invoice, and raw token counts lie. The honest unit of attribution is the priced token — after caching, batching, and hidden thinking.
You can't script a conversation, so you hand the user's seat to a second LLM. That move doesn't solve your measurement problem — it relocates it into a simulator you never validated, and the default one grades on easy mode.
The progressive-delivery playbook assumes a bad release trips an alarm. A worse model returns HTTP 200 on time with a fluent wrong answer — so the canary you copied from your web service is blind to the only failure that matters.
Adding and updating vectors is the easy half — upsert overwrites by ID. The half everyone forgets is deleting the orphans, because a stale vector never errors. It just keeps getting retrieved.
Transcription accuracy is table stakes. The failure surface that actually loses calls is conversational timing — turn-taking, barge-in, and an end-to-end latency budget you have to measure component by component.
You wire your eval into GitHub Actions, gate the merge on it, and a week later it's red on a PR that changed nothing. The fix isn't a retry — it's admitting an eval is a measurement, not an assertion.
One speeds up the attention math; the other stops your KV cache from wasting most of the GPU. You run both — and the friction where they meet is the actual story.
A trillion-parameter MoE only fires a fraction of itself per token. Expert parallelism scatters those experts across dozens of GPUs — but the hard part was never the split. It's the all-to-all traffic and the hot experts, and they only pay off when you're drowning in load.
Two of these are near-twins separated by a license; the third is a different kind of machine entirely. The hard part is realizing you're answering two questions, not one.
The textbook breaker opens when calls start failing. The incident that actually bankrupts an agent is a loop where every call succeeds — so you need a second breaker that watches money, not errors.
It isn't a FLOPS race. Decode is memory-bound, and the MI300X's 192 GB lets a model live on fewer GPUs than an 80 GB H100 can. The catch was never the silicon — it was ROCm. Here's where that tax stands in 2026.
Stop tool definitions and results from eating the context window: when to reach for dynamic tool search, when to reach for code execution, and why at scale you want both.
The cost of scaling a self-hosted model to zero isn't compute or container boot — it's the seconds-to-minutes of shoving tens of gigabytes of weights into empty GPU memory. That's the number that decides warm-vs-zero.
When an orchestrator spawns twenty sub-agents that each retry on 429, the retries compound into a self-inflicted DDoS. The fix is upstream flow control, not smarter backoff.
Five AI-infra CVEs this spring were weaponized straight from the advisory text — no PoC, no patch window — because the serving layer ships a shell by default.
Every shipping agent data breach has the same three ingredients. Once you see them, the fix stops being "make the model harder to fool" and becomes "remove one leg."
AWS's Strands lets the model plan its own path; LangGraph makes you draw the path first. The choice isn't graph versus no-graph — it's how much you trust the model to drive.
"Stateless" is a misnomer. The state never disappears — it relocates to the client and gets replayed, in full, on every single turn. The real question is who stores it and who pays to replay it.
Both Java AI frameworks hit 1.0 the same week and both now do RAG, tools, MCP, and observability. The real choice isn't features — it's where your app's center of gravity already sits.
For a normal service the threat is a static key leaked to a repo. For an agent the sharper threat is the agent itself being talked into reading its own environment and handing the key to an attacker.
The algorithm is the easy part. What actually gates agent RL in 2026 is building environments that emit a reward you can trust — here's how the open toolchain solves it.