What it is for
Self-hosting does not solve privacy. If the SDK sent the Authorization
header, it is in your database, and a customer session token now lives
somewhere that was never built to keep secrets. The madExcept bug report has the same
problem from the other side: it carries whatever the user typed on screen.
Sanitization happens on the way in, before the occurrence exists in the database. What it removes is never stored, so turning it off later recovers nothing.
What goes by field name
Any key in the context, the headers or the attributes that looks like a secret becomes
[oculto]:
senha, password, passwd,
secret, token, access_token,
refresh_token, api_key, apikey,
authorization, auth, cookie,
set-cookie, session, csrf,
cartao, card_number, cvv,
cvc, private_key, client_secret.
The list is adjusted under Settings. Adding names is the common path; the default list applies when the field is left empty.
What goes by shape
Field names do not catch everything: the secret can be in the middle of the error message or the stack. So meulog also looks by shape, in the message and the callstack:
- Card numbers: 13 to 19 digits, with or without separators.
- JWTs: three base64url blocks separated by dots.
- Provider keys: the prefixes almost everyone uses
(
sk_,pk_,ghp_,xoxb-,AKIA,glpat-). - Bearer followed by a token.
The sweep goes at most 12 levels into nested JSON. Sending deep JSON on purpose is a tired way to bring down an error monitor, and the limit exists for that, not for economy.
What sanitization does not do
- It does not remove user name, company and machine: they are what answers "how many customers does this hit", and without them the customers screen would not exist.
- It does not remove what you chose to send in a field with an innocent
name. A
dados_do_clientefull of tax IDs goes through: add the name to the list.
What leaves here
Two paths carry data out of meulog, and it is worth knowing which:
- The AI analyst, when it is Claude or OpenAI. With Ollama, nothing leaves the machine.
- The notifiers: the message going to Slack carries class, message and volume.
Beyond that, meulog talks to nobody. No telemetry, no phone home, and it asks nothing of a third-party server to work.