qa-channel is a repo-local synthetic message transport for automated OpenClaw QA (extensions/qa-channel, private package, excluded from packaged installs). It is not a production channel - it exists to exercise the same channel plugin boundary used by real transports while keeping state deterministic and fully inspectable.
What it does
- Slack-class target grammar:
dm:<user>channel:<room>group:<room>thread:<room>/<thread>
- Shared
channel:andgroup:conversations are surfaced to agents as group/channel room turns, so they exercise the same visible-reply and message-tool routing policy used by Discord, Slack, Telegram, and similar transports. - HTTP-backed synthetic bus for inbound message injection, outbound transcript capture, thread creation, reactions, edits, deletes, and search/read actions.
- Host-side self-check runner that writes a Markdown report to
.artifacts/qa-e2e/.
Config
enabled- master toggle for this account.name- optional display label.baseUrl- synthetic bus URL. The account counts as configured once this is set.botUserId- synthetic bot user id used in target grammar (default:openclaw).botDisplayName- display name for outbound messages (default:OpenClaw QA).pollTimeoutMs- long-poll wait window. Integer between 100 and 30000 (default: 1000).allowFrom- sender allowlist (user ids or"*"; default:["*"]). DMs are alwaysopenpolicy; allowlisted group policy also uses these synthetic sender ids.groupPolicy- shared-room policy:"open"(default),"allowlist", or"disabled".groupAllowFrom- optional shared-room sender allowlist. When omitted under"allowlist", QA Channel falls back toallowFrom.groups.<room>.requireMention- require a bot mention before replying in a specific group/channel room (default: false).groups."*"sets the default; per-roomtools/toolsBySenderset tool policy overrides.defaultTo- fallback target when none is supplied.actions.messages/actions.reactions/actions.search/actions.threads- per-action tool gating.
accounts- record of named per-account overrides keyed by account id.defaultAccount- preferred account id when multiple are configured.
Runners
Host-side self-check (writes a Markdown report under.artifacts/qa-e2e/):
qa-lab, starts the in-repo QA bus, boots the qa-channel runtime slice, and runs a deterministic self-check.
Full repo-backed scenario suite:
Related
- QA overview - overall stack, transport adapters, scenario authoring
- Matrix QA - example live-transport runner that drives a real channel
- Pairing
- Groups
- Channels overview