에러는 tool_result 콘텐츠
도구 실패 시 루프 밖으로 exception raise X — 에러 페이로드 가진 tool_result 반환. Claude가 'database query failed: timeout' 읽고 retry, user한테 묻기, 또는 pivot 결정. 에러 숨기면 모델 눈멀음.
is_error 플래그
Tool result 블록이 is_error: True 지원. Programmatic 에러 플래그해서 모델이 'no rows' 반환한 성공 쿼리와 실패한 쿼리 차이 알게. 둘 다 콘텐츠 있어; 하나만 에러.
Tool당 retry 예산
일부 도구(HTTP fetch, DB 쿼리)는 모델한테 보고 전에 transient 에러에 retry 가치. 다른 거(side effect 가진 write)는 fail fast 해야. 정책을 핸들러에 박아, 루프 X — 루프는 tool-agnostic.
원칙: 에러는 도구 계약의 일부. Surface — 모델이 너 코드 경로보다 더 나은 recovery 에이전트.