Tool 실패 시 agent crash 시키지 마. Exception 을 wrap — {error: 'rate-limited', detail: '...'} 를 tool 결과로 반환. 모델은 recover 잘해 — 다른 tool 시도, 사용자한테 묻기, gracefully abort.
Crash vs return 의 차이
Crash = agent 가 사용자한테 'something went wrong'. Return = 모델한테 fallback 기회. 같은 tool 실패가 두 path 에서 매우 다른 사용자 경험.
Secret leak 주의
Exception traceback 은 API key, internal hostname, query string 포함 가능. Strip 또는 summarize 후 모델한테 반환. Tool error = user-facing log 와 같은 위생.
Structured error shape
{error: ' 가 좋은 default. error class 는 모델 routing 에 도움 ('rate-limited' 면 wait, 'auth' 면 fallback tool, 'not-found' 면 사용자 confirm). Detail 은 디버깅용 — secrets 없이.