Skip to content

Bind Numbat findings to managed agents - #4

Merged
gagan114662 merged 1 commit into
mainfrom
fix/numbat-agent-identity
Jul 31, 2026
Merged

gagan114662 merged 1 commit into
mainfrom
fix/numbat-agent-identity

Conversation

@gagan114662

@gagan114662 gagan114662 commented Jul 31, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • stamp each Buzz-managed runtime with a reserved managed-agent pubkey
  • let Numbat expand that trusted identity into a per-agent findings path at callback time
  • project the managed pubkey from the isolated file boundary while retaining Numbat's runtime label only as validated input
  • isolate evidence rotation per managed agent

Validation

  • desktop TypeScript typecheck passed
  • desktop unit suite: 3,752 passed
  • Tauri Rust suite: 1,856 passed, 14 ignored
  • E2E production build passed
  • focused Guardian tests: 7 passed

Existing repository checks

pnpm check still reports the pre-existing runtime.rs file-size overage (the file is 1,060 lines against a 1,033-line cap) and two unrelated Biome informational notices in personaCatalogRelay.test.mjs.

Co-authored-by: gagan114662 <[email protected]>
Signed-off-by: gagan114662 <[email protected]>
@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@gagan114662
gagan114662 merged commit 0bea97f into main Jul 31, 2026
@gagan114662
gagan114662 deleted the fix/numbat-agent-identity branch July 31, 2026 15:48

@xhawk-ai xhawk-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📋 Review Summary

I reviewed the change that stamps managed agent pubkeys into spawned runtimes and switches Numbat findings from a shared live.ndjson sink to per-agent files resolved from that identity. The main concern is that the identity binding is still chosen from the monitored process environment at callback time, so a runtime can misdirect or suppress its own Guardian findings before Buzz reads them.

🔍 Findings

🟠 High 1

}

fn numbat_findings_template(app: &AppHandle) -> Result<PathBuf, String> {
Ok(numbat_dir(app)?.join("${BUZZ_MANAGED_AGENT_PUBKEY}.ndjson"))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟠 High

This makes the evidence sink depend on BUZZ_MANAGED_AGENT_PUBKEY as expanded from the monitored runtime's environment at callback time. A managed agent can run a tool/subprocess with this variable unset or set to another 64-hex pubkey, causing Numbat to append the finding to a different file while read_numbat_findings continues reading only the original agent's path, so the finding is either hidden from the originating agent or attributed to another one. The callback sink needs to validate/derive the managed identity outside agent-controlled environment mutation before choosing the output file.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant