fix(runner): substitute acceptEdits for haiku's silent auto-mode downgrade, fail permission-denial-only runs
This commit is contained in:
@@ -170,6 +170,29 @@ public sealed class ClaudeArgsBuilderTests
|
||||
Assert.DoesNotContain("--dangerously-skip-permissions", args);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("haiku", "auto", "acceptEdits")]
|
||||
[InlineData("haiku", null, "acceptEdits")]
|
||||
[InlineData("haiku", "bypassPermissions", "acceptEdits")]
|
||||
[InlineData("claude-haiku-4-5-20251001", "auto", "acceptEdits")]
|
||||
[InlineData("haiku", "acceptEdits", "acceptEdits")]
|
||||
[InlineData("haiku", "plan", "plan")]
|
||||
[InlineData("sonnet", "auto", "auto")]
|
||||
[InlineData("claude-sonnet-4-6", "auto", "auto")]
|
||||
[InlineData(null, "auto", "auto")]
|
||||
public void PermissionMode_ForHaikuModel_SubstitutesAutoWithAcceptEdits(
|
||||
string? model, string? requestedMode, string expectedMode)
|
||||
{
|
||||
// claude-cli 2.1.220 silently downgrades "--permission-mode auto" to the interactive
|
||||
// "default" mode when the resolved model is a haiku model (verified against the real
|
||||
// CLI's stream-json `init` event), which would block an unattended run forever.
|
||||
var args = _builder.Build(new ClaudeRunConfig(model, null, null, null, PermissionMode: requestedMode));
|
||||
var list = args.ToList();
|
||||
var idx = list.IndexOf("--permission-mode");
|
||||
Assert.True(idx >= 0);
|
||||
Assert.Equal(expectedMode, list[idx + 1]);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Build_emits_mcpConfig_and_allowedTools_when_set()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user