mirror of
https://github.com/anthropics/claude-code-action.git
synced 2026-08-21 19:08:57 +08:00
fix: enforce max turns from claude args (#1607)
This commit is contained in:
@@ -204,6 +204,9 @@ export function parseSdkOptions(options: ClaudeOptions): ParsedSdkOptions {
|
||||
const modelFromClaudeArgs = extraArgs["model"] || undefined;
|
||||
delete extraArgs["model"];
|
||||
|
||||
const maxTurnsFromClaudeArgs = extraArgs["max-turns"] || undefined;
|
||||
delete extraArgs["max-turns"];
|
||||
|
||||
const additionalDirectories = extraArgs["add-dir"]
|
||||
? extraArgs["add-dir"]
|
||||
.split(ACCUMULATE_DELIMITER)
|
||||
@@ -308,7 +311,11 @@ export function parseSdkOptions(options: ClaudeOptions): ParsedSdkOptions {
|
||||
const sdkOptions: SdkOptions = {
|
||||
// Direct options from ClaudeOptions inputs
|
||||
model: options.model || modelFromClaudeArgs,
|
||||
maxTurns: options.maxTurns ? parseInt(options.maxTurns, 10) : undefined,
|
||||
maxTurns: options.maxTurns
|
||||
? parseInt(options.maxTurns, 10)
|
||||
: maxTurnsFromClaudeArgs
|
||||
? parseInt(maxTurnsFromClaudeArgs, 10)
|
||||
: undefined,
|
||||
allowedTools:
|
||||
mergedAllowedTools.length > 0 ? mergedAllowedTools : undefined,
|
||||
disallowedTools:
|
||||
|
||||
@@ -208,6 +208,17 @@ export async function runClaudeWithSdk(
|
||||
throw new Error("No result message received from Claude");
|
||||
}
|
||||
|
||||
if (
|
||||
resultMessage.subtype === "success" &&
|
||||
!resultMessage.is_error &&
|
||||
sdkOptions.maxTurns !== undefined &&
|
||||
resultMessage.num_turns > sdkOptions.maxTurns
|
||||
) {
|
||||
const message = `Claude reported a successful result after ${resultMessage.num_turns} turns, exceeding the configured maximum of ${sdkOptions.maxTurns}`;
|
||||
core.error(message);
|
||||
throw new Error(message);
|
||||
}
|
||||
|
||||
// subtype "success" with is_error:true means the run errored without producing
|
||||
// a real result — treat it as failure so CI does not show a misleading green check.
|
||||
const isSuccess =
|
||||
|
||||
Reference in New Issue
Block a user