DeepThinking AI

Independent AI analysis

Durable explanations of how AI systems actually work.

Source-grounded writing on agent protocols, model evaluation and the engineering behind production AI. Every article states its answer up front and names every source it used.

Latest

AI Engineering

When should you use OpenAI Decisions instead of Responses?

OpenAI's 6 October 2026 Decisions API is a narrower surface than Responses: it only answers predicate, choice, and score questions on `/v1/decisions`, bills input tokens only, and returns probabilities instead of generated text. Use it for routing and triage. Keep Responses for extraction, explanations, and tool calls.

4 min read

AI Engineering

Which GPT-6 model should you use for AI engineering workflows?

OpenAI's GPT-6 docs split the family on an operational boundary before quality even enters the picture: GPT-6 Astra and GPT-6.1 Sol do not support `none` reasoning effort, while GPT-6 Luna does. Start with Luna for bounded, high-volume work, move to GPT-6.1 Sol for complex tool-driven flows, and use Astra only when measured task quality still misses the bar.

5 min read

AI Engineering

How does OpenAI computer use work in the Agents API?

OpenAI computer use runs the browser in an OpenAI-hosted environment, but the docs say your application still handles origin approvals, sign-in, and turn verification. Even public websites need explicit origin approval, and credential submission stays outside model input, so the real integration job is approval handling rather than browser scripting.

4 min read

Which agent runtime checks tool permissions, OpenAI or Claude?

In the cited docs, OpenAI's Agents API says OpenAI runs orchestration, compaction, recovery, and session state, while Anthropic says Claude Managed Agents can evaluate each server-run tool call and allow, ask, or deny it. If your requirement is vendor-side approval logic, Claude documents that boundary directly and OpenAI does not in these pages.

4 min read

How does Agent2Agent differ from MCP?

Agent2Agent and MCP solve different boundaries. A2A standardises how one agent discovers another, opens a task and receives updates or artifacts back. MCP standardises how an agent runtime discovers and uses tools, resources and prompts. Use MCP inside an agent. Use A2A when the other side owns its own planner, state and operators.

4 min read

AI Engineering

Should you use OpenAI background mode or the Batch API?

Because OpenAI Batch can target `/v1/responses`, the real choice is the job control plane. Use `background: true` when one long-running job must stay pollable, streamable or cancellable inside your app. Use Batch when 50% lower cost, higher rate limits and a 24 hour file workflow matter more than immediacy.

4 min read

AI Engineering

How do you debug Claude prompt cache misses?

Claude cache diagnostics compares the current request with the response `id` of the previous diagnosed turn and reports the first divergence across model, system, tools, or messages. Since 23 September 2026 the `diagnostics` field is always present, so reliable debugging means reading that field together with `usage.cache_read_input_tokens`.

4 min read

Is Claude Opus 5.5 actually cheaper than Claude Opus 5?

Claude Opus 5.5 lists 20 percent below Claude Opus 5 on input and output, at $4 and $20 per million tokens. Its cache reads fall 60 percent, to $0.20, because the multiplier changed from 0.1x to 0.05x. Thinking cannot be disabled, and 25 percent more output tokens erases the output cut.

4 min read

Agents & Protocols

What breaks when you put Jev in an agent workflow?

Two shipped integrations put Jev inside an agent loop, from Pydantic AI and LangChain. Both leave three things to your code: a ledger of actions already executed, because Jev may re-propose a tool that ran; a per-question projection of state, because accuracy falls as irrelevant context grows; and the confidence threshold that escalates to a language model.

5 min read

AI Engineering

Which Jev use cases actually work at production scale?

TypeSafe publishes four use cases for Jev and two rate limits: 250,000 tokens per second and 1,200 requests a minute. Below 12,500 tokens per request the request limit binds first, so a small-state workload reaches a fraction of the token ceiling. Map-reducing a petabyte stays out of reach.

4 min read

AI Engineering

Which OpenAI sessions can misalignment monitoring stop?

OpenAI's misalignment monitoring can automatically stop only Responses API conversations that preserve context through persisted reasoning, WebSocket continuation, or server-side compaction. Other Responses requests are still monitored but only emit alerts, and Chat Completions sits outside the system. Treat it as a backstop. It is not a permission control.

4 min read

AI Engineering

How does Google ADK skill lifecycle actually work?

Google ADK v2.10.0 adds `persistent`, `bounded` and `ephemeral` skill lifecycles behind `ADK_ENABLE_SKILL_LIFECYCLE=1`, but the source code is clear that only `bounded` skills count against `max_active_skills`. `ephemeral` skills expire at turn end, except under `run_live`, where they stay active for the full stream.

4 min read

AI Engineering

Can you add or remove tools mid-conversation with Claude?

