Overview
When the vertical scaling admission webhook mutates a pod’s resource requests (or limits) inautonomous mode, it annotates the pod:
These are written once, at pod admission (
CREATE), by the mutating webhook
only — not by in-place resize,
which patches running pods directly without going through admission.
This is scoped to the pod-mutating webhook, which covers both vertical
AIScaleTarget rightsizing and initial resource seeding by a
DaemonSetAutoscaler. Horizontal scaling (replica count), which mutates the
*/scale subresource instead of the pod, is a separate webhook and does not
set these annotations.What This Answers
thoras.ai/managed: "true" means “the webhook set this pod’s resources at
admission,” and nothing stronger. Use it to answer: did Thoras’s mutating
webhook write to this pod’s resources, as opposed to the controller’s pod
template, another mutating webhook, or a manual kubectl edit.
It does not mean “Thoras currently manages this pod.” Two situations produce
a pod that is annotated managed: "true" but is no longer representative of
Thoras’s current recommendation:
Pods Predate Autonomous Mode
AnAIScaleTarget switched into autonomous mode only annotates pods that are
admitted (created) after the switch. Pods that were already running keep being
resized in place by the disruption worker and are never re-admitted, so they
stay unannotated until they’re naturally recreated (a rollout, eviction, node
drain, or manual restart). Once a pod turns over, it goes through the webhook
and picks up the annotation on its next admission.
The Annotation Isn’t Cleared When Thoras Stops Managing a Pod
Switching anAIScaleTarget out of autonomous mode, or unenrolling it (see
Stopping Autonomous Scaling), reverts running
pods to their controller’s template values with an in-place resize wherever
possible — the pods are not recreated, so they are never re-admitted and the
webhook never runs again to clear the annotation. A reverted pod keeps
thoras.ai/managed: "true" while sitting at template values. As with the case
above, this self-heals the next time the pod is recreated for any reason: a
fresh admission with nothing to mutate does not set the annotation.
When the in-place revert can’t apply (for example, the template declares a
different set of resource keys than the running pod, which would change its QoS
class) and the update policy permits recreation, Thoras falls back to restarting
the workload — those pods are recreated and come back without the annotation.
Both cases are false positives on a pod Thoras did mutate at some earlier
admission, consistent with the annotation’s actual meaning — never false
positives claiming Thoras is currently managing a pod it isn’t.
Related Documentation
- Predictive Vertical Pod Rightsizing -
Configuring
autonomousmode and update policy - Stopping Autonomous Scaling - How pods revert when autonomous mode is turned off
- ClusterAIScaleTemplate - The
thoras.ai/skip-templateandthoras.ai/managed-by-templateannotations and labels, which control template enrollment rather than pod mutation

