coleam00/Archon · warning
Bash node '${node.id}' stderr: ``` ${stderr.trim()} ```
Error message
Bash node '${node.id}' stderr:
```
${stderr.trim()}
``` What it means
In packages/workflows/src/dag-executor.ts:3722, when a bash node finishes and its stderr is non-empty, the executor logs a 'bash_node_stderr' warning and sends the stderr to the conversation as a formatted message. It is an informational notification, not a thrown failure — the node's stdout is still processed.
Source
Thrown at packages/workflows/src/dag-executor.ts:3722
timeout,
env: subprocessEnv,
protectedEnvKeys,
protectedCredentialValues,
retention: {
logDir,
workflowRunId: workflowRun.id,
nodeId: node.id,
label: '<bash>',
},
});
// Trim trailing newline from stdout (common shell behavior)
const output = stdout.replace(/\n$/, '');
if (stderr.trim()) {
getLog().warn({ nodeId: node.id, stderr: stderr.trim() }, 'bash_node_stderr');
await safeSendMessage(
platform,
conversationId,
`Bash node '${node.id}' stderr:\n\`\`\`\n${stderr.trim()}\n\`\`\``,
nodeContext
);
}
const duration = Date.now() - nodeStartTime;
getLog().info({ nodeId: node.id, durationMs: duration }, 'dag_node_completed');
await logNodeComplete(logDir, workflowRun.id, node.id, '<bash>', { durationMs: duration });
const persistedOutput = formatPersistedNodeOutput(output, artifactsDir, stepName);
deps.store
.createWorkflowEvent({
workflow_run_id: workflowRun.id,
event_type: 'node_completed',
step_name: stepName,
data: {View on GitHub (pinned to 0773b97458)
Solutions
- Fix or silence the underlying command emitting stderr (redirect 2>/dev/null if the noise is expected)
- Check the run log keyed 'bash_node_stderr' for the full stderr text
- Change the script so diagnostics go to stdout or a file instead of stderr
Example fix
// workflow node script # before curl -sS $URL # after curl -sS --silent $URL 2>/dev/null || curl -sS $URL
Defensive patterns
Strategy: validation
Validate before calling
// Before treating a bash node as clean, check stderr in a dry run:
const { stderr } = Bun.spawnSync(['bash','-c', command]);
if (stderr.toString().trim()) console.warn('command will emit stderr in the workflow:', stderr.toString()); Type guard
function hasStderr(r: { stderr: string }): boolean {
return r.stderr.trim().length > 0;
} Prevention
- Redirect expected stderr noise: command 2>/dev/null or 2>>log.txt
- Prefer CLIs with --quiet/--silent flags in workflow nodes
- Treat the warning message as a hint, not a failure — stdout is still used
- Keep diagnostics-heavy tools out of bash nodes; write diagnostics to files instead
When it happens
Trigger: A bash: workflow node runs a command that writes to stderr (compiler/library warnings, progress output on stderr, missing file notices), even when the command exits 0.
Common situations: Tools like curl, git, or package managers writing progress or deprecation warnings to stderr; a script that redirects stdout correctly but not stderr; noisy CLIs used inside workflow bash nodes.
Related errors
- Script node '${node.id}' stderr: ``` ${stderr.trim()} ```
- Cannot execute run '${detachedPreCreatedRun.id}': it belongs
- Dry-run failed; missing stubs: ${blockingMissingStubs.join('
- result.error
- Failed to get workflow run: ${err.message}
AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01).
Data as JSON: /api/errors/be689e981e6600de.
Report an issue: GitHub.