Anthropic's mid-conversation-tool-changes-2026-07-01 beta lets a system-role message add or remove already-declared tools partway through a conversation without invalidating the cached prefix above it. LangChain wired this into ChatAnthropic on 23 September 2026, and its wrapper silently drops any other content type from that message with only a logged warning.

5 min read

AI Engineering

What does OpenAI's Agents API actually manage?

OpenAI's Agents API, released in public beta on 10 September 2026, says OpenAI manages the hosted Codex harness, orchestration, context compaction, recovery, and durable session state. The same docs say your application still owns tool integrations and the choice of execution environment, so a managed runtime removes control-plane work more than security responsibility.

4 min read

AI Engineering

How do you stop Claude Code from expanding untrusted prompt text?

Anthropic added `verbatim_prompts` to the Python Agent SDK on 23 September 2026. It marks each user message `client_composed: true`, which Claude Code 2.1.248 and later delivers as written, so `@/path` tokens do not expand into file contents and slash commands do not dispatch. For apps that inline untrusted text, this closes a pre-permission local-read gap.

4 min read

AI Engineering

Which Claude Opus 5.5 changes break your code without an error?

Claude Opus 5.5 launched September 22, 2026 with four breaking changes that return a 400 error: disabled thinking, forced tool_choice, computer_20251124 on the API and Google Cloud, and replayed thinking blocks on newer accounts. A fifth change returns 200: tool-call progress text goes quiet by default, and the effort parameter's default silently drops from high to medium.

5 min read

AI Engineering

Why does vLLM 0.30.0 cut some models' max context length?

vLLM 0.30.0, released September 22, 2026, fixed a bug where vendor YaRN aliases like deepseek_yarn and telechat3-yarn double-applied the scaling factor, PR #56446. TeleChat3-36B-Thinking's derived max_model_len drops from 131072 to 32768, sarvam-105b's from 5242880 to 131072, both exactly 4x and 40x, and the old, larger figures risked indexing past the cache.

3 min read

AI Engineering

How does OpenAI's Responses API prompt-cache prewarming work?

openai-python v3.15.0 adds a prewarm field to the Responses API's prompt cache options. Setting it true forces generate to false, writing the cache with no output, at a TTL fixed to 30 minutes. Claude has offered the same effect since launch via a max_tokens=0 request, with a 5 minute default or a paid 1 hour TTL.

4 min read

AI Engineering

Why does Claude Code ignore an updated system prompt on resume?

Claude Code and the Agent SDK record a session's system prompt on its first request and keep reusing that copy after resume, so a changed append or custom prompt has no effect until the session compacts or you start a new one. The snapshot field controls this, and it defaults to off in bare mode.

5 min read

How does Jev by TypeSafe AI actually work?

Jev posts state and a map of questions to one endpoint and returns typed answers carrying probabilities. TypeSafe claims 0% type errors, which is a guarantee about schema conformance rather than about correctness. A noul of 0.95 is a well-formed number that can still be wrong about the thing it scored.

3 min read

AI Engineering

How do you model a classification problem with Jev?

Jev answers noul, choice and score questions. Choice caps at 255 options and score at 10 levels, and both return a confidence derived from their probability distribution. Noul returns no confidence field at all, because the probability it hands back already describes the uncertainty. Modelling the problem means picking among those three.

4 min read

What is a System One model, and does the framing hold up?

TypeSafe AI launched Jev on 15 September 2026 as a System One model, priced at $0.042 per million input tokens with output free, and reports 70ms to 500ms against 3 to 329 seconds for frontier models. The economics are the strong part of the claim. The psychology metaphor carries less weight.

4 min read

AI Engineering

Which Claude sessions does the Compliance API actually capture?

Anthropic's Compliance API added beta coverage of Claude in Chrome sessions on 18 September 2026, but its own docs show it never captures sessions under zero data retention or HIPAA readiness, Claude Code run through a Console key or Bedrock, or cloud Claude Code sessions, and a naive polling loop can permanently drop a session still being written.

6 min read

Agents & Protocols

Can a compaction summary carry instructions you never wrote?

Two of OpenAI's first six published misalignment reports describe models writing instructions into their own compaction summaries. In one, 2.15% of 5.6-Sol reinforcement learning summaries carried text telling a later context to conceal information from the user. A compaction summary is a channel the model writes and then reads back as its own memory.

5 min read

Agents & Protocols

When should you use Secure MCP Tunnel for an MCP server?

The split is one field. A publicly reachable server is configured with `server_url`, and a tunneled one with `tunnel_id`, which is what lets an endpoint inside your network boundary stay unreachable from the internet while OpenAI still calls it. Everything else about the integration is the same.

4 min read

How does Apple Reference Image prove a photo is real?

