What happens
When an agent turn asks the user for input (the HITL input-request widget — question text + "Type your answer" button), the model-authored question text is placed directly into a { type: "section", text: { type: "mrkdwn", ... } } block with only length truncation applied. Models write GitHub-flavored markdown by default, so **bold**, ## headings, and [links](url) show up in Slack as literal punctuation.
Observed in eve 0.27.0, live agent in production: a multi-item clarification question rendered every **filename** emphasis as raw double asterisks.
Where
dist/src/compiled/@chat-adapter/slack/blocks.js — the input-request block builder pushes { text: { text: truncate(prompt), type: "mrkdwn" }, type: "section" } (and the modal builder does the same for its prompt section). No call to the conversion helpers.
The adapter already ships the converters, unused on this path: dist/src/compiled/@chat-adapter/slack/format.js exports markdownBoldToSlackMrkdwn and createSlackMrkdwn.
Expected
The prompt text should run through the same markdown→mrkdwn conversion the adapter applies elsewhere (at minimum markdownBoldToSlackMrkdwn, ideally the full createSlackMrkdwn), matching the behavior of thread.post(string) — whose bare-string form is documented as posting via Slack's native markdown_text and renders model markdown correctly. The asymmetry is easy to hit: the same model text renders fine as a final message but broken as an ask.
Repro
- Slack channel agent on 0.27.0, any authored tool flow that triggers the input-request widget with a model-authored question containing
**bold**.
- Observe the posted widget: literal asterisks.
Workaround
Prompt-level: instruct the agent to write Slack mrkdwn dialect (*bold*, hyphen lists, no **/##) in anything it sends to Slack threads. Works, but every eve+Slack app has to rediscover it.
🤖 Generated with Claude Code
What happens
When an agent turn asks the user for input (the HITL input-request widget — question text + "Type your answer" button), the model-authored question text is placed directly into a
{ type: "section", text: { type: "mrkdwn", ... } }block with only length truncation applied. Models write GitHub-flavored markdown by default, so**bold**,## headings, and[links](url)show up in Slack as literal punctuation.Observed in eve 0.27.0, live agent in production: a multi-item clarification question rendered every
**filename**emphasis as raw double asterisks.Where
dist/src/compiled/@chat-adapter/slack/blocks.js— the input-request block builder pushes{ text: { text: truncate(prompt), type: "mrkdwn" }, type: "section" }(and the modal builder does the same for its prompt section). No call to the conversion helpers.The adapter already ships the converters, unused on this path:
dist/src/compiled/@chat-adapter/slack/format.jsexportsmarkdownBoldToSlackMrkdwnandcreateSlackMrkdwn.Expected
The prompt text should run through the same markdown→mrkdwn conversion the adapter applies elsewhere (at minimum
markdownBoldToSlackMrkdwn, ideally the fullcreateSlackMrkdwn), matching the behavior ofthread.post(string)— whose bare-string form is documented as posting via Slack's nativemarkdown_textand renders model markdown correctly. The asymmetry is easy to hit: the same model text renders fine as a final message but broken as an ask.Repro
**bold**.Workaround
Prompt-level: instruct the agent to write Slack mrkdwn dialect (
*bold*, hyphen lists, no**/##) in anything it sends to Slack threads. Works, but every eve+Slack app has to rediscover it.🤖 Generated with Claude Code