The reconcile loop & drift
How Argo detects and corrects.
Under the hood Argo CD runs a reconcile loop, the same pattern that powers Kubernetes controllers and Crossplane. On an interval (and on Git webhook events) it fetches the desired manifests from Git, renders them (running Helm/Kustomize if needed), compares against the live cluster, and reports or corrects the difference. Because it reconciles continuously, it does not just deploy once — it keeps the cluster converged to Git indefinitely, which is what makes drift visible and (optionally) self-correcting.
Drift, visible and correctable
Drift is when the live cluster diverges from Git — someone kubectl-edited a Deployment, or a controller changed something. Argo CD surfaces drift as OutOfSync with a diff, so it is never silent. What happens next depends on policy: with self-heal off, you see the drift and decide; with self-heal on, Argo CD reverts the change back to Git automatically. Either way, Git remains the declared truth and the cluster is measured against it continuously.