Collecting Logs
When filing a bug report, a log bundle gives maintainers the information they need to diagnose the issue without going back and forth asking for details.
Quick Bundle
The fastest way to create a log bundle:
bash
triggerfish logs bundleThis creates an archive containing all log files from ~/.triggerfish/logs/:
- Linux/macOS:
triggerfish-logs.tar.gz - Windows:
triggerfish-logs.zip
If archiving fails for any reason, it falls back to copying raw log files to a directory you can zip manually.
What the Bundle Contains
triggerfish.log(current log file)triggerfish.1.logthroughtriggerfish.10.log(rotated backups, if they exist)
The bundle does not contain:
- Your
triggerfish.yamlconfig file - Secret keys or credentials
- The SQLite database
- SPINE.md or TRIGGER.md
Manual Log Collection
If the bundle command is not available (older version, Docker, etc.):
bash
# Find log files
ls ~/.triggerfish/logs/
# Create an archive manually
tar czf triggerfish-logs.tar.gz ~/.triggerfish/logs/
# Docker
docker cp triggerfish:/data/logs/ ./triggerfish-logs/
tar czf triggerfish-logs.tar.gz triggerfish-logs/Increasing Log Detail
By default, logs are at INFO level. To capture more detail for a bug report:
Set log level to verbose or debug:
bashtriggerfish config set logging.level verbose # or for maximum detail: triggerfish config set logging.level debugReproduce the issue
Collect the bundle:
bashtriggerfish logs bundleSet the level back to normal:
bashtriggerfish config set logging.level normal
Log Level Detail
| Level | What it captures |
|---|---|
quiet | Errors only |
normal | Errors, warnings, info (default) |
verbose | Adds debug messages (tool calls, provider interactions, classification decisions) |
debug | Everything including trace-level messages (raw protocol data, internal state changes) |
Warning: debug level generates a lot of output. Only use it when actively reproducing an issue, then switch back.
Filtering Logs in Real Time
While reproducing an issue, you can filter the live log stream:
bash
# Show only errors
triggerfish logs --level ERROR
# Show warnings and above
triggerfish logs --level WARNOn Linux/macOS, this uses native tail -f with filtering. On Windows, it uses PowerShell Get-Content -Wait -Tail.
Log Format
Each log line follows this format:
[2026-02-17T14:30:45.123Z] [INFO] [gateway] Gateway WebSocket server started on port 18789- Timestamp: ISO 8601 in UTC
- Level: ERROR, WARN, INFO, DEBUG, or TRACE
- Component: Which module generated the log (e.g.,
gateway,anthropic,telegram,policy) - Message: The log message with structured context
What to Include in a Bug Report
Along with the log bundle, include:
- Steps to reproduce. What were you doing when the issue happened?
- Expected behaviour. What should have happened?
- Actual behaviour. What happened instead?
- Platform info. OS, architecture, Triggerfish version (
triggerfish version) - Config excerpt. The relevant section of your
triggerfish.yaml(redact secrets)
See Filing Issues for the full checklist.
Sensitive Information in Logs
Triggerfish sanitises external data in logs by wrapping values in << and >> delimiters. API keys and tokens should never appear in log output. However, before submitting a log bundle:
- Scan for anything you do not want to share (email addresses, file paths, message content)
- Redact if necessary
- Note in your issue that the bundle has been redacted
Log files contain message content from your conversations. If your conversations contain sensitive information, redact those portions before sharing.
