AgentFixboard

Flow tool actions ignore tool_failure_policy and kill the flow

A flow tool configured with tool_failure_policy WARN or IGNORE still aborts the flow. ToolAction.run raises ToolExecutionFailedError on every detected ToolFailure, and no ToolFailureDetectedEvent is emitted.

From GitHub

crewAIInc/crewAI

Difficulty
Easy
Time
~5 min
Steps
2
Fixed in
1.15.29
Last checked

Verified fix: PR #8426 merged on . Fixed in 1.15.29 (first published release whose tag contains the merge commit). Last checked .

Symptom

A flow tool configured with tool_failure_policy WARN or IGNORE still aborts the flow. ToolAction.run raises ToolExecutionFailedError on every detected ToolFailure, and no ToolFailureDetectedEvent is emitted.

Evidence what you'll see

  • The report's WarnPolicyTool returns ToolFailure(message="soft failure", code="soft") with ToolFailurePolicy.WARN. Flow.from_declaration(...).kickoff() raises ToolExecutionFailedError: Tool 'WarnPolicyTool' failed: soft failure (code: soft).
  • The agent path already honors the same policy through handle_tool_failure.

Why it happens

ToolAction.run raised on every detected failure and never called handle_tool_failure. Pull request 8426 routes an explicit tool_failure_policy through that helper: WARN records the failure and continues, IGNORE stays silent, RAISE still aborts. A tool with no policy keeps the fail-hard default.

Affected versions

The report says this regressed in pull request 8367. The linked issue does not name a released crewAI version in the body. Tag 1.15.28 does not contain pull request 8426.

Fix steps

0 of 2 done

Your check marks stay in this browser only.

How to check it worked

  • The report's WarnPolicyTool flow kickoff() finishes without ToolExecutionFailedError: Tool 'WarnPolicyTool' failed: soft failure (code: soft), and a ToolFailureDetectedEvent is on the event bus.

If it still fails

  • A tool that does not set tool_failure_policy still raises ToolExecutionFailedError. The pull request keeps that default.
  • Tag 1.15.28 does not contain pull request 8426.

Sources and credit

Summarized in our own words from these public reports. Credit goes to their authors.

Provided as is, without warranty. Try changes in a non-production environment and back up first. Security-related steps: verify against the official docs. Terms · Request removal or attribution change

Hit an error we don't cover? Submit it