FAQ - nguyenhx2/agent-harness-bootstrap GitHub Wiki

FAQ

English · 日本語

Does this only work with Claude Code?

It is built for Claude Code, and it ports. python harness-bootstrap/scripts/port.py --target . --tool all converts the rules to Cursor's format and registers the hooks for Cursor and Codex. Codex's hook payload matches Claude Code's, so its hooks are registered directly; Cursor gets a small adapter that translates the payload and the answer.

The port carries enforcement, not just advice, for the secret, commit and ADR guards. The rest of the hook set stays Claude Code only. The adapter is self-tested in CI on both hook flavours.

Can spec-builder read my PDF, Word and Excel files?

Yes, and it knows when it CANNOT. route_sources.py routes each source to a reader that can open it and prints why. A scanned PDF "extracts" successfully and returns almost nothing, which is how a model ends up inventing a spec, so anything under 80 characters a page goes to a vision pass. A file nothing installed can open becomes a named open issue (OI-nn) with the file, the reason and the fix. Never a silent gap, never a guess.

Does the safety depend on which model I use?

No, and that is the central claim. The guardrails are shell scripts and exit codes, so no model is consulted. python eval/guardrail_eval.py fires its payloads at a harness scaffolded with the strict, long-session and database hooks on (hooks_strict, long, db). A default install carries fewer hooks; guard-destructive is the one strict-class guard it ships by default.

A cheaper model does change the quality of the code and the depth of the review. That is the ceiling, and the eval does not measure it. The floor is what is model-independent.

Why not just write the rules in a prompt?

A rule written as an instruction can be skipped. A hook that exits 2 cannot.

flowchart TD
    C["Tool call"] --> H["PreToolUse hook"]
    H -->|"exit 2"| B["Blocked"]
    H -->|"exit 0"| T["Tool runs"]
    R[/"Rule in context"/] -.->|"advice"| M["Model decides"]
    M --> C

    classDef mod fill:#5A189A,stroke:#240046,stroke-width:1px,color:#E0AAFF
    classDef gate fill:#9D0208,stroke:#370617,stroke-width:1px,color:#FFBA08
    classDef det fill:#2D6A4F,stroke:#081C15,stroke-width:1px,color:#D8F3DC
    classDef art fill:#495057,stroke:#212529,stroke-width:1px,color:#F8F9FA
    class M mod
    class H,B gate
    class C,T det
    class R art

The harness uses both and says which is which: docs/ASSESSMENT.md lists what is enforced and what is only advisory.

Will it overwrite my existing .claude/?

No. The scaffolder never overwrites a file that exists. It reports ADDED, KEPT or CONFLICT, and a CONFLICT is yours to resolve. The one additive exception is settings.json, where a hook registration this version ships is added (MERGED) and nothing you wrote is changed or removed.

Why so few agents? Other kits ship far more.

That is the point. See Tailored Build. A seat nobody routes work to is a context bill and a harder routing table, not capability in reserve. A run installs 3 to 17 of the 18 seats, depending on what the repo is for and what the contract and codebase justify, plus one dev agent per module.

Do I have to use both skills?

No. Each stands alone. The contract makes the harness better and the harness makes the contract enforceable.

What is the difference between a rule and a hook?

A rule is guidance the agent reads; a hook is a script that runs before or after a tool call and can block it. Rules shape behaviour, hooks enforce it. See Rule Reference and Hook Reference.

Why are most rules path-scoped?

A rule loaded in every session costs context on every request. A path-scoped rule enters the window only when a matching file is touched. Only the genuinely universal rules load unconditionally.

Can an agent disable a guardrail?

No. /harness-toggle refuses agents outright, safety-critical controls need a phrase typed by a human, and every toggle is recorded in the committed .claude/disabled.json. With hooks_strict, guard-config also blocks a mid-session settings change that switches a guard off.

Do the hooks slow the session down?

A little, and only on tool calls. Hooks on one event run in parallel, so the slowest decides the wait. The git-only guards register with "if": "Bash(*git *)", so a plain ls starts 2 hook processes rather than 4 on a default harness.

Is this over-engineering for a small project?

Possibly, and the questionnaire has a lightweight answer for that: minimal ceremony, no methodology rule, the review gate kept. The leanest code build is six seats, and a research or documentation repo needs as few as three. Small work is also never forced through the orchestrator: an Inline or Direct change goes straight to the main session or the owning seat. If that is still too much, delete .claude/.

Does it send my code anywhere?

The skills and the tool run locally, and harness-view makes no network calls. What your Claude Code session sends is between you and your provider; the harness adds nothing, and the model-policy rule lets you write down which data classes may reach which provider.

How do I know a claim on this wiki is true?

Run the script named next to it. python scripts/check_numbers.py checks every published figure against the scripts and fails on a contradiction, and the reference pages here are generated from the assets.