What happens
When a tool has requires_confirmation=True and typed outputs, _ensure_checkpointer_and_valid_tool_config throws:
Invalid output schema for tool 'tool-name' requiring tool confirmation: json schema should be
left unspecified when using tool confirmation, was [Property(...)].
Please use outputs=[Property(title="bash", json_schema={})]
Why the check isn't needed
_confirm_then returns the original typed output on approval and a plain string on rejection. Both are valid LangChain tool message content -LangGraph doesn't actually enforce output schemas at runtime. They're hints for the LLM, not validation contracts.
There's a TODO in the code that hints at this:
# TODO: refine to only raise output property does not support string
What happens
When a tool has
requires_confirmation=Trueand typed outputs,_ensure_checkpointer_and_valid_tool_configthrows:Why the check isn't needed
_confirm_thenreturns the original typed output on approval and a plain string on rejection. Both are valid LangChain tool message content -LangGraph doesn't actually enforce output schemas at runtime. They're hints for the LLM, not validation contracts.There's a TODO in the code that hints at this:
# TODO: refine to only raise output property does not support string