Observations:
- Anonymous users can view nodes of a certain type
- Cron runs as an anonymous user
- Cron cannot access nodes of this type when using EntityFieldQuery
- Cron can access nodes of this type when the tag 'DANGEROUS_ACCESS_CHECK_OPT_OUT' is added to the query.
It seems to me that DANGEROUS_ACCESS_CHECK_OPT_OUT is a misnomer and should actually be DANGEROUS_ACCESS_CHECK_OPT_IN. If access was checked, Cron would know that anonymous users have access to this type of node, or am I missing something?
Based on the initial comments I think my question is not clear, so I am going to rephrase it. What I am seeing is that I allow the anonymous user to see this type of node, but Cron cannot query it. The references to this issue are ambiguous about the reason. If Cron runs as an anonymous user, then Cron should not get different access than an anonymous site user. Or Cron does not run with any user profile at all. That would actually make sense, but that is not how people explain this. So what is really going on? Is the flag a misnomer, or do people not make a clear distinction between "anonymous user" and "no user"?