Sharing a small firmware change that I think generalizes well beyond our specific use case, for anyone building agents that need to answer questions about their own setup, ownership, or task status.
The problem: an agent asked “what do you own,” “where did this route to,” or “did this actually finish” can produce an answer that sounds confident but isn’t grounded in anything it can actually verify. Without a real reference to check against, a plausible-sounding guess and a correct answer are indistinguishable from the outside, and the agent isn’t being dishonest exactly, it’s just filling a gap with the most plausible-sounding thing available.
The fix (PR #624): a bundled, project-specific self-knowledge reference covering hardware ownership, runtime routing, device-bridge behavior, board configuration, setup, observation, verification, and recovery boundaries. Routing, device settings, and recovery paths are related but not interchangeable, so the reference is scoped per-area rather than one generic description of “how the system works.”
The part I think is genuinely reusable outside this specific firmware: the Skill enforces a hard distinction between acknowledgement and completion. Receiving or accepting a request is a real, loggable event. It is not evidence that anything downstream actually finished. Verified completion needs its own evidence, drawn from whatever observation or verification path actually applies to that task.
A concrete example of the same discipline applied narrowly: during one specific recovery process, the agent can encounter a stale image left over from before something failed. The Skill is explicit that a stale image can’t be used as evidence for what happened or whether recovery succeeded. That rule is scoped to that one recovery path. It’s not generalized into a blanket claim about every image the system ever processes, and I think that scoping is actually the harder and more useful part of the design, it would have been easier to write a broad rule and less useful.
Validation here was structural, not behavioral: lint (zero issues), YAML frontmatter validation, focused skill-loader tests, git diff checks. That confirms the content is formatted and loadable. It does not confirm every future answer will be correct, and the writeup is upfront about that.
Full writeup: https://aidenai.io/blog/aiden-adds-a-self-knowledge-skill-for-clearer-agent-boundaries/
wondering if others here have run into the same “confident but ungrounded self-description” problem, especially in agent systems that operate across multiple subsystems where the honest answer genuinely depends on which subsystem is being asked about. Did you solve it with a similar bundled reference, or something structurally different?