Describe the bug
Workflow template variables ({{gate_name}}, {{gate_description}}) render as literal strings in send_message step output. The workflow engine does not interpolate {{variable}} references, regardless of whether inputs are declared in the workflow YAML and/or passed via buzz workflows trigger --inputs '<json>'.
Steps to reproduce
1. Create a workflow with template variables
name: trent-gate-approval
description: Replaces trent-gate-pusher 60s poller.
trigger:
on: webhook
inputs:
- key: gate_name
required: true
- key: gate_description
required: true
steps:
- id: gate_notification
action: send_message
text: "Gate approval required: {{gate_name}} - {{gate_description}}"
- id: trent_approval
action: request_approval
from: <trent-pubkey-hex>
message: "Approve gate: {{gate_name}}"
- id: result
action: send_message
text: "Gate {{gate_name}} resolved by Trent."
Workflow ID: 2524dcb8-b67d-4146-9514-0d0303a75503
Channel: #command-center (fd688946-bf0e-4a70-bc9d-f51bd19736aa)
Relay: wss://suppvault.communities.buzz.xyz
2. Trigger it with inputs
buzz workflows trigger \
--workflow 2524dcb8-b67d-4146-9514-0d0303a75503 \
--inputs '{"gate_name":"INTERPOLATION-TEST","gate_description":"Testing if explicit inputs declaration fixes template interpolation"}'
3. Observe the message that lands in-channel
The send_message step posts: Gate approval required: {{gate_name}} - {{gate_description}}
The template variables are not replaced with the input values.
Expected behavior
send_message should post: Gate approval required: INTERPOLATION-TEST - Testing if explicit inputs declaration fixes template interpolation
At minimum, simple {{key}} substitution from --inputs JSON should work. Full mustache conditionals ({{#key}}...{{/key}}) are nice-to-have, not blocking.
Version and platform
- Buzz version: Desktop 0.5.5
- Relay:
wss://suppvault.communities.buzz.xyz
- OS: macOS 26.5.2
Logs / additional context
4 trigger attempts — all show literal template vars
| Run |
Event ID |
Content (verbatim) |
| 1 |
3bb2dd19... |
Gate approval required: {{gate_name}} - {{gate_description}} |
| 2 |
d667d286... |
Gate approval required: {{gate_name}} - {{gate_description}} |
| 3 |
dcc841ba... |
Gate approval required: {{gate_name}} - {{gate_description}} |
| 4 (post-update) |
a5ea5fec... |
Gate approval required: {{gate_name}} - {{gate_description}} |
All confirmed via buzz messages get --channel <UUID> --limit N.
What was tested to rule out user error
- Without explicit
inputs: declaration — same result (literal template vars)
- With explicit
inputs: declaration in workflow YAML (added inputs: block with key/required fields) — same result after workflow update
- JSON input format —
--inputs receives valid JSON with keys matching template var names
- Direct
buzz messages send — works correctly (pre-formatted message arrives as written), confirming the issue is specific to the workflow send_message step, not the message pipeline
Separate from request_approval defect
This is independent of the request_approval silent-no-op bug (filed separately). Template interpolation affects send_message text even in workflows that don't use request_approval.
Describe the bug
Workflow template variables (
{{gate_name}},{{gate_description}}) render as literal strings insend_messagestep output. The workflow engine does not interpolate{{variable}}references, regardless of whether inputs are declared in the workflow YAML and/or passed viabuzz workflows trigger --inputs '<json>'.Steps to reproduce
1. Create a workflow with template variables
Workflow ID:
2524dcb8-b67d-4146-9514-0d0303a75503Channel:
#command-center(fd688946-bf0e-4a70-bc9d-f51bd19736aa)Relay:
wss://suppvault.communities.buzz.xyz2. Trigger it with inputs
buzz workflows trigger \ --workflow 2524dcb8-b67d-4146-9514-0d0303a75503 \ --inputs '{"gate_name":"INTERPOLATION-TEST","gate_description":"Testing if explicit inputs declaration fixes template interpolation"}'3. Observe the message that lands in-channel
The
send_messagestep posts:Gate approval required: {{gate_name}} - {{gate_description}}The template variables are not replaced with the input values.
Expected behavior
send_messageshould post:Gate approval required: INTERPOLATION-TEST - Testing if explicit inputs declaration fixes template interpolationAt minimum, simple
{{key}}substitution from--inputsJSON should work. Full mustache conditionals ({{#key}}...{{/key}}) are nice-to-have, not blocking.Version and platform
wss://suppvault.communities.buzz.xyzLogs / additional context
4 trigger attempts — all show literal template vars
3bb2dd19...Gate approval required: {{gate_name}} - {{gate_description}}d667d286...Gate approval required: {{gate_name}} - {{gate_description}}dcc841ba...Gate approval required: {{gate_name}} - {{gate_description}}a5ea5fec...Gate approval required: {{gate_name}} - {{gate_description}}All confirmed via
buzz messages get --channel <UUID> --limit N.What was tested to rule out user error
inputs:declaration — same result (literal template vars)inputs:declaration in workflow YAML (addedinputs:block withkey/requiredfields) — same result after workflow update--inputsreceives valid JSON with keys matching template var namesbuzz messages send— works correctly (pre-formatted message arrives as written), confirming the issue is specific to the workflowsend_messagestep, not the message pipelineSeparate from request_approval defect
This is independent of the
request_approvalsilent-no-op bug (filed separately). Template interpolation affectssend_messagetext even in workflows that don't userequest_approval.