fix(release): close pre-tag v0.9.11 truthfulness and tool-output gaps - #5559
Conversation
- Model-bound tool results use a credential-shaped redaction policy (`redact_model_bound_secrets`): only values that look like secrets are masked before a read/shell result reaches the model, so code such as `password: credentials?.password` or `"password-validator": "^5.3.0"` stays byte-exact for exact-match edits and read-back; exact configured credential values are still always replaced and logs/previews/exports keep the broad key-based scrubber. PEM private-key blocks are masked between their markers in both policies. (#5546) - Sub-agent permission receipts derive from the effective runtime profile: Scout/Reviewer/Planner report the read-only shell they actually run under instead of the requested profile; the spawn path and every snapshot producer share one `role_requires_read_only_shell` predicate. - JSON portable config bundles fail before parse on a duplicate object key at any depth, matching the TOML behaviour and the cross-section check. - CHANGELOG gains the shipped `login` sign-in semantics, the automatic 0600 file-store session fallback, the Ctrl+Shift+U /update chord and startup version hint, and the Fleet copy pass; CONFIGURATION.md, the account session doc comment, and TELEMETRY.md match the shipped behaviour. Signed-off-by: CodeWhale Bot <bot@codewhale.net>
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 36514411 | Triggered | RSA Private Key | 2776c21 | crates/config/src/persistence.rs | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secret safely. Learn here the best practices.
- Revoke and rotate this secret.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
|
Claude finished @Hmbown's task in 6m 31s —— View job Review: pre-tag v0.9.11 truthfulness / tool-output redaction fixesTodo list
SummaryThis is a well-scoped, well-tested follow-up. The two structural fixes are solid:
Finding: URL-shaped credential values bypass the new model-bound redaction
fn is_reference_like(value: &str) -> bool {
value.contains("?.")
|| value.contains('(')
|| value.contains("${")
|| value.contains("process.env")
|| value.contains("os.environ")
|| value.contains("getenv")
|| value.contains("://")
|| value.chars().all(|c| c.is_ascii_alphabetic() || c == '_' || c == '.')
}
Both have an explicitly sensitive key ( Suggest narrowing the exemption to require the URL have no Other notes
|
Summary
Same-version follow-up to #5542, to land on
mainbefore thev0.9.11tag (the tag is the release anchor; the version surface is unchanged).read/shell results reaching the model now use a credential-shaped policy (redact_model_bound_secrets): only values that look like secrets (known prefixes, JWTs, bearer tokens, PEM private-key blocks, long opaque strings) are masked;password: credentials?.password,"password-validator": "^5.3.0",token = make_token()and short JSON literals stay byte-exact so exact-match edits and read-back work. Exact configured credential values are still always replaced; logs/previews/exports keep the broad key-basedredact_secretsunchanged. Tests:model_bound_redaction_keeps_code_and_config_byte_exact,model_bound_redaction_masks_credential_shaped_values,private_key_blocks_are_masked_between_pem_markers,key_based_policy_is_unchanged_by_the_model_bound_mode,model_bound_tool_results_keep_ordinary_code_byte_exact(end-to-end throughprepare_model_bound_request).role_requires_read_only_shellpredicate is shared by the spawn path and every snapshot producer. Test:read_only_roles_report_the_narrowed_shell_they_actually_run_under.json_bundles_with_duplicate_keys_fail_before_parse.login= account sign-in, automatic 0600 file-store session fallback, Ctrl+Shift+U/updatechord + startup version hint, Fleet copy pass);docs/CONFIGURATION.md, the account-session doc comment, anddocs/TELEMETRY.mdnow match shipped behaviour.Found by the fresh issue report and the v0.9.11 ops-potential audit (34-agent verification of 188 commitments against the merged tree).
Validation (local, final tree)
cargo fmt --check,git diff --check, changelog sync,cargo check --workspace --all-targets --locked,cargo clippy --workspace --all-targets --all-features --locked -D warnings,cargo test --workspace --all-features --locked, 21-crate publish dry-run — results recorded in the PR comment on the final head.No benchmark-lane change. Signed-off.
Closes #5546