GPT-6 Astra의 할당량이 왜 이렇게 빨리 소진되는지 조사해봄
I investigated why GPT-6 Astra burns quota so fast
핵심 요약
GPT-6 Astra가 서브 에이전트 상태를 30초마다 확인하는 불필요한 폴링으로 인해 토큰을 과도하게 소모하고 있다는 분석.
- 토큰 소모 분석 — Astra가 30초마다 서브 에이전트 상태를 확인하며 전체 입력 토큰의 68%를 낭비함.
- 비효율적 폴링 — 47번의 빈 폴링으로 700만 개 이상의 토큰이 소모되어 할당량이 급격히 줄어듦.
- 오케스트레이션 개선 — 부모 모델이 계속 깨어나는 대신 비동기식 이벤트 처리가 필요함.
- 사용자 대응책 — 30초 폴링 대신 긴 대기 시간을 설정하여 프롬프트 캐시 TTL 내에서 효율적으로 운영함.
여기서 GPT-6 Astra가 Codex 제한을 비정상적으로 빨리 잡아먹는다는 얘기가 많길래, 그냥 사용량 바만 보고 추측하지 말고 롤아웃 텔레메트리(telemetry)를 직접 까보기로 했다.
TL;DR
Astra 이 새끼가 Luna 워커들 작업 끝났는지 확인하려고 30초마다 지 혼자 깨어나고 있었음.
내가 돌려본 결과:
-
47/47번 체크 전부 새로운 워커 상태 없음으로 뜸
-
그 체크질만으로 7.13M개의 부모 입력 토큰이 날아감
-
Astra 전체 부모 측 입력의 **약 68%**를 차지함
-
내 5시간 사용량이 33분 만에 53%에서 100%로 떡상함
결국 비싼 오케스트레이터가 지 컨텍스트 다 써가면서 싼 워커들 일 끝났나 감시하는 데만 시간을 다 쓴 거임.
비교하자면, 같은 계정에서 측정한 Luna Max 세션은 127분 동안 9.54M개의 입력 토큰을 처리했는데도 5시간 사용량은 8%포인트밖에 안 올랐음.
업데이트 - 해결법 찾음
30초짜리 부모 폴링 루프를 막을 해결법을 찾았다. ~/.codex/config.toml에 아래 내용을 추가해라:
[features.multi_agent_v2]
enabled = true
min_wait_timeout_ms = 1500000
default_wait_timeout_ms = 1500000
max_wait_timeout_ms = 1500000
1500000은 25분을 의미함. 롤아웃 텔레메트리로 확인해봤는데, 30초마다 반복되던 타임아웃 루프가 사라졌고 워커가 실제로 뭘 하기 전까지 부모는 계속 잠들어 있더라.
원본 텔레메트리 / 조사 내용
타임아웃만 발생한 47번의 폴링에서 소모된 양:
input tokens: 7,130,181
cached input tokens: 7,114,112
output tokens: 3,168
reasoning output tokens: 1,331
빈 폴링 한 번당 약 151.7k개의 입력 토큰이 들어간 셈임.
Astra 부모 턴 전체 사용량:
input tokens: 10,463,897
cached input tokens: 10,406,016
output tokens: 8,948
reasoning output tokens: 3,266
즉, Astra 부모가 쓴 원본 입력의 **약 68%**가 타임아웃 폴링에서 나온 거임.
47번 × 30초니까 약 33분짜리 작업 중 23분 30초를 이 타임아웃 대기하는 데 쓴 거나 다름없음.
심지어 세션 가이드라인에도 대놓고 이렇게 적혀 있는데:
When calling wait_agent, prefer longer waits (minutes) to avoid busy polling.
근데 Astra는 굳이 30초 대기를 계속 쓴 거임.


