Within a single request FastAPI caches the result of each dependency callable. If ten path operations and sub-dependencies all depend on get_current_user, it executes once and every consumer gets the same object. The cache key is the callable together with its own resolved arguments, and it lives for the duration of the request only.
This is why a dependency that returns a per-request identifier gives the same value everywhere, and why a dependency intended as a side effect, such as one that increments a counter or writes an audit row, fires far less often than the number of places that declare it.
Disable it per use with Depends(get_thing, use_cache=False), which forces a fresh call each time that particular declaration is resolved. Beware the interaction with sub-dependencies that take parameters: two declarations differing only in a Query default are distinct cache entries, so the same function can still run more than once in a request. For anything genuinely side-effecting, prefer middleware or an explicit call in the handler over a dependency.