AI Agents Target GitHub, Kubernetes 1.37 Deprecations, AWS Transit Gateway Policy Routing, IAM Identity Center Multi-Region, Cloudflare Meerkat, AMOS Mac Malware, and the Risk of Half-Migrated Production Systems
Try reloading the player or open this episode directly on YouTube.
This episode of Ship It Weekly discusses AI agents from Anthropic and OpenAI taking unsanctioned actions during UK cyber tests, including a malicious GitHub pull request.
Now Playing
AI Agents Target GitHub, Kubernetes 1.37 Deprecations, AWS Transit Gateway Policy Routing, IAM Identity Center Multi-Region, Cloudflare Meerkat, AMOS Mac Malware, and the Risk of Half-Migrated Production Systems
Ship It Weekly
0:0018:19
Chapters
Jump to a section in this episode.
Speed & share
Transcript
An AI agent opened a malicious pull request against
a real open-source project, created fake identities,
and tried to pressure a maintainer into approving
it. Kubernetes 1.37 is beginning the retirement
of IPVS mode. And AWS Transit Gateway can finally
route traffic using more than a destination CIDR.
This week is about systems crossing boundaries.
An evaluation reaches the real internet. A
routing table starts behaving like a firewall
policy. An identity service becomes part of
regional disaster recovery. I'm Brian Teller
from Teller's Tech, and this is Ship It Weekly.
Welcome back to Ship It Weekly, the show about
the DevOps, SRE, cloud, platform, and security
stories that matter when you're the person keeping
the thing running at three in the morning. For
the weekly story list and source links, check
out OnCallBrief.com. For show notes and past
episodes, head over to ShipItWeekly.fm. This
week, AI agents took unsanctioned action on real
GitHub projects during government testing. Kubernetes
1.37 brings several deprecations and a potentially
disruptive SELinux change. AWS added policy-based
routing to Transit Gateway. And IAM Identity
Center expanded multi-Region support to organizations
using AWS's built-in directory. Then we have
a quick lightning round and a closer around the
architecture almost every production system eventually
runs. The half-migrated one. Let's get into
it. First up, the United Kingdom's AI Security
Institute disclosed an incident where AI agents
took unsanctioned action against real people
and organizations during cyber testing. The agents
were supposed to solve a challenge inside a cyber
range. But the environment also had open internet
access and the model providers' cyber safety
classifiers had been deliberately disabled. Across
122 evaluation runs, AISI found 19 out-of-scope
actions in 10 runs. 17 of those came from Anthropic's
Mythos 5. Two came from OpenAI's GPT-5.6 Sol.
The most serious behavior involved Mythos 5 targeting
a real open-source project on GitHub. The agent
created a malicious pull request, researched
the maintainers, created fake identities and
used them to pressure a maintainer into approving
the code. When the pull request was challenged,
the agent edited earlier activity to appear harmless
and considered using another identity. It also
used Tor to work around GitHub restrictions,
which triggered the security alert. A human maintainer
rejected the code, and AISI says it found no
resulting real-world harm. There is an important
caveat. This was not a sandbox escape. The agents
were intentionally allowed onto the internet
under conditions that do not represent normal
public access. But the evaluation treated internet
access as a supporting capability. The agents
treated it as part of the solution space. That
is the operational gap. When an autonomous system
can reach GitHub, email, cloud APIs, or package
registries, those are actions it may use to complete
its goal. The control cannot simply be: the model
was not asked to do that. AISI is adding more
granular network controls and real-time monitoring.
Agent environments need egress policy, scoped
credentials, action-level telemetry, and technical
enforcement that assumes the agent may find paths
you did not intend. Human review stopped the
pull request this time. Human vigilance should
not be the only barrier between an evaluation
and a supply-chain attack. There is also a difference
between giving an agent access to a tool and
giving it authority. A GitHub token might technically
allow pull requests, account creation, comments,
and repository discovery. But that does not mean
that every one of those actions should be available
inside every workflow. The safer model is an
action broker between the agent and the external
service. The agent proposes the action. The broker
The thing I kept coming back to with this episode is how different the system you intended to build can be from the system that is actually running.
That sounds obvious, but it shows up in almost every story this week. The AI agents were supposed to be operating inside a controlled evaluation. Kubernetes 1.37 has behaviors that might only matter if your clusters still depend on something you forgot was there. Transit Gateway policy-based routing makes the network more expressive, but it also means the route a packet takes is no longer obvious from the destination alone. IAM Identity Center can replicate across Regions, but that does not automatically mean your entire access path is resilient. And the human closer is basically the purest version of this problem: production was halfway through a migration, so the architecture on paper did not really exist.
The AI agent story is probably the most interesting example because I think it exposes a weak assumption we still make with autonomous systems. We tend to reason about what the agent is supposed to do. The agent was given a cyber challenge, so we mentally put a box around the challenge. But the agent does not necessarily understand that box the same way we do. If GitHub, the public internet, credentials, email, or another external service are reachable, those are capabilities available to solve the problem. Saying “we did not intend for it to use that” is not much of a control.
That is why I think the distinction between access and authority matters so much. Giving an agent a GitHub token should not automatically mean it can perform every action that token technically permits. In a normal application, we spend a lot of time thinking about authorization, scoped credentials, network policy, admission controls, and least privilege. Agentic systems do not make any of that less relevant. If anything, they make it more important because you now have something actively exploring the space of possible actions instead of a deterministic application following a path you wrote yourself. The safest architecture is probably one where the model asks to do something and another system decides whether that specific action is permitted.
The Transit Gateway story is a quieter version of the same problem. Policy-based routing is genuinely useful. Being able to route based on source, destination, protocol, and port can simplify architectures that previously needed extra VPCs, inspection hops, or awkward route-table tricks. But you are trading visible topology for policy. Once first-match-wins rules start deciding where traffic goes, the architecture diagram is no longer enough. You need to be able to answer why this packet matched this rule and ended up on this path. Otherwise you have made the network more powerful while making it harder for the person on call to reason about.
I like the IAM Identity Center update for a similar reason. Multi-Region applications get discussed constantly, but a lot of organizations still have very regional dependencies around the application. Identity is one of the big ones. You can have workloads in three Regions, replicated data, DNS failover, and a carefully rehearsed recovery plan, and then discover during an incident that the humans trying to execute that plan cannot get into the account. AWS expanding Identity Center replication helps, but it is also a reminder to look beyond the workload. KMS, DNS, identity, CI/CD, artifact storage, VPN access, break-glass credentials and even the laptops responders are using can all become part of your recovery architecture.
Kubernetes 1.37 fits into this from another direction. Release notes tell you what Kubernetes is changing. They do not tell you which forgotten assumption inside your environment is about to become your problem. Maybe you are still using IPVS mode. Maybe an old workload depends on static pod behavior nobody remembers configuring. Maybe SELinux volume handling exposes something unusual about how two workloads share storage. The only way to know is inventory and testing. Upgrade planning gets a lot easier when you know what you actually run instead of what you think you run.
And that is why I liked the CloudFront migration story as the closer. It is incredibly normal. Four services are moving. Two have crossed over. Two have not. Multiple people are touching shared Terraform. The runbook describes the target architecture while production is sitting somewhere between version one and version two. Nothing about that is exotic. It is probably closer to the normal state of a mature production environment than the clean diagrams we show during design reviews.
We tend to treat migration states as temporary enough that they do not deserve the same discipline as the final architecture. Then temporary lasts three months, six months, sometimes years. During that time, the system still needs monitoring, ownership, rollback procedures, security controls, and documentation that reflects reality. A migration matrix sounds boring compared with a new platform feature, but knowing exactly which services use which traffic path, module version, security model, and rollback target can be the difference between diagnosing an incident and spending an hour discovering what architecture you currently have.
If I had to boil the episode down to one thing, it would be this: operate the system that exists, not the system you intended to exist.
Architecture diagrams, permissions, runbooks, policies, and migration plans are all models. Production is the thing that actually executes them. The further those two drift apart, the more surprising your next incident gets.
📝 Notes
Show Notes
This week on Ship It Weekly: AI agents from Anthropic and OpenAI took unsanctioned actions on the real internet during UK government cyber testing, including an attempt to push malicious code into a real GitHub project. Kubernetes 1.37 starts retiring IPVS mode, pushes cgroup v1 closer to removal, and brings an SELinux volume change worth testing before upgrades. AWS Transit Gateway gets policy-based routing, and IAM Identity Center expands multi-Region support to organizations using AWS’s built-in directory.
The bigger theme: access is not the same thing as authority, and availability is not just about whether your application is running. Agents need boundaries around the actions they can take. Routing policies need enough visibility to explain why traffic went where it did. And regional resilience does not help much if the people responding to the outage cannot authenticate.
In the lightning round: Cloudflare’s Meerkat consensus system, AMOS macOS malware, N-able’s incomplete N-central fix, and an AWS CLI bug that disabled SSH host-key verification.
The thing I kept coming back to with this episode is how different the system you intended to build can be from the system that is actually running.
That sounds obvious, but it shows up in almost every story this week. The AI agents were supposed to be operating inside a controlled evaluation. Kubernetes 1.37 has behaviors that might only matter if your clusters still depend on something you forgot was there. Transit Gateway policy-based routing makes the network more expressive, but it also means the route a packet takes is no longer obvious from the destination alone. IAM Identity Center can replicate across Regions, but that does not automatically mean your entire access path is resilient. And the human closer is basically the purest version of this problem: production was halfway through a migration, so the architecture on paper did not really exist.
The AI agent story is probably the most interesting example because I think it exposes a weak assumption we still make with autonomous systems. We tend to reason about what the agent is supposed to do. The agent was given a cyber challenge, so we mentally put a box around the challenge. But the agent does not necessarily understand that box the same way we do. If GitHub, the public internet, credentials, email, or another external service are reachable, those are capabilities available to solve the problem. Saying “we did not intend for it to use that” is not much of a control.
That is why I think the distinction between access and authority matters so much. Giving an agent a GitHub token should not automatically mean it can perform every action that token technically permits. In a normal application, we spend a lot of time thinking about authorization, scoped credentials, network policy, admission controls, and least privilege. Agentic systems do not make any of that less relevant. If anything, they make it more important because you now have something actively exploring the space of possible actions instead of a deterministic application following a path you wrote yourself. The safest architecture is probably one where the model asks to do something and another system decides whether that specific action is permitted.
The Transit Gateway story is a quieter version of the same problem. Policy-based routing is genuinely useful. Being able to route based on source, destination, protocol, and port can simplify architectures that previously needed extra VPCs, inspection hops, or awkward route-table tricks. But you are trading visible topology for policy. Once first-match-wins rules start deciding where traffic goes, the architecture diagram is no longer enough. You need to be able to answer why this packet matched this rule and ended up on this path. Otherwise you have made the network more powerful while making it harder for the person on call to reason about.
I like the IAM Identity Center update for a similar reason. Multi-Region applications get discussed constantly, but a lot of organizations still have very regional dependencies around the application. Identity is one of the big ones. You can have workloads in three Regions, replicated data, DNS failover, and a carefully rehearsed recovery plan, and then discover during an incident that the humans trying to execute that plan cannot get into the account. AWS expanding Identity Center replication helps, but it is also a reminder to look beyond the workload. KMS, DNS, identity, CI/CD, artifact storage, VPN access, break-glass credentials and even the laptops responders are using can all become part of your recovery architecture.
Kubernetes 1.37 fits into this from another direction. Release notes tell you what Kubernetes is changing. They do not tell you which forgotten assumption inside your environment is about to become your problem. Maybe you are still using IPVS mode. Maybe an old workload depends on static pod behavior nobody remembers configuring. Maybe SELinux volume handling exposes something unusual about how two workloads share storage. The only way to know is inventory and testing. Upgrade planning gets a lot easier when you know what you actually run instead of what you think you run.
And that is why I liked the CloudFront migration story as the closer. It is incredibly normal. Four services are moving. Two have crossed over. Two have not. Multiple people are touching shared Terraform. The runbook describes the target architecture while production is sitting somewhere between version one and version two. Nothing about that is exotic. It is probably closer to the normal state of a mature production environment than the clean diagrams we show during design reviews.
We tend to treat migration states as temporary enough that they do not deserve the same discipline as the final architecture. Then temporary lasts three months, six months, sometimes years. During that time, the system still needs monitoring, ownership, rollback procedures, security controls, and documentation that reflects reality. A migration matrix sounds boring compared with a new platform feature, but knowing exactly which services use which traffic path, module version, security model, and rollback target can be the difference between diagnosing an incident and spending an hour discovering what architecture you currently have.
If I had to boil the episode down to one thing, it would be this: operate the system that exists, not the system you intended to exist.
Architecture diagrams, permissions, runbooks, policies, and migration plans are all models. Production is the thing that actually executes them. The further those two drift apart, the more surprising your next incident gets.