The distinct and geoNear commands must check out the session because they can contain $where clauses, which require running a find in DBDirectClient to parse, and find checks out the session. The aggregate command must check out the session because it can run geoNear in DBDirectClient. All other commands that allow $where check out the session.
The filemd5 command must check out the session because it can run a find in DBDirectClient.