Skip to content

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

Description

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions