권한 요청에 답하기
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" } } }}