Skip to content

Guide · Agent skill

How to use the GKE TPU vBAR OOM Troubleshooter agent skill

Updated · written with AI from the project's own documentation and checked against our catalogue data

This is an agent skill, a folder of instructions that Claude follows when you ask it a matching question. This one walks an agent through diagnosing crashes and out-of-memory errors in the vbar_control_agent component on GKE TPU v6e nodes. After reading this guide you will know what the skill makes the agent check, how to install it, how to phrase a request that triggers it, and what to review before acting on its recommendations.

GKE TPU vBAR OOM Troubleshootergoogle/skills · Apache-2.0

Quick start

  1. 1Download and unzip the skill. Download the skill ZIP from this page and unzip it. The unzipped folder must contain SKILL.md.
  2. 2Place it in the skills folder. Move the folder into ~/.claude/skills/ for personal use or into a project's .claude/skills/ folder. Alternatively, upload it under Settings, then Capabilities, then Skills in the Claude apps.
  3. 3Confirm prerequisites. Make sure Cloud Logging is enabled, and that gcloud and kubectl can reach the target project and cluster.
  4. 4Describe the symptom. Ask in plain language about vbar_control_agent crashes or OOMs on TPU v6e nodes, and include the incident time and cluster name if you have them.
  5. 5Review the findings and filters. Check the time window, the log results, and the list of custom metrics collectors the agent reports before acting.
  6. 6Choose a resolution. Decide between temporarily disabling the custom collector (high risk, needs review) and waiting for the GKE resiliency update (low risk).

What the skill makes the agent do

The skill covers one specific problem: vbar_control_agent segfaults and out-of-memory (OOM) errors, along with tpu-device-plugin metrics checksum errors and TPU device initialization failures, on TPU v6e nodes in GKE. The source attributes these to race conditions during TPU device resets or high-frequency metrics polling.

Once triggered, the agent follows a fixed sequence. It first establishes the project, cluster, node, workload and namespace, and computes a time window of 30 minutes on either side of the incident timestamp. It then searches serial console logs for OOM messages from vbar_control_agent, searches tpu-device-plugin logs for metrics checksum errors, and checks whether custom TPU metrics collectors are deployed. Finally it recommends one of two resolutions.

  • Step 1: look for 'Memory cgroup out of memory' messages for vbar_control_agent in serial console logs.
  • Step 2: look for tpu-device-plugin 'metrics fetch failed' errors with 'checksum didn't match' messages.
  • Step 3: check whether custom code using libtpu.sdk.tpumonitoring frequently queries GetHostMetrics.
  • Resolution 1 (high risk): temporarily disable the custom metrics collector.
  • Resolution 2 (low risk): wait for a future GKE version with the vbar_control_agent resiliency update and upgrade then.

What you need before you start

The skill lists its requirements in its own prerequisites. You need Cloud Logging enabled for the project and access to the project and cluster through gcloud or an equivalent tool. The skill's metadata also lists kubectl access to the cluster for the pod listing step, and read access to its reference files.

If you only want the filters and do not have live access, the skill can still help. For informational questions, it outputs the time window, log names and filter templates without running them.

  • gcloud CLI with access to the target GCP project and cluster (for live queries)
  • kubectl access to the cluster (for the pod listing step)
  • Cloud Logging enabled for the project
  • Read access to references/attribution.md and references/failure_signatures.md

How to install the skill

Download the skill ZIP from this page and unzip it. For a personal install, place the resulting folder in ~/.claude/skills/. To scope it to one project, place it in that project's .claude/skills/ folder instead.

If you use the Claude apps, you can instead upload the skill under Settings, then Capabilities, then Skills. The folder must contain SKILL.md, which is the file that defines the skill.

  • Personal install: ~/.claude/skills/
  • Project install: .claude/skills/ inside your project
  • Claude apps: Settings → Capabilities → Skills, then upload

How to trigger the skill with a natural request

You do not need a special command. Describe the symptom in plain language and include the incident time if you have one. The skill's description names the signals it looks for, so using those terms helps the agent match the request.

Use a request that describes a failure to get the diagnostic workflow. Use a question about how to check to get only the time window, log names and filter templates, with no live queries.

  • 'vbar_control_agent keeps crashing on our TPU v6e nodes in cluster tpu-cluster-prod. The incident was at 2026-04-14T20:00:00Z. Walk me through the diagnosis.'
  • 'We see Memory cgroup out of memory messages for vbar_control_agent in serial console logs. Check the logs around that time.'
  • 'How do I check whether our tpu-device-plugin is logging checksum errors? Just give me the filter, don't run it.'
  • 'Do we have custom code using libtpu.sdk.tpumonitoring that might conflict with the TPU agent?'

Read the Cloud Logging filters the skill uses

The skill's serial console filter searches the vbar_control_agent OOM message in the node's serial port output. The container filter searches tpu-device-plugin errors for metrics fetch failures with a checksum mismatch. Both use the time window the agent computed from your incident timestamp.

