Thank you for reporting a bug to Unity.
This issue has been investigated and is being closed as a known limitation of the current API.
`CustomPass.injectionPoint` is implemented for global custom passes (those registered via `RegisterGlobalCustomPass`) by reading a single shared static field that HDRP writes when it begins dispatching passes for each injection point. A shared slot is used because the same pass instance is permitted to be registered at multiple injection points simultaneously, so no single injection point can be stored on the instance itself.
HDRP records all passes into the render graph first and executes them later. By the time `Setup` or `Execute` actually runs, recording has completed for every injection point in the frame, and the static reflects whichever injection point was recorded last — typically `AfterPostProcess`. The same applies to queries from any context outside HDRP's recording loop, such as `MonoBehaviour.Update`. Passes attached to a `CustomPassVolume` are unaffected, as they resolve through the volume's serialized injection point.
Changing this behavior would require either storing an injection point on the pass instance (which would be incorrect for instances registered at multiple injection points) or modifying the public API. Neither is planned at this time.
Recommended workaround: track the injection point in user code when calling `RegisterGlobalCustomPass`. To discover after the fact where a pass is registered, iterate `CustomPassVolume.GetGlobalCustomPasses(injectionPoint)` for each injection point and check for the instance.