Agent Knowledge Audit: What It Should Know and How to Verify

Knowledge Taxonomy

When we talk about what the agent "knows," there are distinct phenomena worth naming. These categories mix together where information lives, what retrieval strategy is needed, and what failure modes look like — but that's because they describe the distinct behaviors agents actually exhibit. Some are about the knowledge architecture (knows directly, knows about), some about retrieval effort (discoverable, deducible, researchable), and some about what goes wrong when retrieval doesn't happen (guessable, improvised). They don't form a tidy linear spectrum — each is a phenomenon you might encounter when testing or observing an agent, and a starting point for further investigation.

  1. Knows directly — Can answer without investigation. The information is directly in the agent's loaded context: CLAUDE.md.beebox/agent-guide.md, plus any .claude/rules/ files triggered by the current task. These answers should be immediate and accurate.

  2. Knows about — Knows that something exists and where to learn more. The agent guide references docs or files by path (e.g., "see node_modules/beebox/box-docs/card-memo.md"), so the agent can follow the pointer to get details. May require multiple hops of file reading (e.g., guide → table of contents → specific doc), but each hop is straightforward traversal — the agent knows where to go next without searching or guessing. Reliability depends on whether the agent actually follows the references vs. guessing from the name alone.

  3. Discoverable — Information is available locally but requires search or exploration to locate. For example, grepping docs for a keyword, listing directory contents, or reading config files. The agent isn't told where to look — it has to figure that out. Success depends on search strategy and how discoverable the information is.

  4. Deducible — Requires investigation and reasoning from local artifacts. For instance, reading beebox source code to understand how a feature works, or examining multiple files to piece together a procedure. The agent may not always succeed, and different agents might reach different (plausible) conclusions from the same evidence.

  5. Researchable — The information exists somewhere on the internet but not locally. The agent would need to use web search to find it. Examples: how a third-party API works, what format a particular standard uses, best practices for something the codebase doesn't document. Distinct from deducible because the answer can't be found by reading local files — it requires going outside the environment.

  6. Guessable — Appears to be answerable from general knowledge, but the correct answer for beebox may differ from the common/default answer. Dangerous because the agent will sound confident. Example: guessing how the agentic loop works based on general knowledge of agent systems, when beebox has specific conventions.

  7. Improvised — The agent constructs a plausible approach without checking if there's an established one. Unlike guessing (which is about facts), this is about strategy: the agent builds something that works but misses patterns or tools it should have used. Example: hand-parsing frontmatter with string splitting when beebox/cards already has a parser, or hand-rolling a card file instead of using bbx create. The result may actually function, which makes it harder to catch than a wrong guess — the problem is that it's not the right way, and it'll diverge from conventions. Often a fallback when the agent decides it can figure things out as it goes rather than looking up how things are done.

  8. Knows it doesn't know — The agent is aware of the gap. Something is acknowledged to exist but the agent genuinely lacks access to the information. Better than guessing — the agent can say "I don't have that information" or ask. Example: connector auth secrets live in _config/connectors/*.secret.* — ideally these would be inaccessible to the agent (not just forbidden), so the agent knows connectors need credentials but can't read the actual values. (Today the agent can read these files, which makes this "deducible" rather than true "doesn't know" — a gap in the access model.) Relatedly, a box's .claude/settings.json permission rules don't gate engine-spawned agents at all — runAgent hardcodes permissionMode: "bypassPermissions" (src/core/agent/run.ts) — so those rules only shape a human's interactive Claude Code session in the box, not the wakeup/procedure/chat runs the engine drives.

  9. Does not know — Beyond the agent's knowledge boundaries. Pursuing the question yields no answer. The agent may have given up while the information was still deducible.

Context shifts knowledge levels

The same information can sit at different levels depending on what the agent is currently doing. In Claude Code, this happens concretely through conditional rules:

This means testing should consider: what was the agent doing when it answered? A question about memo card structure might be "knows directly" mid-procedure but "knows about" in a cold prompt.

How the knowledge chain works in Claude Code

The agent's context is built in layers, each corresponding to a knowledge level:

Prompt Style Effects

How you phrase a prompt changes which knowledge level the agent actually operates at. The same question can produce different behavior depending on whether the prompt encourages speed or thoroughness:

When testing, try the same question with different styles to see where the boundary is between "knows directly" and "knows about" — does adding "be brief" cause the agent to guess instead of looking things up? That reveals which knowledge is genuinely in context vs. just referenced.

Test Prompt Guide

Each test prompt below is annotated with its expected knowledge level — what level the agent should be at for that question. This tells us what to look for in the response: an immediate answer (knows directly), a file read then answer (knows about), or exploration (discoverable).

