If eshell-atuin-mode is run from a directory with a buffer-local process-environment, then ATUIN_SESSION does not get set globally and eshell-atuin never tries to reinitialize it. This can happen when using a package such as envrc, for example.
Currently I work around the problem by initializing eshell-atuin in a temporary buffer:
(with-temp-buffer
(eshell-atuin-mode))
But another solution might be to store ATUIN_SESSION in a lisp variable and wrap each call to atuin in with-environment-variables.