KB: Breaking Changes
A version-by-version list of changes that may require action when upgrading.
Notion: client_secret Removed
Commit: 6d876c3
The client_secret field was removed from the Notion integration configuration as a security hardening measure. Notion now uses only the OAuth token stored in the OS keychain.
Action required: If your triggerfish.yaml has a notion.client_secret field, remove it. It will be ignored but may cause confusion.
New setup flow:
bash
triggerfish connect notionThis stores the integration token in the keychain. No client secret is needed.
Tool Names: Dots to Underscores
Commit: 505a443
All tool names were changed from dotted notation (foo.bar) to underscore notation (foo_bar). Some LLM providers do not support dots in tool names, which caused tool call failures.
Action required: If you have custom policy rules or skill definitions that reference tool names with dots, update them to use underscores:
yaml
# Before
- tool: notion.search
# After
- tool: notion_searchWindows Installer: Move-Item to Copy-Item
Commit: 5e0370f
The Windows PowerShell installer was changed from Move-Item -Force to Copy-Item -Force for binary replacement during upgrades. Move-Item does not reliably overwrite files on Windows.
Action required: None if you are installing fresh. If you are on an older version and triggerfish update fails on Windows, stop the service manually before updating:
powershell
Stop-Service Triggerfish
# Then re-run the installer or triggerfish updateVersion Stamping: Runtime to Build-Time
Commits: e8b0c8c, eae3930, 6ce0c25
Version information was moved from runtime detection (checking deno.json) to build-time stamping from git tags. The CLI banner no longer shows a hardcoded version string.
Action required: None. triggerfish version continues to work. Development builds show dev as the version.
Signal: JRE 21 to JRE 25
Commit: e5b1047
The Signal channel's auto-installer was updated to download JRE 25 (from Adoptium) instead of JRE 21. The signal-cli version was also pinned to v0.14.0.
Action required: If you have an existing signal-cli installation with an older JRE, re-run the Signal setup:
bash
triggerfish config add-channel signalThis downloads the updated JRE and signal-cli.
Secrets: Plaintext to Encrypted
The secrets storage format changed from plaintext JSON to AES-256-GCM encrypted JSON.
Action required: None. Migration is automatic. See Secrets Migration for details.
After migration, rotating your secrets is recommended because the plaintext versions were previously stored on disc.
Tidepool: Callback to Canvas Protocol
The Tidepool (A2UI) interface migrated from a callback-based TidepoolTools interface to a canvas-based protocol.
Files affected:
src/tools/tidepool/tools/tools_legacy.ts(old interface, retained for compatibility)src/tools/tidepool/tools/tools_canvas.ts(new interface)
Action required: If you have custom skills that use the old Tidepool callback interface, they will continue to work through the legacy shim. New skills should use the canvas protocol.
Config: Legacy primary String Format
The models.primary field previously accepted a plain string ("anthropic/claude-sonnet-4-20250514"). It now requires an object:
yaml
# Legacy (still accepted for backward compatibility)
models:
primary: "anthropic/claude-sonnet-4-20250514"
# Current (preferred)
models:
primary:
provider: anthropic
model: claude-sonnet-4-20250514Action required: Update to the object format. The string format is still parsed but may be removed in a future version.
Console Logging: Removed
Commit: 9ce1ce5
All raw console.log, console.warn, and console.error calls were migrated to the structured logger (createLogger()). Since Triggerfish runs as a daemon, stdout/stderr output is not visible to users. All logging now goes through the file writer.
Action required: None. If you were relying on console output for debugging (e.g., piping stdout), use triggerfish logs instead.
Estimating Impact
When upgrading across multiple versions, check each entry above. Most changes are backward-compatible with automatic migration. The only changes that require manual action are:
- Notion client_secret removal (remove the field from config)
- Tool name format change (update custom policy rules)
- Signal JRE update (re-run Signal setup if using Signal)
Everything else is handled automatically.
