Skip to content

[deep-report] Add generic x-deprecation-message walker; emit warning when tools.grep is set #33343

@github-actions

Description

@github-actions

Problem

The schema at pkg/parser/schemas/main_workflow_schema.json:4170-4172 declares tools.grep as deprecated with both a description and an x-deprecation-message:

"grep": {
  "description": "DEPRECATED: grep is always available as part of default bash tools. This field is no longer needed and will be ignored.",
  "deprecated": true,
  "x-deprecation-message": "grep is always available as part of default bash tools (echo, ls, pwd, cat, head, tail, grep, wc, sort, uniq, date, yq). Remove this field and use bash tool instead."
}

A repo-wide grep over pkg/workflow/ and pkg/parser/ finds no compiler code that detects tools.grep and emits the deprecation message. The field is silently dropped on the way in — users get no signal at compile time.

Contrast with tools.github.reposallowed-repos which is handled correctly at pkg/workflow/tools_parser.go:296 via console.FormatWarningMessage.

Proposed Fix

Instead of hard-coding deprecation strings per field, add a generic walker that:

  1. Loads the JSON schema once at parser init.
  2. For every parsed field, checks the corresponding schema node for deprecated: true.
  3. If the user supplied a value for it, emits x-deprecation-message (falling back to description) through console.FormatWarningMessage.

This eliminates the whole class of "schema says deprecated, compiler accepts silently." The four current candidates: safe-outputs.create-agent-task.oneOf[0], tools.github.repos, tools.serena, stdio_mcp_tool.network, plus tools.grep.

Expected impact

High — closes a recurring class of schema/parser drift and makes future deprecations honor themselves without per-field plumbing.

Suggested agent / effort

Claude — Medium (~50-100 lines of parser code + tests).

Source

DeepReport intelligence run, 2026-05-19. See discussion #33233 findings #2 and #3.

Generated by 🔬 DeepReport - Intelligence Gathering Agent · ● 23.5M ·

  • expires on May 21, 2026, 4:03 PM UTC

Metadata

Metadata

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions