investigate-drift

Diagnose field-level divergence between Kubernetes live state and GitOps intent.

14|Updated Jan 17, 2026
One-click install
npx skills add https://github.com/confighub/cub-scout --skill investigate-drift
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: investigate-drift
Source: https://github.com/confighub/cub-scout/tree/main/skills/investigate-drift
Command: npx skills add https://github.com/confighub/cub-scout --skill investigate-drift

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill helps you explain why live Kubernetes state diverges from the intended GitOps/ConfigHub state, focusing specifically on whether the discrepancy is caused by controller reconciliation or by a manual bypass.

Core Features & Use Cases

  • Three-way drift comparison with attribution: Composes compare three-way (DRY/WET/LIVE) plus compare drift to identify exactly which fields differ and why.
  • Per-field “who wrote this” classification: Uses managedFields attribution (cause, managerHint) and provenance (gitSource, bindingSource when connected) to identify controller-drift vs manual-edit vs unknown.
  • Investigation-ready evidence: Produces structured mismatch outputs suitable for response planning (revert, port edit back to git, or accept an exception) without performing any mutations.

Quick Start

Ask it to compare a resource’s intended vs live state and report the divergent fields with the writer/cause, for example: investigate why Deployment or API settings in production differ from the git manifest and identify whether the controller or a human changed them.

Frequently Asked Questions about investigate-drift

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I find out why my Kubernetes Deployment live state differs from the git manifest?

To find out why your Kubernetes Deployment differs from the git manifest, perform a three-way drift comparison between desired GitOps intent and live state. This classifies per-field divergence using managedFields attribution to identify whether a controller or a manual edit caused the change.

What is GitOps drift and how does managedFields attribution detect manual edits?

GitOps drift is a field-level divergence between live Kubernetes state and desired git intent. ManagedFields attribution detects manual edits by analyzing the cause and managerHint metadata to classify exactly which field value was written by a human versus a reconciliation controller.

How do I check if ArgoCD or Flux is still syncing a resource that drifted from git?

To check if ArgoCD or Flux is still syncing a drifted resource, compare the three-way DRY, WET, and LIVE states. This produces structured mismatch outputs with provenance requirements to determine if the controller is actively managing the divergent fields or if a manual bypass occurred.

Can I identify which specific field value was written by whom in a Kubernetes resource?

Yes, you can identify which specific field value was written by whom in a Kubernetes resource by analyzing managedFields attribution. This provides a per-field cause and managerHint classification, using gitSource and bindingSource provenance to distinguish controller-drift from manual edits.

Does this GitOps drift investigation approach work with both ArgoCD and Flux?

Yes, this GitOps drift investigation approach works with both ArgoCD and Flux. It diagnoses field-level divergence between live Kubernetes state and desired GitOps intent regardless of the specific controller, using managedFields attribution to pinpoint the cause of the discrepancy.

What should I do after identifying who changed a Kubernetes field during a drift investigation?

After identifying who changed a Kubernetes field during a drift investigation, you can use the structured mismatch outputs to plan a response. This evidence supports deciding whether to revert the live state, port the edit back to git, or accept an exception without performing any mutations.