hayDocs
Documentation / Build

Capabilities and review

Declare the access your plugin needs. The user decides what to grant.

The manifest lists requested capabilities. Installing a package grants none. Users enable access in Plugins / Installed, and can revoke it later. Hay checks the current plugin identity, task ownership, and grants at each operation.

Hay account sign-in is a host-level prerequisite for app access, not a plugin capability. It does not grant model, storage, browser or coding access. No capability exposes the account’s verification code or session token.

Capability reference

CapabilitySupported access
storagestorage.get, storage.set, sources.list, and outputs.*.
files.readdocuments.list; only documents explicitly imported for the plugin.
models.invokeagent.run, models.generate; also required to execute a coding run. Permitted context goes to the selected provider.
browser.readbrowser.open; request approval to open a URL and return visible text.
browser.controlbrowser.create, sessions, observe, act, screenshot, close, and browser change events.
github.readApproved public GitHub.com PR snapshots through github.readPullRequest.
github.private.readPrivate PR reads, in addition to github.read, a host-managed account connection, an allowed repository, and approval.
coding.readcoding.project, readFile, list, get, review; preview also needs browser.control.
coding.runcoding.createSpec, run, wait, stop; coding-spec output handoff. A run also needs models.invoke.
coding.commitRequest coding.commit and coding.integrate after user review.

A grant is not blanket approval

A granted browser or coding capability makes the corresponding service available. Navigations, browser actions, coding execution, output handoffs, commits, and integration can still need a concrete host review. Plugins cannot dismiss or approve these requests themselves.

Hay presents requests inline in the originating conversation. A pending request does not block other replies. A user can stop a task or decline the request; the plugin must handle rejection.

Model access

Model access sends the plugin’s prompts and explicitly permitted context to the workspace’s selected model provider. That provider’s data policy applies. A browser tab or local document is not automatically model context for every request.

No verified zero-data-retention route is configured in the current desktop implementation. A workspace requiring such a route blocks inference rather than silently choosing another provider.

Revocation and ownership

Pausing, uninstalling, or revoking access stops owned work where appropriate. A plugin cannot read another plugin’s namespace, claim another task’s output by guessing an ID, or choose a new filesystem root. Host-managed credentials never appear in plugin messages or results.

SDK 0.1 · Package and registry format v1