FAQ
Short answers to the first questions about HCP, from MCP and Skills to secrets, runtimes, Sense and hosts, each linking to the page that settles it.
On this page
- Positioning
- Is HCP a replacement for MCP?
- Is HCP a replacement for Agent Skills?
- Why not just ship a CLI and a README?
- Is HCP vendor-neutral?
- Packs
- What is the smallest valid pack?
- Can a pack have no commands?
- Where do secrets go?
- Why is it called surface.json and verb_key if the concept is "command"?
- Do I need
- What is a "gated write"?
- How do I find existing packs?
- How do I publish a pack?
- Runtimes
- Must I use the reference SDK?
- What does the runtime enforce that the pack cannot?
- Can a runtime be proprietary?
- What is native-local?
- Sense
- Is Sense just webhooks?
- Can a trigger run a command?
- Can I poll instead?
- Hosts
- How does an agent see a pack?
- Does the host spawn the binary?
- Project
- What version is this?
- How do I propose a change?
- Where is the source?
Each answer here is short and links to the page that owns the topic. Where an answer simplifies, the Specification governs.
Positioning#
Is HCP a replacement for MCP?#
No. MCP is a transport between a model and tools, and HCP is a harness's
install unit: one pack carrying Execute, Sense, Policy and Binding
(Landscape). A runtime can
export a single MCP tool, hcp, that forwards CLI argv, but
that tool is a projection (§12.5) and the
pack stays the unit you install and authorise.
Is HCP a replacement for Agent Skills?#
No. HARNESS.md follows Agent Skills principles and is copied to SKILL.md on
activate. HCP adds what a Skill alone cannot carry: the commands a runtime can
execute, the effect class of each and the credential path
(Skill).
Why not just ship a CLI and a README?#
A README does not tell a runtime which commands write, which need a credential
or which need confirmation. policy.json does, and the runtime enforces it
before anything runs (What is HCP).
Is HCP vendor-neutral?#
Yes. The specification names no products (Governance), and hosts and runtimes appear as examples only in Adopt in hosts.
Packs#
What is the smallest valid pack?#
Three files: surface.json with one command, policy.json with one entry for
it, and HARNESS.md. The echo gold pack in Examples
is exactly that.
Can a pack have no commands?#
Only a sense_only pack can. It must declare at least one
trigger (§7.9).
Where do secrets go?#
Never in the pack. A pack declares a Binding mode,
and the runtime's hub mints a credential at exec time
(§8).
Why is it called surface.json and verb_key if the concept is "command"?#
Wire names are frozen for HCP/1.x compatibility, so the docs say "command"
while the wire field stays verb_key (Command). The
Roadmap reserves the rename for
HCP/2.0.
Do I need --json?#
By default the runtime appends --json to every wrap invocation, so emit JSON
when you see it. A CLI that already emits JSON can ignore the flag or set
json_flag (CLI projection).
What is a "gated write"?#
It is a command with operation: write and confirm: true, which runs only
when args.confirm or args.apply is true.
Pack classes shows where it fits.
How do I find existing packs?#
Search the catalog or run hcpx search. Gold
packs also scaffold from the CLI (hcpx init transit --template transit).
How do I publish a pack?#
Lint it, then add a row to content/catalog/packs.json or let hcpx share
print one (Share a pack). A signed registry belongs to
HCP/2.0.
Runtimes#
Must I use the reference SDK?#
No. Any implementation that satisfies §14.3 conforms, and the TypeScript SDK is one (Build runtimes).
What does the runtime enforce that the pack cannot?#
The runtime decides who the Principal is, which tenant and project they act in, which of the five capabilities they hold, whether the confirm gate was satisfied, which credential is minted and whether the binary is allow-listed. Authorization covers the checks.
Can a runtime be proprietary?#
Yes. The pack format is open, and the runtime's hub, store, sink, RBAC tables and isolation are its own (Proprietary runtimes).
What is native-local?#
It is an explicit opt-out of the sandbox jail for a trusted personal machine,
set with two flags, sandbox: false and nativeLocal: true. Everything else
still applies (§10.3).
Sense#
Is Sense just webhooks?#
No. Sense is the declaration that a pack can announce events, and webhooks, queues and push mappings are only how a runtime receives them (§7.6).
Can a trigger run a command?#
No. A trigger only records, and an Invoker may then choose to Execute under its own grants (§7.2).
Can I poll instead?#
Yes, with a read command. Polling is Execute, so do not declare a trigger for it (Design principles).
Hosts#
How does an agent see a pack?#
A coding agent sees one tool, hcp, and a Skill that teaches it, and
hcpx skill <id> prints any pack's HARNESS.md. An in-process loop sees one
tool per executable command, named <pack_id>__<verb_key>, a short lead per
pack in the system prompt, and an hcp__read_skill tool for the full Skill
(Context optimization).
Does the host spawn the binary?#
No. The host calls a runtime, which runs the pipeline and spawns the binary (§12.2).
Project#
What version is this?#
HCP/1.1, still a draft. Versioning explains the scheme.
How do I propose a change?#
Open an issue titled RFC idea: <title> on hcp-protocol to test interest.
The RFC process takes it from there.
Where is the source?#
hcp-protocol holds the spec, RFCs and conformance, hcp the SDK, CLI and
gold packs, and hcp-docs this site.
Governance lists them with their
licences.