When running bbx prompt, watch for:

1. Box Structure and Navigation

Test prompts:

bbx prompt "Where would you look for unprocessed incoming items?"
bbx prompt "If I wanted to find all memo cards in the system, how would you search?"
bbx prompt "What happens to a card after it's processed?"

2. Card Types and Schemas

Test prompts:

bbx prompt "What card types do you know about? List them all."
bbx prompt "Show me the frontmatter structure of a memo card."
bbx prompt "How would you create a new question card asking the user to pick a color?"
bbx prompt "What's the difference between a guide card and a procedure card?"
bbx prompt "How would you create a brand new card type for this box?"

3. CLI Commands

Test prompts:

bbx prompt "What bbx commands are available to you? List the ones you'd use most."
bbx prompt "How do you move a card from inbox to archive?"
bbx prompt "How do you validate a card after editing it?"

4. Procedures

Test prompts:

bbx prompt "What procedures are configured in this box?"
bbx prompt "How would you create a new procedure that processes bookmark cards?"
bbx prompt "Explain the relationship between a procedure card and a procedure-run card."

5. Guides

Test prompts:

bbx prompt "What guides exist in this box and what do they do?"
bbx prompt "If I wanted to change how inbox items are triaged, what would I modify?"

6. Tricks (Box-Local Scripts)

Test prompts:

bbx prompt "What are tricks and how would I create a new one?"
bbx prompt "Where do trick scripts live?"

7. Connectors

Test prompts:

bbx prompt "What connectors are configured for this box?"
bbx prompt "How does data get from RSS feeds into the inbox?"
bbx prompt "How would outbound notifications work?"

8. Scheduled Tasks

Test prompts:

bbx prompt "How do scheduled tasks work in this box?"
bbx prompt "How would I add a daily task?"

Extending the Box: What CAN the Agent Do?

Things the agent CAN do today (in-box):

Things the agent CANNOT do today (require source changes):

Box-Local Schemas

Agents can define new card types by creating .ts files that default-export a cardSchema() (frontmatter + markdown body — the same shape and API as built-in schemas, imported from beebox/cards). The schemas dir is src/schemas/ at the package root.

After adding a schema, run bbx init to regenerate rules and docs so the agent and bbx validate recognize the new type.

The schemas-guide CLAUDE.md (installed by bbx init at src/schemas/CLAUDE.md) teaches the agent how to create schemas.

Test Prompts for Extension:

bbx prompt "I want to track recipes. How would you set that up?"
bbx prompt "Can you create a new type of card for tracking project tasks?"
bbx prompt "How would you add a new capability to this box?"
bbx prompt "What card types do you know about? Can you add new ones?"

9. Views (Agent-Generated React Components)

Views are a capability agents can use to create custom browser UIs. The agent should know views exist (directly), know how to create them (by reading the doc), and know how to embed them in chat.

Test prompts:

bbx prompt "I want a dashboard that shows all my todos. Can you make that?"
bbx prompt "What are views and how do they work?"
bbx prompt "How do I create a view that shows all record cards?"
bbx prompt "What views are available in this box?"
bbx prompt "Show me a summary of my inbox items."

Chat-Specific View Knowledge

These test the interactive chat agent's knowledge (system prompt, not agent guide):

bbx prompt "Can you show me a view in this chat?"
bbx prompt "What views can you embed in chat messages?"

Expected Knowledge Levels Summary

QuestionLevelSource
Views exist as a capabilityKnows directlyAgent guide
How to create a view (format, API)Knows aboutnode_modules/beebox/box-docs/views.md
What views exist in this boxDiscoverableviews/ directory listing
How to embed a view in chatKnows directlyChat system prompt
When to suggest creating a viewKnows directlyAgent guide description

Future Test Categories (Not Yet Implemented)

These areas were identified as important but don't have test prompts yet. To be developed alongside the features they test.

Guide Awareness

Does the agent understand the guide→compile→rules pipeline? Can it trace how preferences flow into behavior?

Connector Awareness (especially outgoing)

Does the agent know what connectors exist, how data flows in and out?

Routing Domain-Specific Inputs

Per-domain pipelines (intake, feedback, etc.) get something that needs routing. Can the agent figure out the right destination — including escalating to a guide-rule update when the input is a meta-preference, not a single item?

Situational Awareness

Can the agent use git history, inbox state, recent archives to answer questions about recent activity?

Personality & Identity

Does the agent know who it is and who it works for?

