Any resource annotated with helm.sh/hook is removed from the normal release manifest and applied out of band at its hook phase. Helm does not track it as part of the release, so helm get manifest does not show it, helm uninstall does not delete it, and a subsequent helm install of the same chart fails with an already-exists error on that object.
The fix is an explicit deletion policy. The helm.sh/hook-delete-policy annotation accepts before-hook-creation, which deletes the previous object before creating the new one and is the default for most hooks, hook-succeeded, and hook-failed. For a migration Job that should be cleaned up either way, set before-hook-creation,hook-succeeded.
A second consequence is that helm rollback cannot undo whatever a hook did. A pre-upgrade Job that ran a destructive schema migration stays applied after the rollback restores the old manifests. Hooks are ordered by helm.sh/hook-weight, ascending, and Helm waits for each hook resource to reach a ready state before proceeding to the next weight.