Panniantong/Agent-Reach · error
agent-reach install: error: unknown channel(s): {unknown}. S
Error message
agent-reach install: error: unknown channel(s): {unknown}. Supported: {supported} What it means
`agent-reach install` parses its --channels argument as a comma-separated list and rejects any name not in the supported channel set (plus the pseudo-channel 'all'). Unknown names print this error to stderr (naming the offending names and the full supported list) and exit with status 2. Example: `agent-reach install twitter,reddit` works; `agent-reach install twiter` fails.
Source
Thrown at agent_reach/cli.py:292
# xueqiu: cookie-only, no install step
# linkedin: manual setup, no auto-install
}
supported_channels = set(CHANNEL_INSTALLERS) | {"xueqiu", "linkedin"}
raw_channels = [
channel.strip().lower()
for channel in args.channels.split(",")
if channel.strip()
]
unknown_channels = set(raw_channels) - supported_channels - {"all"}
if unknown_channels:
supported = ", ".join(sorted(supported_channels | {"all"}))
unknown = ", ".join(sorted(unknown_channels))
print(
f"agent-reach install: error: unknown channel(s): {unknown}. "
f"Supported: {supported}",
file=sys.stderr,
)
raise SystemExit(2)
if "all" in raw_channels:
requested_channels = supported_channels
else:
requested_channels = set(raw_channels)
config = Config(read_only=dry_run or safe_mode)
print()
print("Agent Reach Installer")
print("=" * 40)
if dry_run:
print("DRY RUN — showing what would be done (no changes)")
print()
if safe_mode:
print("SAFE MODE — skipping automatic system changes")
print()
View on GitHub (pinned to 93ae1d18c3)
Solutions
- Run `agent-reach install --channels=all` or `agent-reach doctor` to see the currently supported channel names
- Fix the typo — the error message itself lists the exact supported set, sorted
- Ensure names are comma-separated with no stray punctuation: --channels=twitter,reddit,youtube
- Pin/upgrade agent-reach to the version whose docs you are following so names match
Example fix
# before agent-reach install --channels=twiter,reddit # after agent-reach install --channels=twitter,reddit
Defensive patterns
Strategy: validation
Validate before calling
from agent_reach.core import create_channels # names come from the registry
supported = {ch.name for ch in create_channels()} | {"all"}
def valid_install_targets(names: list[str]) -> list[str]:
unknown = set(names) - supported
if unknown:
raise ValueError(f"unknown channels {sorted(unknown)}; supported: {sorted(supported)}")
return names Prevention
- Generate install commands from the same agent-reach version you deploy, so names always match
- Check exit status 2 from `agent-reach install` in scripts — its stderr already lists the valid names
- Use --channels=all during provisioning to avoid name drift entirely
When it happens
Trigger: agent-reach install --channels=<name> where <name> is misspelled ('twiter', 'reddt'), uses a hyphen where none is expected, refers to a channel removed/renamed in a newer version, or embeds whitespace that isn't trimmed away as an empty entry.
Common situations: Typos in shell scripts and CI pipelines; channel names changing across agent-reach versions; copying install commands from outdated docs or blog posts.
Related errors
- agent-reach configure: error: {scrub_url_credentials(exc)}
- limit must be non-negative
- Could not read configure value from stdin
- Configure value exceeds the 1 MiB safety limit
- Configure input cancelled
AI-assisted analysis of Panniantong/Agent-Reach@93ae1d18c3 (2026-08-14).
Data as JSON: /api/errors/59a5720515b0c63f.
Report an issue: GitHub.