coleam00/Archon · warning
Warning: --data is not valid JSON — event will be emitted wi
Error message
Warning: --data is not valid JSON — event will be emitted without data payload: ${rawData} What it means
The archon CLI 'workflow event emit' command (packages/cli/src/cli.ts:1054) parses the --data flag as JSON. When parsing fails it does not abort: it prints this warning and emits the event with no data payload (eventData stays undefined), so downstream nodes waiting on the event receive an empty data object.
Source
Thrown at packages/cli/src/cli.ts:1054
jsonFlag,
'Usage: archon workflow event emit --run-id <run-id> --type <event-type>\n' +
'Error: --type is required'
);
}
if (!isValidEventType(eventType)) {
const { WORKFLOW_EVENT_TYPES } = await import('@archon/workflows/store');
return await fail(
jsonFlag,
`Error: unknown event type: ${eventType}\nValid types: ${WORKFLOW_EVENT_TYPES.join(', ')}`
);
}
let eventData: Record<string, unknown> | undefined;
const rawData = values.data as string | undefined;
if (rawData) {
try {
eventData = JSON.parse(rawData) as Record<string, unknown>;
} catch {
console.warn(
`Warning: --data is not valid JSON — event will be emitted without data payload: ${rawData}`
);
}
}
await workflowEventEmitCommand(runId, eventType, eventData, effectiveCwd);
break;
}
case 'install': {
const installSlug = positionals[2];
if (!installSlug) {
return await fail(jsonFlag, 'Usage: archon workflow install <slug> [--force]');
}
const forceFlag = values.force as boolean | undefined;
await workflowInstallCommand(installSlug, effectiveCwd, forceFlag);
break;
}
View on GitHub (pinned to 0773b97458)
Solutions
- Quote the whole --data value and use valid JSON: --data '{"key":"value"}'
- Build the payload with a JSON serializer (jq -n, JSON.stringify) instead of hand-writing it
- Check the warning output: the raw value is echoed, so inspect what the shell actually passed
- If the event legitimately needs no payload, omit --data instead of passing malformed JSON
Example fix
// before
archon workflow event emit $RUN done --data status=ok
# after
archon workflow event emit $RUN done --data '{"status":"ok"}' Defensive patterns
Strategy: validation
Validate before calling
// Validate --data before invoking the CLI:
const raw = process.argv[process.argv.indexOf('--data') + 1];
if (raw !== undefined) JSON.parse(raw); // throws early with a clear message
// shell: jq -n --arg s ok '{status: $s}' to build the payload Type guard
function isValidJsonObject(raw) {
try { const v = JSON.parse(raw); return typeof v === 'object' && v !== null && !Array.isArray(v); }
catch { return false; }
} Try / catch
// The CLI itself warns and continues (fallback: no data payload). To make it fatal:
const raw = getValue('--data');
if (raw !== undefined && !isValidJsonObject(raw)) {
throw new Error(`--data must be valid JSON, got: ${raw}`);
}
await workflowEventEmitCommand(runId, eventType, eventData); Prevention
- Single-quote the entire --data value in shell so inner quotes survive
- Build payloads with jq -n or JSON.stringify instead of hand-writing JSON
- Remember the failure is silent-ish: the event still emits with no data, breaking waiters
- Omit --data entirely when the event needs no payload
When it happens
Trigger: Running a CLI command like `archon workflow event emit <runId> <eventType> --data '...'` where the --data value is not valid JSON — unquoted shell values, keys without quotes, single quotes inside the value, or shell word-splitting truncating the payload.
Common situations: Passing --data foo=bar instead of JSON; shell stripping inner quotes so JSON.parse fails; hand-built JSON with smart quotes; forgetting to wrap the value in single quotes so spaces split arguments.
Related errors
- --resume and --config are mutually exclusive. A resumed run
- Failed to download web UI: ${tarballRes.status} ${tarballRes
- Failed to read version: package.json is malformed
- Failed to start detached workflow child (executable: ${cmd[0
- Cannot create worktree: database lookup failed. Error: ${res
AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01).
Data as JSON: /api/errors/0002313aacec8027.
Report an issue: GitHub.