Skip to content

Extend per-agent capability validation to for_each inline agents #270

Description

@lukeellison

Background

Follow-up from #269 (review comment: #269 (comment)).

The provider capability cross-check in src/conductor/config/validator.py (_validate_provider_capabilities) iterates config.agents and validates each agent against its resolved provider's ProviderCapabilities — reasoning effort, output schema / structured output, MCP servers, and session timeout, in addition to the tools allowlist.

A for_each group carries an inline AgentDef (ForEachDef.agent) that is not in config.agents but runs at runtime with workflow_tools=config.tools, exactly like a top-level agent. The per-agent loop skips it.

#269 added a dedicated pass that runs the tools check (_check_agent_tools) over for_each inline agents, but the other per-agent capability checks still skip them.

Impact

An inline for_each agent can request a capability its provider doesn't support, pass conductor validate silently, then fail or silently degrade mid-iteration at runtime — the same silent-degradation class #269 set out to close, just on a different axis.

Confirmed example (from the PR review): an inline for_each agent with reasoning.effort: high against the claude-agent-sdk provider produces zero validator errors, while the identical agent at top level correctly errors.

Proposed fix

Extract the per-agent capability block (reasoning effort, output schema, MCP, session timeout — the same set already applied to top-level agents) into a shared helper, mirroring how _check_agent_tools is shared between the top-level loop and the for_each inline pass, then run it over for_each inline agents too.

Scope note: parallel-group members are referenced by name from config.agents, so they are already covered by the main loop — only for_each carries inline agents.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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