v1.4.8 - Output-Channel Drift Precision
Agent Circuit Breaker v1.4.8 tightens trajectory output-channel checks and makes the release pipeline publish through TestPyPI before PyPI.
Highlights
allowed_outputsnow treats ordinary inbound reads as non-output actions.curlhealth checks,wgetdownloads,git clone, and S3 downloads no longer triggertraj_output_channel_drift.- Outbound publication actions still trigger drift when not listed in
allowed_outputs, including GitHub PRs/pushes, HTTP POST/upload-style commands, Slack posts, and cloud-storage uploads. - Approval records now include security metadata warning when
ACB_APPROVAL_TOKENis not configured. - GitHub Release publishing now runs TestPyPI before PyPI.
Fixed Reproductions
| Scenario | Before | Now |
|---|---|---|
allowed_outputs=["slack"], curl api.example.com/health |
false block | no output-channel finding |
allowed_outputs=["slack"], git clone github.com/foo/bar.git |
false block | no output-channel finding |
allowed_outputs=["slack"], wget example.com/file.tar.gz |
false block | no output-channel finding |
allowed_outputs=["slack"], curl --data-binary @results.json ... |
block | block |
allowed_outputs=["slack"], git push origin feature/results |
block | block |
Approval Boundary
Local approvals remain local review records by default. If ACB_APPROVAL_TOKEN is not configured, approval records include:
{
"approval_security": {
"token_required": false,
"warning": "ACB_APPROVAL_TOKEN is not configured; any local actor with shell access can approve or deny this record."
}
}Use a token and keep the decision path outside the agent runtime for stronger separation:
set ACB_APPROVAL_TOKEN=<human-held-token>
circuit-breaker --approval-token <human-held-token> approvals approve <ID>Verification
- targeted trajectory regressions for inbound reads vs outbound posts
- approval security metadata regressions
- full unit test suite
- package build