From 524b9d3e53176376e85a2a019eadde5f664d4f1a Mon Sep 17 00:00:00 2001 From: jrob5756 Date: Thu, 2 Jul 2026 11:51:40 -0400 Subject: [PATCH 1/2] fix(validate): extend per-agent capability checks to for_each inline agents The provider capability cross-check applied the full per-agent matrix (reasoning effort, structured output, per-agent MCP provider override, explicit max_session_seconds) only to top-level agents. A for_each group's inline agent runs at runtime exactly like a top-level agent but was checked for tool allowlists only, so it could request a capability its provider doesn't support (e.g. reasoning.effort: high on claude-agent-sdk), pass validation, then fail or silently degrade mid-iteration. Extract the per-agent checks into a shared _check_agent_capabilities helper (mirroring _check_agent_tools) and run it over for_each inline agents. Also include inline agents in the workflow-level mcp_servers / max_session_seconds inheritance checks so an inline agent on an incapable default provider can't silently escape them. Top-level behavior is unchanged. Closes #270 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- CHANGELOG.md | 12 + src/conductor/config/validator.py | 183 +++++++------ .../test_validator_capabilities.py | 250 ++++++++++++++++++ 3 files changed, 366 insertions(+), 79 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d343a474..06af97b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 sub-workflow usage under-reporting in the same issue was already fixed in [#212](https://github.com/microsoft/conductor/pull/212).) ([#266](https://github.com/microsoft/conductor/issues/266)) +- **`for_each` inline agents skipped most provider-capability checks** — + `conductor validate`'s provider-capability cross-check applied the full + per-agent matrix (reasoning effort, structured output, per-agent MCP provider + override, explicit `max_session_seconds`) only to top-level `agents:`. A + `for_each` group's inline agent — which runs at runtime exactly like a + top-level agent — was checked for tool allowlists only, so it could request a + capability its provider doesn't support (e.g. `reasoning.effort: high` on the + `claude-agent-sdk` provider), pass validation, then fail or silently degrade + mid-iteration. The per-agent checks are now shared and run over inline agents + too, and the workflow-level `mcp_servers` / `max_session_seconds` inheritance + checks now also account for inline agents on the default provider. + ([#270](https://github.com/microsoft/conductor/issues/270)) - **For-each dive-in worked only for finished items** — in the web dashboard's for-each group detail panel, the per-item "Dive into subworkflow" control was nested inside the row's expand/collapse `