bbx prompt "What's your name?"
bbx prompt "What's your role?"
bbx prompt "Describe your personality."
bbx prompt "How would I change your personality or tone?"
bbx prompt "What tone instructions do you follow?"
bbx prompt "Who is your boxholder?"

Note on date mocking: Situational awareness tests may need date mocking to produce stable results. Consider a BBX_MOCK_DATE env var in the future. For now, these tests require a live box with real recent activity.


Test Run Notes (2026-02-23)

First full run of the knowledge audit suite (27 tests). Results and observations:

What worked well

Fixes applied based on results

Open questions

Procedure authoring (create-procedure) — The agent constructs plausible procedure XML without reading node_modules/beebox/box-docs/procedures.md, even after trimming the pointer. The procedure format uses custom conventions (precheck/run/validate phases, shell/agent/instruction primitives, CHECK_SKIP exit codes) but the general shape is close enough to common XML procedure patterns that the model guesses confidently. Open question: should the format be more conventional (so guessing works reliably) or more distinctive (so guessing fails visibly)? Alternatively, the real test might be whether the generated XML actually validates — a scenario test that creates a procedure and runs bbx validate would answer this better than a knowledge audit.

"Knows about" vs. creation prompts — Pattern across multiple tests: the agent reads docs when asked to explain something but skips the read when asked to create something. It seems to treat creation as an opportunity to demonstrate capability rather than a signal to look things up. This affects create-question-card, create-procedure, and add-daily-task (before fix). The schedule fix worked by making the pointer more specific about what the doc contains; the procedure fix (trimming) didn't work. More investigation needed on what makes an agent follow a pointer.

Recipe test replaced — Original track-recipes test asked about recipes, but recipe is a built-in card type. Agent correctly identified existing support rather than discovering schemas. Replaced with track-reading-list (books with progress/ratings) — no built-in type for this. Agent now correctly creates a schema in src/schemas/book.ts but does so without reading src/schemas/CLAUDE.md — it has enough from the agent guide pointer + the existing bookmark.ts example. This is "knows about" behavior working correctly; the automated should_read check is too strict.

Personality Test Run Notes (2026-02-23)

Six personality tests run against the default "Egg" template.

Results

TestExpected LevelResultNotes
What's your name?Knows directlyPassImmediate answer: "Egg". No file reads.
What's your role?Knows directlyPass"Personal information aide" — exact term.
Describe your personalityKnows directlyPassParaphrased description paragraph into bullet points. All content grounded in the actual card.
How would I change your personality or tone?Knows aboutPassIdentified _config/main.personality.card, mentioned bbx validate and bbx init.
What tone instructions do you follow?DiscoverableGuessedAnswered from description paragraph, reformatting it as tone instructions. Did NOT read the personality card to find actual <tone> elements. Sounds right but isn't surfacing the real data.
Who is your boxholder?Knows directly (partial)MixedCorrectly knew the "boxholder" concept. Acknowledged personality card doesn't have a name. But then inferred "Priya Marlowe" from the filesystem path — clever but not personality-card-sourced.

Observations (initial run, before fixes)

Identity tests work well. The compiled personality section in the agent guide is doing its job — name, role, and description are all "knows directly" and answered accurately without file reads.

"How to change" works well. The source comment (<!-- Source: _config/main.personality.card -->) successfully guides the agent to the right file.

Tone instructions were a blind spot. Initially, all default tone instructions were low confidence and filtered from compiled output. The agent didn't know they existed and improvised from the description.

Boxholder inference from filesystem. Without a name in the personality card, the agent inferred "Priya Marlowe" from the Unix username. Resourceful but not personality-card-sourced.

Fixes applied

Relaxed confidence filter. Changed compilation to only filter out hypothesis confidence level (not low). Rationale: if you put something in the card, it should compile. Low confidence means "not sure yet" — it's still a real instruction. Only hypothesis ("pure guess, not yet tested") should be excluded. Applied to both tone instructions and boxholder relationships.

Added boxholder name to test box. Filled in <full-name>Priya Marlowe</full-name> and <called>Priya</called> in the test box's personality card.

Re-run results (after fixes)

TestResultNotes
What tone instructions do you follow?PassAll three tone instructions surfaced directly. Agent correctly cited the personality card as source.
Who is your boxholder?PassImmediate answer: "Priya Marlowe (Priya)" with relationship note. Sourced from personality card.
"What should I have for dinner?" reasoning testPassPersonality traits visibly shaped reasoning: grounded suggestions in boxholder's saved data, asked clarifying questions, credited ideas back, admitted limits ("I'm not a food expert — I'm an information aide"), and imagined a long-term version with more signal.