콘텐츠로 이동

권한 요청에 답하기

CLI가 무언가를 해도 되는지 물어오면, 응답자가 결정합니다.

command.onPermission((request) => {
if (request.subtype === 'can_use_tool') return request.approve();
return request.deny('user declined');
});

응답은 요청 위에서 만들어집니다. 응답이란 그것이 답하는 request_id와 짝지어질 때에만 의미를 갖고, 그 id는 요청과 함께 도착했기 때문입니다.

호스트는 CLI가 제안한 것을 허용하기 전에 편집할 수도 있습니다. UI가 사용자에게 명령을 실행 전에 고칠 기회를 주는 방식이 바로 이것입니다.

command.onPermission((request) => request.approve({ command: 'ls -la' }));

null을 반환하면 요청이 답 없이 남아 CLI가 멈춰 섭니다. 다른 무언가가 그 요청에 답할 예정일 때에만 그렇게 하세요.

봉투는 두 겹으로 중첩되어 있습니다

섹션 제목: “봉투는 두 겹으로 중첩되어 있습니다”

CLI에 도달하는 페이로드는 두 겹으로 중첩되어 있고, 그래야만 합니다. 바깥쪽 response는 전달 봉투로서 — 응답이 만들어졌다는 사실과 그것이 어느 요청에 답하는지를 담고 — 안쪽이 결정 자체를 실어 나릅니다.

{
"type": "control_response",
"response": {
"subtype": "success",
"request_id": "req-7",
"response": { "behavior": "allow", "updatedInput": { "command": "ls -la" } }
}
}