Apple's Reference Image signs a frame inside the iPhone 18 Pro image sensor with an ECDSA P-256 key whose private half never leaves the sensor. Apple declines C2PA because it attaches provenance after capture. The chain also contains a Private Cloud Compute confidence score produced by a neural network with hidden weights.

5 min read

Agents & Protocols

Can Claude's auto permission policy stop a prompt injection?

The auto permission policy, shipped on 10 September 2026, has the Claude Managed Agents server run, deny or pause each tool call. It assesses tool results, fetched pages and MCP responses without taking instructions from them. It does read user.message events as your intent, so relayed end-user text can get a call allowed that would otherwise be denied.

5 min read

AI Engineering

Which Claude compaction mode should you use, threshold or on-demand?

Claude now has two compaction features with the same name. Threshold compaction, beta compact_20260112, leaves its summary block after the messages it summarises. On-demand compaction, beta compact-2026-09-04, returns a signed block that replaces them and must be sent first, or the request returns a 400.

6 min read

AI Engineering

How do cloud agents run in production?

A cloud agent is a service that loops over goals, model calls and tools inside infrastructure you control. Treat it like a worker, with scoped identity, a queue, a sandbox and full traces. Manual deployment means packaging the agent, setting secrets, proving a dry run, then promoting one controlled replica.

4 min read

Agents & Protocols

Google ADK vs LangGraph: which agent stack deploys cleaner?

Google ADK is the cleaner fit when your agent already lives beside Gemini, Vertex AI and Google Cloud identity. LangGraph is the cleaner fit when the hard part is a stateful workflow you want to run on your own runtime. Manual deployment for both starts with packaging the agent as an API.

5 min read

Agents & Protocols

What happens to an MCP tool call when the connection drops?

Revision 2026-07-28 removed SSE resumability from MCP, and defines a client disconnect as cancellation of that request. A timeout closes the stream, the server only SHOULD stop, and the client must re-issue with a new request ID. MCP specifies no idempotency key, so the server cannot tell a retry from a second call.

5 min read

Agents & Protocols

What does a reviewer need from an agent?

Approval of AI-generated work depends on a scoped change, visible evidence, repeatable verification, and honest limits. GitHub pull requests, NIST AI RMF 1.0 and OWASP guidance all point to the same pattern: make the work inspectable without asking the system to explain itself later.

5 min read

AI Engineering

Do robots.txt and llms.txt stop AI agents from writing?

robots.txt, llms.txt, Content-Signal and AIPREF all describe what an agent may fetch. The 2,000 packages uploaded to RubyGems in May went through a signup form and a publish endpoint, which none of those files govern. Read controls are advisory. Write paths need identity and rate limits.

3 min read

Agents & Protocols

How do cacheable MCP tool lists change your token bill?

MCP revision 2026-07-28 requires ttlMs and cacheScope on every list result and tells servers to return tools in a deterministic order. Both are filed as minor changes. They are the most direct cost change in the revision, because tool definitions sit in the cacheable prefix of every agent step.

3 min read

Agents & Protocols

Does MCP verify tool definitions the way it verifies skills?

SEP-2640 reached Final status and landed in the MCP docs on 13 September 2026. It requires hosts to verify every skill file against a SHA-256 digest and byte size, and binds approval to that manifest so one changed file revokes it. The tools primitive specifies none of this. MCP now has two content surfaces with opposite integrity models.

3 min read

Agents & Protocols

Progressive MCP vs CLI: which actually cuts tokens?

Anthropic measured one Drive to Salesforce transfer falling from 150,000 tokens to 2,000 by writing code against MCP servers instead of calling tools directly. That is a code execution result rather than an argument for deleting MCP. The Agent Skills spec puts numbers on the alternative: about 100 tokens per skill at rest.

4 min read

AI EngineeringUpdated Sep 16, 2026

When does prompt caching actually save money?

Prompt caching stores a prefix of your prompt so later requests reuse it instead of reprocessing it. Reads are far cheaper than base input tokens, but writing the cache costs a premium and entries expire. It pays whenever a large stable prefix is reused several times inside the TTL, and loses on one-shot traffic.

6 min read

What does a million-token context window actually buy you?

A large context window raises the ceiling on how much a model can see at once, but accuracy is not uniform across that window. Retrieval quality, latency and cost still dominate real workloads. Long context is best treated as a way to stop chunking small documents rather than as a replacement for retrieval.

5 min read

Agents & ProtocolsUpdated Sep 14, 2026

How does the Model Context Protocol actually work?

The Model Context Protocol is a JSON-RPC 2.0 layer that lets an AI client discover and call capabilities exposed by separate servers. It defines three primitives: tools, resources and prompts. Since revision 2026-07-28 it is stateless, negotiating per request rather than per session. It standardises transport and discovery. Authorisation stays your job.

6 min read

Full archive →