coleam00/Archon · warning

⚠️ `${workflow.name}` is deprecated and will be removed in a

Error message

⚠️ `${workflow.name}` is deprecated and will be removed in an upcoming release. ${workflow.deprecated.message} To keep using this workflow after removal, copy the workflow file into your project `.archon/workflows/` or your global `~/.archon/workflows/`.

What it means

Deprecation notice from `emitDeprecationNotice` in packages/cli/src/commands/workflow.ts, built by `formatDeprecationNotice`. A workflow marked `deprecated` in its definition still runs, but is scheduled for removal. The notice is printed to stderr (survives `--json` log silencing, not gated on `--quiet`) and explains how to keep the workflow after removal by copying its file into project or global workflow directories.

Source

Thrown at packages/cli/src/commands/workflow.ts:1076

): void {
  if (!parseWarnings || parseWarnings.length === 0) return;
  console.warn(`Warning: '${workflowName}' declares keys the engine ignores:`);
  for (const warning of parseWarnings) {
    console.warn(`  - ${warning}`);
  }
}

/**
 * Print a deprecated workflow's removal notice (#2781) to stderr.
 *
 * Same channel as emitParseWarnings: stderr keeps `--json` stdout parseable,
 * and `console.warn` survives `--json`'s log silencing. Not gated on --quiet —
 * a user driving runs programmatically still has to learn the default they
 * picked is scheduled for removal.
 */
export function emitDeprecationNotice(workflow: WorkflowDefinition): void {
  const notice = formatDeprecationNotice(workflow);
  if (notice) console.warn(notice);
}

function countWorkflowSources(
  workflows: readonly WorkflowWithSource[]
): Record<WorkflowSource, number> {
  return workflows.reduce<Record<WorkflowSource, number>>(
    (counts, entry) => {
      counts[entry.source] += 1;
      return counts;
    },
    { bundled: 0, global: 0, project: 0 }
  );
}

interface WorkflowJsonEntry {
  name: string;
  description: string;
  provider?: string;

View on GitHub (pinned to 0773b97458)

Solutions

  1. Read the workflow's `deprecated.message` in the notice — it names the recommended replacement.
  2. Migrate scripts to the replacement workflow before the removal release.
  3. If you must keep it, copy the workflow file into `.archon/workflows/` or `~/.archon/workflows/` as the notice instructs.
  4. Track the upstream changelog/release notes for the removal version.

Example fix

// before
archon workflow run old-pack-workflow
// after
archon workflow run new-replacement-workflow
Defensive patterns

Strategy: fallback

Validate before calling

// Detect deprecated workflows before scripting against them
const wf = await registry.get(name);
if (wf?.deprecated) console.warn(`${name} deprecated: ${wf.deprecated.message}`);

Type guard

function isDeprecated(w: WorkflowDefinition): w is WorkflowDefinition & { deprecated: { message: string } } {
  return 'deprecated' in w && w.deprecated != null;
}

Prevention

When it happens

Trigger: Invoking any workflow whose `WorkflowDefinition` has a `deprecated` field (with a message); every run of that workflow prints the notice.

Common situations: Using a bundled reference workflow that upstream has deprecated in favor of a replacement; scripts that invoke a deprecated workflow by name; upgrading Archon where a formerly normal workflow is now flagged.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


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