For administrators
← All topics

Troubleshooting

Symptom, cause and what to do — from missing mailbox access to an expired secret.

First, three commands from the installation's directory:

docker compose ps                        # are the services up, is the database healthy?
docker compose logs --tail 50 worker     # the worker's last entries
docker compose run --rm worker node diag.mjs mailbox@company.com

The last one does the same as Test the connection in the interface: it takes the access stored for the mailbox, acquires a token, prints its permissions (never the token itself) and reads the inbox.

Common errors

SymptomCauseWhat to do
set DB_PASSWORD in .env at startdatabase passwords missingfill in .env
mailbox … has no access yetthe mailbox has no registration or connected accountthe mailbox's page → Mail access
Graph … 401 … invalid_clientwrong or expired client secreta new secret at the registration, then the connection test
Graph … 403 … AppOnly AccessPolicythe application access policy has not taken effect yet, or the mailbox is not in the groupwait (hours, even), repeat the test; add the mailbox to the group
Graph … 403 … ErrorAccessDeniedadmin consent missingin Entra, Grant admin consent at the registration
Category not added … MailboxSettingsthe MailboxSettings.ReadWrite permission is missing; the label works, only without colouradd the permission and consent
No active assistant in the databasethe assistant is switched off, or the initial data were not set upswitch the assistant on; check the start log
the assistant is skipped ("no prompts yet")the assistant has no instructions writtenfinish the wizard, or write the instructions by hand
Draft without signature / links outside the allowed domainsthe draft failed a checklook at the message — it may be a spoof attempt
Limit reachedthe daily or per-sender limitraise it only when the flood of mail is legitimate
Model refused to answerthe model's safety filterhandle the message by hand
Model exhausted max_iterationsthe model looped in its toolsretried twice; when it keeps coming, tune the Task instruction
ECONNREFUSED … 3306the database is down or not up yetdocker compose ps, docker compose logs db

When the log does not show it

A one-off pass by hand

docker compose run --rm worker node worker.mjs --dry-run

It takes every active assistant once and forces trial mode — nothing is written into the mail. Useful to check that everything works.

Plain text version