For a user-facing overview (CLI + Control UI + config), see /logging.
CoderClaw has two log “surfaces”:
/tmp/coderclaw/ (one file per day): coderclaw-YYYY-MM-DD.log
~/.coderclaw/coderclaw.json:
logging.filelogging.levelThe file format is one JSON object per line.
The Control UI Logs tab tails this file via the gateway (logs.tail).
CLI can do the same:
coderclaw logs --follow
Verbose vs. log levels
logging.level.--verbose only affects console verbosity (and WS log style); it does not
raise the file log level.logging.level to debug or
trace.The CLI captures console.log/info/warn/error/debug/trace and writes them to file logs,
while still printing to stdout/stderr.
You can tune console verbosity independently via:
logging.consoleLevel (default info)logging.consoleStyle (pretty |
compact |
json) |
Verbose tool summaries (e.g. 🛠️ Exec: ...) can mask sensitive tokens before they hit the
console stream. This is tools-only and does not alter file logs.
logging.redactSensitive: off |
tools (default: tools) |
logging.redactPatterns: array of regex strings (overrides defaults)
gi), or /pattern/flags if you need custom flags.***.The gateway prints WebSocket protocol logs in two modes:
--verbose): only “interesting” RPC results are printed:
ok=false)>= 50ms)--verbose): prints all WS request/response traffic.coderclaw gateway supports a per-gateway style switch:
--ws-log auto (default): normal mode is optimized; verbose mode uses compact output--ws-log compact: compact output (paired request/response) when verbose--ws-log full: full per-frame output when verbose--compact: alias for --ws-log compactExamples:
# optimized (only errors/slow)
coderclaw gateway
# show all WS traffic (paired)
coderclaw gateway --verbose --ws-log compact
# show all WS traffic (full meta)
coderclaw gateway --verbose --ws-log full
The console formatter is TTY-aware and prints consistent, prefixed lines. Subsystem loggers keep output grouped and scannable.
Behavior:
[gateway], [canvas], [tailscale])TERM/COLORTERM/TERM_PROGRAM), respects NO_COLORgateway/ + channels/, keeps last 2 segments (e.g. whatsapp/outbound){ subsystem })logRaw() for QR/UX output (no prefix, no formatting)pretty | compact | json)logging.level is set to debug/trace)debug (use --verbose to see them)This keeps existing file logs stable while making interactive output scannable.