Странно. У меня все работает. Если хотите доступ к сессии из кастомного скрипта, то нужно в его начале добавить примерно такой код:
require_once '../../config.core.php'; // путь от вашего скрипта до файла конфига
require_once MODX_CORE_PATH . 'config/' . MODX_CONFIG_KEY . '.inc.php';
require_once MODX_CORE_PATH . 'model/modx/modx.class.php';
$modx = new modX();
$modx->initialize('web');
session_start() вызывать не нужно, оно при инициализации вызывается. В сниппетах тоже не нужно вызывать.
Вот что действительно понадобилось (в кастомных скриптах), так это дописать в конце
session_write_close();
без него происходил какой-то рандом, то сохранит, то не сохранит, то какие-то устаревшие данные через 10 минут появляются. Попробуйте в конце сниппета своего дописать с собакой спереди.