OpenAI Shipped GPT-6 Astra With a Monitoring Layer Your Agent Does Not Have OpenAI released GPT-6 Astra on 3 September 2026, its most capable model to date, with agentic scores of 74.1% on DeepSWE v1.1 and 72.6% on OSWorld 2.0. The model is the first to reach OpenAI's 'Critical' cybersecurity capability level, prompting the company to deploy misalignment monitoring and blocking evaluations around tool-using inference. OpenAI staged the rollout to cybersecurity defenders first, with wider access planned in coming days. Name the tool call your agent made yesterday that wrote to the database twice. A few hundred went out. You cannot point at that one. You have the provider dashboard, so you know how many tokens went out. You have request logs, so you know a session opened at 09:14 and closed at 09:21. You have Sentry, so you know nothing threw. What you do not have is the ordered list of what the model asked for and what came back. That gap was survivable while agents mostly summarised text. The model OpenAI released on 3 September 2026 is a reasonable argument for why it is less survivable now, and the reason sits in everything OpenAI bolted on around the model before letting anyone touch it rather than in the benchmark table. GPT-6 Astra landed on 3 September 2026, described by OpenAI as the most capable model it has broadly deployed. The agentic scores it reported at launch https://venturebeat.com/technology/welcome-to-the-agi-era-openai-launches-gpt-6-astra are 74.1% on DeepSWE v1.1 and 72.6% on the OSWorld 2.0 offline subset. Vendor figures, and they say the thing is meant to be pointed at tools. The part worth your attention is in the system card https://deploymentsafety.openai.com/gpt-6-astra , and none of it is a property of the weights. OpenAI deployed misalignment monitoring across tool-using inference in external deployment, using the same monitoring structure it runs internally, and added alignment evaluations that block a response rather than write it up afterwards. The card describes a layer of watching and gating built around the model, not only the model itself. OpenAI did that work at its own boundary, which is the inference call. Your boundary is one hop further down, where a string in a response becomes a DELETE or an outbound email. Nothing OpenAI monitors can see that hop, because it never leaves your process. Astra is also OpenAI's first model to reach the Critical level of cybersecurity capability under its own Preparedness Framework, and the card is specific about what it is describing: "with the right tools and access, GPT-6 Astra can find previously unknown security flaws and develop new ways to exploit them across many well-protected systems without a person guiding each step." That grade is OpenAI's own, against a bar OpenAI wrote. The monitoring and the blocking evaluations are what the company did about it. Here is the line from the system card that should bother you most, and it is not a scary one. In a simulation using more than 54,000 internal Codex tasks, Astra received roughly half as many flags for higher-severity misaligned behaviour as Sol system card https://deploymentsafety.openai.com/gpt-6-astra . Only the ratio is published, and the whole thing is OpenAI's simulation, OpenAI's flag definition, OpenAI's count. Take it as a vendor statistic. But look at what has to exist before anyone can write that sentence at all: Now try the equivalent sentence about the agent you deployed last quarter. How many runs tripped a rule this month, against how many runs total? For most teams the honest answer is that the ratio is undefined, because nothing counts the numerator and nothing counts the denominator. That is not the same as zero. An agent with no flags and an agent with no flag detector produce identical dashboards. The rollout carries the same message as the monitoring. Astra went first to organisations in OpenAI's Daybreak program for cybersecurity defenders https://www.nbcnews.com/tech/tech-news/openai-debuts-gpt-6-astra-security-measures-rcna595940 , with wider access for enterprise and consumer accounts announced as planned for the coming days. Staging a launch by who the customer is, rather than by region or by load, is an unusual order to pick. On the announced schedule, the head start the defenders got is measured in days. After that the capability sits behind an API key, wired into whatever agent anyone felt like building, including yours. That is not an argument that the model is unsafe to hand you. The argument is narrower: the visibility gap around your own tool calls stops being cheap to ignore. Nine fields. Each one exists because a question gets asked later and this is the field that answers it. The other four need less explaining. Cost per call, so a run carries a running total instead of a monthly surprise. Latency, which is the first signal that a tool is being called in a loop. A timestamp in UTC, ISO 8601, so sort does the right thing. And who approved, because for anything with a human in the loop, an approval nobody can point at is not an approval. The two that teams skip are decision and approvedBy , because a gate that blocks a call feels like it has done its job. It has not. Everything here runs on Node 24 with no build step and no dependencies. Save the files, run node main.ts , and Node strips the types on the way in. Start with the row and where it goes. JSON Lines, one object per line, appended. js // audit.ts import { appendFile, mkdir } from "node:fs/promises"; import { dirname } from "node:path"; export type ToolCall = { runId: string; callId: string; tool: string; input: unknown; output: unknown; decision: "allowed" | "blocked"; approvedBy: string | null; costCents: number; latencyMs: number; startedAt: string; }; const FILE = process.env.AUDIT LOG ?? ".audit/tool-calls.jsonl"; export async function record e: ToolCall : Promise