node:menu tokens not working in Pathauto
Just encountered that, after a full debug, it seems that menu_tokens() is not called at all.

  // There is a huge bug with menu tokens not being detected, to fix that, load
  // token include file and force repicking the menu_tokens() function as
  // implementation of hook_tokens()
  module_load_include('inc', 'token', 'token.tokens');
  module_implements('tokens', FALSE, TRUE);


That crappy hack fixed my problem but Why... just WHY ?

So yeah, after a deeper investigation, in module_implements():

  $include_file = isset($hook_info[$hook]['group']) &amp;&amp; module_load_include('inc', $module, $module . '.' . $hook_info[$hook]['group']);
  // Since module_hook() may needlessly try to load the include file again,
  // function_exists() is used directly here.
  if (function_exists($module . '_' . $hook)) {
    $implementations[$hook][$module] = $include_file ? $hook_info[$hook]['group'] : FALSE;
  }


Okay, so the only thing that is preventing menu from being picked is the sorting:


if menu is processed before token in this module_implements(), the menu.tokens.inc include file will not be picked as it doesn't exist
if token is before menu, the token.tokens.inc thus menu_tokens() function will be discovered and picked up after


So if you don't want any code, just alter the weight of token and menu so that menu's is higher than token's.

But NO, there is a token_module_implements_alter() that just does that, but it is not called, and that is the thing I couldn't figure out. So the final hack was:

  // Rebuild implementation cache
  cache_set('module_implements', array(), 'cache_bootstrap');
  cache_clear_all('hook_info', 'cache_bootstrap');