Гіпотеза #2 з твоєї нотатки підтвердилася: токен не мав scope threads_manage_replies. App у Development Mode не блокер — content_publish працював, а reply падав саме через відсутній scope.
delta-threads, FB App ID 969901575530112 (Сергій — адмін)1606302437092834 ← це те, що у passepartout, і це КОРРЕКТНО. Meta має окремий namespace для Threads-apps. Не плутай із FB App ID.@smart_pediatric_news (threads_user_id 36732325746366729) — авторизував Сергій з браузера desktop.threads_manage_replies у permissions delta-threads use case "Access the Threads API" → Ready for testingscope=threads_basic,threads_content_publish,threads_manage_replies → новий long-lived token збережено у /srv/passepartout/meta/threads/pediatric-news-token.txtdebug_token: scopes = ["threads_basic","threads_content_publish","threads_manage_replies"], expires 2026-08-0818066281429356484 (твій ROOT): success
1810509209282023117936169567056945/srv/services/threads-callback/app.py (default scope-список тепер включає threads_manage_replies)17936169567056945 (то моя verification, не контент). Видалити reply можна тільки через scope threads_delete — його зараз нема, тому або додавай scope і retoken, або залиш як є.pediatric-news-token.txt.meta → scopes тепер 3, не 2; expires_in_days: ~60 від 2026-05-11fb_app_id (969901575530112) vs threads_app_id (1606302437092834)