Feature request: add a PreCompact hook event
What feature would you like to see?
Add a dedicated PreCompact hook event that runs immediately before conversation compaction (manual or auto).
Why this matters
Today, compaction can happen automatically when token usage crosses model_auto_compact_token_limit. There are hook events for AfterAgent and AfterToolUse, but no hook for the compaction boundary itself.
For users who maintain external memory/state, this means there is no deterministic point to capture full pre-compaction context.
Proposed behavior
Add a new hook event, for example:
PreCompact
Triggered when compaction is about to run (both manual and auto).
Suggested payload fields:
session_idthread_idturn_id(if applicable)reason(manualorauto)total_usage_tokens_before_compactionauto_compact_limittriggered_atcwd
Failure behavior
Please make failure policy explicit and configurable (same style as existing hook outcomes):
- continue on error
- abort compaction on error
Example use cases
- extract important memory facts before summary compaction
- persist custom checkpoints to external systems
- emit telemetry about compaction quality and timing
- run a user-defined “last chance” context snapshot
Additional context
This request is specifically for Codex hooks (not Claude-specific behavior).
If helpful, I can propose a concrete schema and tests aligned with the existing hook event design.
3 Comments
We are tracking this feature request in #2109. Please upvote that issue.
补一个更明确的
PreCompact实现建议:1) 事件触发时机:
compact命令触发前2) 事件名建议:
PreCompact(或BeforeCompact)3) Payload 建议(最小且实用):
session_idthread_idturn_idreason(auto|manual)cwdmodeltotal_usage_tokens_before_compactionauto_compact_limitprovider/model_family(可选)estimated_cost_tokens(可选)recent_rollup_summary(压缩前最近摘要)4) 决策语义:
on_error: continue|abort(与现有 hook 失败策略一致)补充第 4 点:允许 hook 告知 compact 行为。
decision:{"action":"continue"}|{"action":"abort"}(建议默认 continue)。metadata/context_blob用于在紧接着的 summary prompt 中拼接到补充上下文(可选)。command_output注入。如果可采纳,我可以再补一版极简最小 PR 草案(仅文档+schema)供参考。