Skip to content

vine-verification can be backgrounded, degrading the validation gate #168

Description

@rdbruhn

What happened

As of Claude Code 2.1.198, subagents run in the background by default. From the subagents doc:

Claude runs a subagent in the foreground when it needs the result before continuing. Background
subagents run with a smaller built-in tool set than foreground subagents […]

vine-verification is a gate, not a background researcher. It declares tools: Read, Glob, Grep, Bash and needs Bash to run lint, typecheck, and tests. Every caller consumes its report
immediately:

  • navigate step 4a — "If validation fails, fix the issues within the same slice"
  • pair → Validate — "Fix any issues before moving to the commit step"
  • evolve → Cross-Slice Integration Check
  • navigate phase-group verification — "When the report comes back…"

Yet nothing in the shipped content says the result is required before proceeding. A grep across
plugins/vine/agents/ and every calling skill turns up zero foreground/background handling. The
agent's own contract already assumes foreground — vine-verification.md:112 says "The engineer is
waiting" — but nothing enforces it.

What you expected

The validation gate runs in the foreground with its full declared tool set, or fails loudly. A
tool-starved verification pass that returns a clean report is the worst available outcome: it
looks like a green gate.

Steps to reproduce

  1. Phase: vine:navigate (also vine:pair, vine:evolve)
  2. What you were doing: completing a slice's code changes, reaching the validate step
  3. What went wrong: the delegation carries no foreground requirement. Claude usually foregrounds
    when it needs a result, so this is latent rather than constant — but it's unguarded, and the
    failure is silent when it fires.

Environment

  • VINE installation: plugin 0.5.0
  • Claude Code version: 2.1.198+ (behavior changed at that version)
  • Project type: any

Notes

Candidate fixes, probably both:

  • State the requirement in plugins/vine/agents/vine-verification.md — this agent is a gate, it
    runs in the foreground, Bash is required not optional.
  • Make each delegation site say the report is needed before the next step, so the "needs the
    result before continuing" heuristic has something concrete to match.

Frontmatter background is documented for subagents only as "set to true to always run in the
background" — worth confirming empirically whether background: false is honored on a subagent
before relying on it, rather than assuming symmetry with the skills field.

vine-codebase-explorer is the opposite case and should be looked at in the same pass: verify
explicitly wants it researching while the conversation continues, so background is correct there.
inquire consumes its result directly, so that call site isn't.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions