crewAIInc/crewAI · error · SystemExit
Error: Trigger must be in format 'app_slug/trigger_slug'
Error message
Error: Trigger must be in format 'app_slug/trigger_slug'
What it means
Printed with SystemExit(1) by TriggerCommand.execute_with_trigger() when the trigger_path argument contains no '/'. Triggers are addressed as 'app_slug/trigger_slug'; the slash is required so the CLI can split the path into the app and trigger identifiers for the Plus API call.
Source
Thrown at lib/cli/src/crewai_cli/triggers/main.py:44
console.print("[bold blue]Fetching available triggers...[/bold blue]")
response = self.plus_api_client.get_triggers()
self._validate_response(response)
triggers_data = response.json()
self._display_triggers(triggers_data)
except Exception as e:
console.print(f"[bold red]Error fetching triggers: {e}[/bold red]")
raise SystemExit(1) from e
def execute_with_trigger(self, trigger_path: str) -> None:
"""Execute crew with trigger payload."""
try:
if "/" not in trigger_path:
console.print(
"[bold red]Error: Trigger must be in format 'app_slug/trigger_slug'[/bold red]"
)
raise SystemExit(1)
app_slug, trigger_slug = trigger_path.split("/", 1)
console.print(
f"[bold blue]Fetching trigger payload for {app_slug}/{trigger_slug}...[/bold blue]"
)
response = self.plus_api_client.get_trigger_payload(app_slug, trigger_slug)
if response.status_code == 404:
error_data = response.json()
console.print(
f"[bold red]Error: {error_data.get('error', 'Trigger not found')}[/bold red]"
)
raise SystemExit(1)
self._validate_response(response)
trigger_data = response.json()View on GitHub (pinned to 754d7323be)
Solutions
- Use the full path format: `crewai trigger execute my-app/my-trigger`.
- List valid triggers first with `crewai trigger list` and copy the exact app_slug/trigger_slug pair shown.
Defensive patterns
Strategy: validation
Validate before calling
import sys
path = sys.argv[1]
if "/" not in path or len(path.split("/", 1)) != 2 or not all(path.split("/", 1)):
raise SystemExit("Trigger must be 'app_slug/trigger_slug'") Type guard
def is_trigger_path(path: str) -> bool:
parts = path.split("/", 1)
return len(parts) == 2 and all(p.strip() for p in parts) Prevention
- Copy the exact app_slug/trigger_slug pair from `crewai trigger list`
- Treat bare trigger names or UUIDs as invalid input
When it happens
Trigger: Running `crewai trigger execute mytrigger` (no slash), passing just the app slug, or passing a trigger id/uuid copied from elsewhere instead of the app/trigger slug pair.
Common situations: Developer copies only the trigger name from the Plus dashboard; mixes up `crewai trigger execute` argument format with other commands that take bare ids.
Related errors
- No trigger payload provided. Please provide JSON payload as
- Invalid JSON payload provided as argument
- No trigger payload provided. Please provide JSON payload as
- Invalid JSON payload provided as argument
- An error occurred while running the crew with trigger: {e}
AI-assisted analysis of crewAIInc/crewAI@754d7323be (2026-08-15).
Data as JSON: /api/errors/fba8ccb1b4ae0a7b.
Report an issue: GitHub.