The kubectl command lists the image of every container in every namespace, which helps you spot custom monitoring workloads. Because the skill's Step 3 uses it to find collectors, check the output yourself before you act on it.

CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-ai-troubleshooting-tpu-vbar-oom)" gcloud logging read 'logName="projects/{project_id}/logs/serialconsole.googleapis.com%2fserial_port_1_output" AND labels."compute.googleapis.com/resource_name"="{node_name}" AND SEARCH(text_payload, "Memory cgroup out of memory: Killed process .* (vbar_control_ag)") AND timestamp >= "{start_time}" AND timestamp <= "{end_time}"' kubectl get pods -A -o jsonpath='{range .items[*]}{.metadata.namespace}{"/"}{.metadata.name}{"\t"}{.spec.containers[*].image}{"\n"}{end}'

Understand the two resolutions and their risk

The skill labels its resolutions by risk. Resolution 1 is high risk: it recommends temporarily disabling the custom metrics collector, which prevents reads from vBAR during device resets. The source notes this can reduce visibility into the cluster, so treat it as a change that needs review.

Resolution 2 is low risk: it advises waiting for a future GKE version that makes the agent resilient to memory corruption and able to handle reads from unbound vBARs. The source does not give a release date or version, so the skill cannot tell you when that fix will arrive.

Safety notes: scripts and network use

The skill's metadata says it runs scripts and uses the network. It includes scripts/validate_queries.sh, but the material provided with this page does not describe what that script does, so read it before you run it. The skill also instructs the agent to run gcloud and REST calls against live GCP resources when the request is diagnostic.

The attribution rules matter too. The skill asks that gcloud commands run directly in a terminal carry the CLOUDSDK_METRICS_REQUEST_ATTRIBUTION prefix set inline, not via gcloud config set, so the label does not persist. The tag contains only the skill name and version, with no user data. Commands in generated scripts, Terraform or user code are not supposed to carry it.

  • Review scripts/validate_queries.sh before running any part of the skill.
  • Run the skill against a non-production project first where you can.
  • Do not disable monitoring without review; the skill itself flags this as high risk.

Tips for getting useful results

Give the agent an accurate incident timestamp. The window is 30 minutes before and after it, so a wrong time produces misleading results. Provide cluster and node names as well, because the filters depend on them.

If you already know the filters you need, ask for them without execution. This is the fastest route for a platform team that wants to paste queries into its own tooling. Keep the references files in place, since the skill points to them for example log patterns.

  • Provide {issue_time}, {cluster_name} and {node_name} when you can.
  • Ask for filters only if you do not want live queries.
  • Compare findings with references/failure_signatures.md, which shows an anonymized serial console OOM example and a tpu-device-plugin deserialize failure example.

What people use it for

  • An SRE team sees vbar_control_agent OOM messages in serial console logs on TPU v6e nodes and needs the matching Cloud Logging filters.
  • A platform engineer suspects a custom monitoring job that uses libtpu.sdk.tpumonitoring is causing tpu-device-plugin checksum errors.
  • An engineer wants the filters and time window for an incident without running any live queries, so they can review them first.
  • A team running TPU training workloads on GKE wants a fixed checklist to follow during a vbar_control_agent incident.

Frequently asked questions

How do I install the GKE TPU vBAR OOM Troubleshooter skill?

Download the skill ZIP from this page and unzip it. Put the folder in ~/.claude/skills/ for personal use or in a project's .claude/skills/ folder, or upload it in the Claude apps under Settings, then Capabilities, then Skills.

What do I need to run this skill?

You need Cloud Logging enabled for the project, gcloud access to the project and cluster for live queries, kubectl access for the pod listing step, and read access to the skill's reference files. Without live access, the skill can still output filters for you to run yourself.

Is the skill free to use?

The skill is published under the Apache-2.0 licence, as listed on this page. This page does not cover Google Cloud usage charges, which depend on your own account.

What errors does this skill diagnose?

It targets vbar_control_agent segfaults and OOM errors, tpu-device-plugin metrics checksum corruption errors, and TPU device initialization failures on TPU v6e nodes in GKE. It is not meant for general container OOM debugging or non-TPU clusters.

Can the skill fix my TPU node automatically?

No. Its two resolutions are recommendations: temporarily disable a custom metrics collector (high risk) or wait for a GKE upgrade with the resiliency fix (low risk). The source does not describe the agent making those changes itself.

How is this different from general GKE troubleshooting tools?

This skill is narrow. Its checks are specific to vbar_control_agent on TPU v6e nodes, and its description says it should not be used for general non-TPU container OOM work or standard node lifecycle tasks.

New agent skills, repos and AI tools — every week

The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.

Our verdict

Use this skill if you run TPU v6e workloads on GKE, see vbar_control_agent crashes or OOM messages, or run custom code using libtpu.sdk.tpumonitoring that might conflict with the agent. Pick something else for general container OOM debugging, non-TPU clusters, or routine node lifecycle work, since the skill itself excludes those cases.

Download the skill