claw-code permissionSetup 비교 반영: 위험 자동허용 가드 + 회귀 테스트 추가
Some checks failed
Release Gate / gate (push) Has been cancelled

- 전역 권한이 Auto일 때 고위험 도구(process, spawn_agent, snippet_runner)는 자동 허용을 ask로 강등

- AgentContext 권한 계산 경로에 dangerous auto guard를 통합하여 우발적 무승인 실행 방지

- OperationModePolicyTests에 guard 동작 회귀 테스트 2건 추가

- 패리티 문서에 permissionSetup 기반 보강 항목 추가

- 로드맵/패리티 문서 테스트 수치 동기화: 374/374

- 검증: dotnet build 경고0 오류0, ParityBenchmark 12/12, ReplayStability 12/12, 전체 테스트 374/374
This commit is contained in:
2026-04-03 21:07:15 +09:00
parent b30c5f124e
commit 72f307631d
5 changed files with 74 additions and 11 deletions

View File

@@ -102,4 +102,40 @@ public class OperationModePolicyTests
allowed.Should().BeTrue();
askCalled.Should().BeFalse();
}
[Fact]
public void AgentContext_GetEffectiveToolPermission_DowngradesDangerousAutoToolWhenGlobalAuto()
{
var context = new AgentContext
{
Permission = "Auto",
ToolPermissions = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
{
["process"] = "auto",
}
};
context.GetEffectiveToolPermission("process", "git status").Should().Be("ask");
context.GetEffectiveToolPermission("file_read", @"E:\work\README.md").Should().Be("Auto");
}
[Fact]
public async Task AgentContext_CheckToolPermissionAsync_DangerousAutoToolRequiresPromptInGlobalAuto()
{
var askCalled = false;
var context = new AgentContext
{
OperationMode = OperationModePolicy.ExternalMode,
Permission = "Auto",
AskPermission = (_, _) =>
{
askCalled = true;
return Task.FromResult(false);
}
};
var allowed = await context.CheckToolPermissionAsync("process", "git status");
allowed.Should().BeFalse();
askCalled.Should().BeTrue();
}
}