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

  1. Fix or silence the underlying command emitting stderr (redirect 2>/dev/null if the noise is expected)
  2. Check the run log keyed 'bash_node_stderr' for the full stderr text
  3. 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

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


AI-assisted analysis of coleam00/Archon@0773b97458 (2026-09-01). Data as JSON: /api/errors/be689e981e6600de. Report an issue: GitHub.