openclaw - ✅(Solved) Fix [Bug]: CLI's Slack JSON manifest is framed in breaking characters [2 pull requests, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#65751Fetched 2026-04-14 05:40:31
View on GitHub
Comments
0
Participants
1
Timeline
6
Reactions
0
Participants
Timeline (top)
cross-referenced ×2labeled ×2referenced ×2

When you go through the CLI to connect with a Slack channel, it will offer a JSON manifest for faster setup. But that manifest is framed by breaking characters. So for a user to copy the manifest, they would have to delete all those pipes.

I reported this in #33276, but it was automatically closed without being fixed.

Root Cause

When you go through the CLI to connect with a Slack channel, it will offer a JSON manifest for faster setup. But that manifest is framed by breaking characters. So for a user to copy the manifest, they would have to delete all those pipes.

I reported this in #33276, but it was automatically closed without being fixed.

Fix Action

Fixed

PR fix notes

PR #65773: fix(slack): print manifest JSON without box-drawing borders

Description (problem / solution / changelog)

Summary

Fixes CLI Slack JSON manifest being framed by box-drawing characters () from @clack/prompts note(), making the JSON invalid and difficult to copy-paste.

Changes

  • Export buildSlackManifest from extensions/slack/src/shared.ts so setup-core can reuse it.
  • Remove the multiline manifest JSON from introNote.lines (which was wrapped in UI borders) and replace it with a hint that the raw JSON is printed below.
  • Add a prepare hook in the Slack setup wizard that logs the raw manifest via console.log, producing unframed, copy-paste-friendly JSON.

Related issue

Fixes #65751

Testing

  • pnpm tsgo passes
  • pnpm lint passes
  • pnpm build passes
  • pnpm test extensions/slack/src/setup-surface.test.ts passes

Changed files

  • extensions/slack/src/setup-core.ts (modified, +6/-0)
  • extensions/slack/src/shared.ts (modified, +3/-4)

PR #65809: fix(slack): print manifest JSON outside framed note for easy copying

Description (problem / solution / changelog)

Summary

The Slack setup wizard (openclaw channels add → Slack) displays the app manifest JSON inside a @clack/prompts note() box. This wraps every line in ASCII box-drawing characters (), making the JSON invalid when users copy it. They have to manually strip pipe characters before pasting into Slack API.

Root Cause

buildSlackSetupLines() returned the manifest JSON as part of the note lines array, which note() wraps in a decorative frame:

│  {                                                     │
│    "display_information": {                            │
│      "name": "OpenClaw",                               │

Copying this gives you │ { │ instead of {.

Fix

  1. Remove the manifest JSON from the intro note lines
  2. Export a new getSlackManifestJson() function from shared.ts
  3. Add a prepare() hook that prints the manifest via console.log after the framed note — clean, raw JSON that can be copied directly

Before: Manifest trapped inside ASCII box frame → invalid JSON on copy
After: Setup instructions in the box, manifest printed below as clean JSON

Changes

  • extensions/slack/src/shared.ts: Split manifest from setup lines, export getSlackManifestJson()
  • extensions/slack/src/setup-core.ts: Add prepare() hook to print manifest after the intro note

Fixes #65751

Changed files

  • extensions/slack/src/setup-core.ts (modified, +11/-0)
  • extensions/slack/src/shared.ts (modified, +11/-3)

Code Example

Slack socket mode tokens ──────────────────────────────────────────────────────────╮
│                                                                                     │
1) Slack API -> Create App -> From scratch or From manifest (with the JSON below)2) Add Socket Mode + enable it to get the app-level token (xapp-...)3) Install App to workspace to get the xoxb- bot token                             │
4) Enable Event Subscriptions (socket) for message events                          │
5) App Home -> enable the Messages tab for DMsTip: set SLACK_BOT_TOKEN + SLACK_APP_TOKEN in your env.                            
Docs: slack                              │
│                                                                                     │
Manifest (JSON):{"display_information": {"name": "OpenClaw","description": "OpenClaw connector for OpenClaw"},"features": {"bot_user": {"display_name": "OpenClaw","always_online": true},"app_home": {"messages_tab_enabled": true,"messages_tab_read_only_enabled": false},"slash_commands": [{"command": "/openclaw","description": "Send a message to OpenClaw","should_escape": false}]},"oauth_config": {"scopes": {"bot": ["app_mentions:read","assistant:write","channels:history","channels:read","chat:write","commands","emoji:read","files:read","files:write","groups:history","groups:read","im:history","im:read","im:write","mpim:history","mpim:read","mpim:write","pins:read","pins:write","reactions:read","reactions:write","users:read"]}},"settings": {"socket_mode_enabled": true,"event_subscriptions": {"bot_events": ["app_mention","channel_rename","member_joined_channel","member_left_channel","message.channels","message.groups","message.im","message.mpim","pin_added","pin_removed","reaction_added","reaction_removed"]}}}│                                                                                     │
├─────────────────────────────────────────────────────────────────────────────────────╯
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

