Armin이 Pi 개발 중 Opus 4.8과 Sonnet 5가 커스텀 edit 툴의 nested edits[] 배열에 스키마에 없는 필드를 지어내 tool call이 거부되는 문제를 발견했다. 편집 내용 자체는 대체로 맞지만 인자가 스키마와 안 맞아 재시도가 발생하며, 구형 모델에서는 나타나지 않고 최신 SOTA 모델일수록 이 특정 스키마에서 더 나빠진다. Claude Code에 내장된 edit 툴에 맞춰 RL 학습된 부작용이라는 추정이다.
Armin은 Pi를 해킹하다 최신 Claude 모델이 Pi의 edit 툴을 호출할 때 nested edits[] 배열에 스키마에 없는 키를 만들어 넣는 현상을 관찰했다. 편집 결과는 대체로 정확하지만 인자가 스키마와 어긋나 Pi가 tool call을 거부하고 재시도를 요구한다. 놀라운 점은 이것이 신형일수록 심해진다는 것 — Opus 4.8과 Sonnet 5 모두에서 나타나지만 구형 모델에서는 없다.
추정 원인은 최근 Anthropic 모델이 Claude Code에 내장된 edit 툴을 더 잘 쓰도록 RL로 학습됐고, 그 부작용으로 Pi 같은 다른 하네스의 커스텀 edit 툴에서는 오히려 오작동이 는다는 것이다. Claude의 edit는 search-and-replace, OpenAI Codex는 apply_patch를 쓰며 각자 자기 툴에 맞춰 학습돼 있다.
이는 서드파티 하네스가 선택된 모델에 따라 성능이 가장 좋은 edit 툴을 골라 여러 개 구현해야 하는가라는 실무 질문으로 이어진다. 모델 업그레이드가 곧 하네스 호환성 향상은 아니라는 반례다.