Iran sabotaged seven hundred French stores
France named a Revolutionary Guard unit as the author of a sabotage campaign against supermarket refrigeration, Meta moved application delivery off Terraform without rewriting it, and Shopify put a second model in charge of killing its attack agent.
How we Build
Meta kept Terraform for infrastructure and moved application delivery out from under it
Meta’s Cloud Foundation team is more than fifteen engineers supporting roughly 100 Kubernetes clusters across several cloud providers for AI research and inference. Terraform used to do two jobs there. It provisioned the infrastructure and deployed the applications running on it. A routine application update therefore waited on an infrastructure release, and nothing verified automatically that an application had come up healthy. The team left Terraform where it was and moved application delivery onto Argo CD, with Kargo promoting releases between environments. Deployments that took more than four hours now take minutes.
We tell a client that an old system is retired one seam at a time, and the parts still earning their place are left alone.
The core is replaced in slices, never rewritten wholesale.
This is the second source to reach that position and the first to support it. In October Anthropic’s source-control team described the opposite route, building a replacement and moving off git altogether in five months. Meta chose a seam instead and kept the provisioning tool it already trusted. What the account does not give is the comparison. Its figures set the new path against the old, and none says what a rebuild would have cost.
How we Assure
France names a Revolutionary Guard unit and summons an ambassador over frozen food
On the night of 11 to 12 October, remote refrigeration controllers across more than 700 French retail sites were driven to very high defrost temperatures. Food losses run to several tens of millions of euros. Fires started. France attributes the campaign to SHAHID KAVEH, a cyber-offensive unit affiliated with the electronic and cyber centre of the Islamic Revolutionary Guard Corps. It calls this the first purely destructive campaign conducted on French soil. CERT-FR lists four affected product families from three vendors, and its first instruction is to take their management interfaces off the public internet.
Our position is that a firm counts what it has exposed across everything it runs, rather than scoring one system at a time.
The enterprise is the unit of exposure, not the system.
Seven hundred sites did not each make a poor decision. One class of component, reachable from the internet because a refrigeration contractor needed to read it, carried the same weakness into every supermarket that bought it. A retailer reviewing its own systems one by one would have scored each store correctly. It would still have missed who else could reach the controller. The declaration does not say how many of the 700 knew the interface was reachable.
Shopify’s stop on its attack agent is a second model, and the run dies when that model does
Shopify runs an agent that attacks its own production systems, on live credentials it cannot alter. Rules of engagement permit any exploit against the target and forbid moving to other systems or keeping access once one works. The stop is a second agent on a different model. It reads the first one’s logs, reasoning and tool calls in real time, and can kill it mid-run. If that judge crashes or fails to adjudicate, the whole run ends. Shopify reports tens of thousands of engagements and dozens of findings acted on, with no outage. Its bug bounty reports are up almost 300% since 2024.
We ask that an agent always have somebody who can switch it off, and that the somebody be a named person rather than a rota.
Every agent and every automated decision has an identified person who can stop it.
The test behind that reads the stop as a person and not a post or a committee. Shopify’s stop is neither, because it is a model. This is the third source on the statement, after a simulated-day study in August and the Dutch fine against Uber in October, and it pulls against both. A person cannot read every tool call of a run that lasts seconds. The account leaves accountability open. A model that kills a run does not answer for one, and the statement names a person because somebody has to answer afterwards. If you have put a machine in that seat on a production system, we would like to know how you record who answers: transform@dromologue.ai.