When you go through the CLI to connect with a Slack channel, it will offer a JSON manifest for faster setup. But that manifest is framed by breaking characters. So for a user to copy the manifest, they would have to delete all those pipes.

I reported this in #33276, but it was automatically closed without being fixed.

Steps to reproduce

  1. Run openclaw channels add
  2. Go through the process to add a Slack channel
  3. Get the JSON manifest and see that it's framed by pipes, creating invalid JSON.

Expected behavior

I expected OpenClaw to give me the JSON and only the JSON, no vertical pipes to make the JSON look pretty in a CLI.

Actual behavior

The code outputs with an ASCII frame, causing invalid JSON and breaking copy-and-paste.

OpenClaw version

2026.4.11

Operating system

macOS Tahoe

Install method

npm global

Model

NA

Provider / routing chain

NA

Additional provider/model setup details

No response

Logs, screenshots, and evidence

◇  Slack socket mode tokens ──────────────────────────────────────────────────────────╮
│                                                                                     │
1) Slack API -> Create App -> From scratch or From manifest (with the JSON below)2) Add Socket Mode + enable it to get the app-level token (xapp-...)3) Install App to workspace to get the xoxb- bot token                             │
4) Enable Event Subscriptions (socket) for message events                          │
5) App Home -> enable the Messages tab for DMs                                     │
│  Tip: set SLACK_BOT_TOKEN + SLACK_APP_TOKEN in your env.                            │
│  Docs: slack                              │
│                                                                                     │
│  Manifest (JSON):                                                                   │
{"display_information": {"name": "OpenClaw",                                                            │
"description": "OpenClaw connector for OpenClaw"},                                                                               │
"features": {"bot_user": {"display_name": "OpenClaw",                                                  │
"always_online": true},                                                                             │
"app_home": {"messages_tab_enabled": true,                                                │
"messages_tab_read_only_enabled": false},                                                                             │
"slash_commands": [{"command": "/openclaw",                                                    │
"description": "Send a message to OpenClaw",                               │
"should_escape": false}]},                                                                               │
"oauth_config": {"scopes": {"bot": ["app_mentions:read",                                                       │
"assistant:write",                                                         │
"channels:history",                                                        │
"channels:read",                                                           │
"chat:write",                                                              │
"commands",                                                                │
"emoji:read",                                                              │
"files:read",                                                              │
"files:write",                                                             │
"groups:history",                                                          │
"groups:read",                                                             │
"im:history",                                                              │
"im:read",                                                                 │
"im:write",                                                                │
"mpim:history",                                                            │
"mpim:read",                                                               │
"mpim:write",                                                              │
"pins:read",                                                               │
"pins:write",                                                              │
"reactions:read",                                                          │
"reactions:write",                                                         │
"users:read"]}},                                                                               │
"settings": {"socket_mode_enabled": true,                                                   │
"event_subscriptions": {"bot_events": ["app_mention",                                                             │
"channel_rename",                                                          │
"member_joined_channel",                                                   │
"member_left_channel",                                                     │
"message.channels",                                                        │
"message.groups",                                                          │
"message.im",                                                              │
"message.mpim",                                                            │
"pin_added",                                                               │
"pin_removed",                                                             │
"reaction_added",                                                          │
"reaction_removed"]}}}│                                                                                     │
├─────────────────────────────────────────────────────────────────────────────────────╯

Impact and severity

No response

Additional information

No response

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

I expected OpenClaw to give me the JSON and only the JSON, no vertical pipes to make the JSON look pretty in a CLI.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING