openclaw - ✅(Solved) Fix [Docs]: Slack exec approvals require undocumented channels.slack.execApprovals config [4 pull requests, 1 comments, 2 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#59664Fetched 2026-04-08 02:41:55
View on GitHub
Comments
1
Participants
2
Timeline
9
Reactions
0
Participants
Timeline (top)
cross-referenced ×4referenced ×4commented ×1

The Slack exec approvals feature (new in v2026.4.1) requires per-channel config under channels.slack.execApprovals that is not documented in docs/channels/slack.md or docs/tools/exec-approvals.md.

Root Cause

The Slack exec approvals feature (new in v2026.4.1) requires per-channel config under channels.slack.execApprovals that is not documented in docs/channels/slack.md or docs/tools/exec-approvals.md.

Fix Action

Fixed

PR fix notes

PR #59675: docs: document required channels.slack.execApprovals config for Slack exec approvals

Description (problem / solution / changelog)

Summary

  • Problem: Slack exec approvals require a channels.slack.execApprovals config block, but this was undocumented. Users got "chat exec approvals are not enabled on Slack" even after correctly configuring approvals.exec.
  • Why it matters: Blocks users from enabling exec approvals on Slack with no useful error hint.
  • What changed: Added missing channels.slack.execApprovals config example, <Warning> callout that both blocks are required, and documented approver resolution order.
  • What did NOT change: Docs only — no runtime code changed.

Change Type

  • Docs

Scope

  • UI / DX

Linked Issue/PR

  • Closes #59664
  • This PR fixes a bug or regression

Root Cause

  • Root cause: channels.slack.execApprovals block added in v2026.4.1 without corresponding doc update.
  • Why now: New feature shipped without doc coverage.

Regression Test Plan

N/A — docs only.

User-visible / Behavior Changes

Docs now show the complete config required for Slack exec approvals.

Diagram

N/A

Security Impact

  • New permissions/capabilities? No
  • Secrets/tokens handling changed? No
  • New/changed network calls? No
  • Command/tool execution surface changed? No
  • Data access scope changed? No

Repro + Verification

Environment

  • OpenClaw v2026.4.1, Amazon Linux 2023

Steps

  1. Configure approvals.exec with Slack target per existing docs
  2. Send exec command → see: "chat exec approvals are not enabled on Slack"
  3. Add channels.slack.execApprovals.enabled: true + approvers
  4. Exec approvals work

Expected

Docs show the complete config upfront.

Actual

Only approvals.exec was documented; channels.slack.execApprovals was missing.

Evidence

  • Reported in #59664 with exact reproduction config
  • Confirmed via source: isSlackExecApprovalClientEnabled() checks channels.slack.execApprovals.enabled

Human Verification

  • Verified documented config matches source code behavior described in #59664
  • Documented that allowFrom is NOT used for exec approvers (common gotcha)
  • Did NOT verify in a live Slack environment (no Slack bot access)

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.

Compatibility / Migration

  • Backward compatible? Yes — docs only
  • Config/env changes? No
  • Migration needed? No

Risks and Mitigations

None — docs only.


AI-assisted: Prepared with Claude via OpenClaw. Fix identified by reading #59664 and cross-referencing source. Content verified by contributor.

Changed files

  • docs/channels/slack.md (modified, +34/-1)

PR #59698: docs(slack): document required channels.slack.execApprovals config

Description (problem / solution / changelog)

Summary

Document the required channels.slack.execApprovals config block for Slack exec approvals, addressing #59664.

Problem

Slack-native exec approvals silently fail when only the top-level approvals.exec is configured. The per-channel channels.slack.execApprovals.enabled: true block is required but was not documented in either docs/channels/slack.md or docs/tools/exec-approvals.md.

Changes

docs/channels/slack.md:

  • Clarify that both shared routing AND per-channel config are required
  • Add channels.slack.execApprovals block to the config example
  • Document approver resolution order: explicit approvers → commands.ownerAllowFrom
  • Note that channels.slack.allowFrom is NOT used for exec approvers

docs/tools/exec-approvals.md:

  • Update Slack entry in native delivery adapter list
  • Add Slack-specific notes: enabled gate, approver resolution, allowFrom exclusion

Source references

  • extensions/slack/src/exec-approvals.ts — approver resolution logic
  • extensions/slack/src/monitor/provider.tsexecApprovals.enabled gate
  • src/config/types.slack.tsSlackExecApprovalConfig schema

Closes #59664

Changed files

  • docs/channels/slack.md (modified, +15/-1)
  • docs/tools/exec-approvals.md (modified, +4/-1)

PR #59756: docs: add missing Slack execApprovals documentation

Description (problem / solution / changelog)

Fixes #59664

Changed files

  • docs/channels/slack.md (modified, +24/-0)
  • docs/tools/exec-approvals.md (modified, +5/-3)

PR #59921: docs(slack): clarify exec approvals native config requirements

Description (problem / solution / changelog)

Summary

  • Problem: Slack exec approvals docs did not clearly state that routing via approvals.exec is separate from Slack native approver resolution.
  • Why it matters: operators could configure approvals.exec.targets for Slack and still get chat exec approvals are not enabled on Slack without understanding why.
  • What changed: clarified in docs that Slack approvers must resolve from channels.slack.execApprovals.approvers or commands.ownerAllowFrom, and that channels.slack.allowFrom does not grant exec approval permissions.
  • What did NOT change (scope boundary): no runtime code paths, auth logic, or approval behavior were changed.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes #59664
  • Related #
  • This PR fixes a bug or regression

Root Cause / Regression History (if applicable)

  • Root cause: docs coverage gap and ambiguous wording around Slack-native approval enablement.
  • Missing detection / guardrail: no docs example tying approvals.exec.targets to Slack approver resolution requirements.
  • Prior context (git blame, prior PR, issue, or refactor if known): reported in #59664.
  • Why this regressed now: feature docs explained generic native approval model, but Slack-specific approver path was easy to miss in practical setup.
  • If unknown, what was ruled out: N/A.

Regression Test Plan (if applicable)

  • Coverage level that should have caught this:
    • Unit test
    • Seam / integration test
    • End-to-end test
    • Existing coverage already sufficient
  • Target test or file: docs/channels/slack.md, docs/tools/exec-approvals.md
  • Scenario the test should lock in: docs explicitly differentiate forwarding vs native approver resolution for Slack.
  • Why this is the smallest reliable guardrail: this is a docs-only clarification; runtime behavior is unchanged.
  • Existing test that already covers this (if any): docs lint/format/link checks.
  • If no new test is added, why not: no code behavior changed.

User-visible / Behavior Changes

  • Documentation now explicitly states:
    • approvals.exec.targets controls delivery only.
    • Slack approvers come from channels.slack.execApprovals.approvers or commands.ownerAllowFrom.
    • channels.slack.allowFrom/dm.allowFrom do not grant exec approval permissions.

Diagram (if applicable)

N/A

Security Impact (required)

  • New permissions/capabilities? (No)
  • Secrets/tokens handling changed? (No)
  • New/changed network calls? (No)
  • Command/tool execution surface changed? (No)
  • Data access scope changed? (No)
  • If any Yes, explain risk + mitigation:

Repro + Verification

Environment

  • OS: Windows (authoring environment)
  • Runtime/container: Node + pnpm
  • Model/provider: N/A (docs change)
  • Integration/channel (if any): Slack (documentation target)
  • Relevant config (redacted): N/A

Steps

  1. Run pnpm run lint:docs
  2. Run pnpm dlx oxfmt --check docs/channels/slack.md docs/tools/exec-approvals.md
  3. Run pnpm run docs:check-i18n-glossary
  4. Run pnpm run docs:check-links

Expected

  • Docs checks pass and new wording is present in both pages.

Actual

  • Passed.

Evidence

  • Trace/log snippets
  • Failing test/log before + passing after
  • Screenshot/recording
  • Perf numbers (if relevant)

Human Verification (required)

  • Verified scenarios: reviewed rendered markdown snippets and final diff for Slack exec approval guidance.
  • Edge cases checked: explicit note that allowFrom is not used for Slack exec approvers.
  • What you did not verify: runtime Slack approval flows (docs-only change).

Review Conversations

  • I replied to or resolved every bot review conversation I addressed in this PR.
  • I left unresolved only the conversations that still need reviewer or maintainer judgment.

Compatibility / Migration

  • Backward compatible? (Yes)
  • Config/env changes? (No)
  • Migration needed? (No)
  • If yes, exact upgrade steps:

Risks and Mitigations

  • Risk: readers may still overlook dual-config behavior.
    • Mitigation: clarified in both Slack channel docs and shared exec-approvals docs, including explicit config snippet.

Changed files

  • docs/channels/slack.md (modified, +4/-0)
  • docs/tools/exec-approvals.md (modified, +27/-0)

Code Example

{
  approvals: {
    exec: {
      enabled: true,
      targets: [{ channel: "slack", to: "U12345678" }],
    },
  },
}

---

{
  channels: {
    slack: {
      execApprovals: {
        enabled: true,
        approvers: ["U12345678"]
      }
    }
  }
}
RAW_BUFFERClick to expand / collapse

Summary

The Slack exec approvals feature (new in v2026.4.1) requires per-channel config under channels.slack.execApprovals that is not documented in docs/channels/slack.md or docs/tools/exec-approvals.md.

What the docs show

Only the top-level routing config:

{
  approvals: {
    exec: {
      enabled: true,
      targets: [{ channel: "slack", to: "U12345678" }],
    },
  },
}

What's actually required

The Slack plugin also needs:

{
  channels: {
    slack: {
      execApprovals: {
        enabled: true,
        approvers: ["U12345678"]
      }
    }
  }
}

Without this, isSlackExecApprovalClientEnabled() returns false and exec prompts show "chat exec approvals are not enabled on Slack" even when the top-level approvals.exec is configured.

Additional finding: approver resolution

channels.slack.allowFrom is NOT used for exec approval approvers. The code (probe-*.jsgetSlackExecApprovalApprovers) checks:

  1. channels.slack.execApprovals.approvers (explicit)
  2. Falls back to commands.ownerAllowFrom (via resolveSlackOwnerApprovers)

This means existing allowFrom users won't automatically be approvers — they need to be listed again in execApprovals.approvers or commands.ownerAllowFrom.

Environment

  • OpenClaw v2026.4.1
  • macOS, global npm install
  • Slack channel (socket mode)

Related

  • #59091 — Slack "Allow Always" button sends malformed payload (separate bug, same feature)

extent analysis

TL;DR

To fix the issue with Slack exec approvals, add the required per-channel configuration under channels.slack.execApprovals in your config file.

Guidance

  • Verify that your config file includes the necessary channels.slack.execApprovals section with enabled set to true and approvers listed.
  • Check that the approvals.exec section is correctly configured at the top level, with enabled set to true and the correct targets specified.
  • Ensure that approvers are listed in either channels.slack.execApprovals.approvers or commands.ownerAllowFrom, as channels.slack.allowFrom is not used for exec approval approvers.
  • Review the related issue #59091 for a separate bug affecting the same feature.

Example

{
  approvals: {
    exec: {
      enabled: true,
      targets: [{ channel: "slack", to: "U12345678" }],
    },
  },
  channels: {
    slack: {
      execApprovals: {
        enabled: true,
        approvers: ["U12345678"]
      }
    }
  }
}

Notes

This fix assumes that you are using OpenClaw v2026.4.1 and have a Slack channel set up in socket mode. If you are using a different version or configuration, you may need to adjust the fix accordingly.

Recommendation

Apply the workaround by adding the required channels.slack.execApprovals configuration to your config file, as this will allow you to use the Slack exec approvals feature until a fixed version is available.

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…

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix [Docs]: Slack exec approvals require undocumented channels.slack.execApprovals config [4 pull requests, 1 comments, 2 participants]