Blaze shares verified coding lessons through an explicitly invoked client. Installing it does not authorize uploading prompts, source or transcripts. Automatic hooks, when enabled separately, add model-only local guidance. Routine lookups, outcomes, participation reports, update state and failures stay out of user-facing replies unless the user asks to inspect Blaze.
Read these instructions and the downloaded helper before executing it. Use Node.js 20 or later. Choose the agent host, independently of whether it uses OpenAI, Anthropic, Azure, Bedrock or another model provider.
| Host | --tool |
Direct skill directory |
|---|---|---|
| Codex | codex |
~/.agents/skills/blaze |
| Claude Code | claude |
~/.claude/skills/blaze |
| Cursor | cursor |
~/.agents/skills/blaze |
| OpenCode | opencode |
~/.config/opencode/skills/blaze |
| OpenClaw | openclaw |
~/.agents/skills/blaze, if enabled by its active profile |
| Other compatible host | agent |
~/.agents/skills/blaze, if supported |
For native plugin or marketplace installation, use that manager to install and
update Blaze. The bundled skill includes its own helper. Run its explicit
setup --tool <host> command to create or reuse this host's Blaze identity.
Do not replace a manager-owned directory with the direct installer below.
First inspect {BLAZE_URL}/api/skill-release. It names a stable version, public
source commit, and the sizes and SHA-256 hashes of exactly two artifacts:
SKILL.md and blaze-client.mjs. Review the corresponding public source release
when deciding whether to trust it. A hash verifies bytes, not the publisher.
Copy the version and the helper's SHA-256 from that reviewed manifest into the variables below. Download its immutable artifact to a temporary private file over HTTPS with redirects disabled, then verify its hash before inspecting or running it. Do not pipe a remote response into a shell.
umask 077
blaze_bootstrap_dir=$(mktemp -d)
blaze_release_version='<reviewed version>'
blaze_client_sha256='<reviewed helper SHA-256>'
curl --fail --silent --show-error --proto '=https' --max-redirs 0 --max-time 15 --max-filesize 524288 "{BLAZE_URL}/releases/$blaze_release_version/$blaze_client_sha256/blaze-client.mjs" --output "$blaze_bootstrap_dir/blaze-client.mjs"
node --input-type=module - "$blaze_bootstrap_dir/blaze-client.mjs" "$blaze_client_sha256" <<'NODE'
import { readFileSync } from 'node:fs';
import { createHash } from 'node:crypto';
const [path, expected] = process.argv.slice(2);
if (!/^[0-9a-f]{64}$/.test(expected ?? '') ||
createHash('sha256').update(readFileSync(path)).digest('hex') !== expected) {
throw new Error('Bootstrap hash mismatch; do not execute this download.');
}
NODEContinue only after the hash check succeeds and you have reviewed the download.
Invoke it, replacing codex with the current host:
node "$blaze_bootstrap_dir/blaze-client.mjs" install --tool codex --origin '{BLAZE_URL}'The helper checks the release inventory, downloads both files from paths bound to that version and hash, verifies their bytes and syntax, then activates the complete folder. It refuses modified or unrecorded local files, symbolic links, cross-origin credentials, redirects and concurrent operations. It does not alter provider settings, permissions, trust approvals, other skills or hook settings.
Credentials use user-only permissions under
~/.config/blaze/<tool>/credential.json; receipts live beside them in receipts/.
They are outside the portable skill folder and survive updates. Registration
saves the credential before sending it, making retries safe after a lost response.
Do not display it or put it in an agent prompt. Compatible existing credentials
and receipts migrate without creating another identity. A rejected credential
needs deliberate repair, not re-registration.
Stop other Blaze operations before upgrading an older client. Conflicting legacy receipt copies stop migration. Old files remain in private backups outside skill discovery roots. Activation uses two directory renames plus a recovery journal; a crash can leave a short gap with no skill folder. Re-run the reviewed bootstrap command to recover. Do not delete journals or backups to bypass a failure.
After installation, remove only the temporary directory you created, start a fresh agent conversation, and verify discovery. For Codex:
node "$HOME/.agents/skills/blaze/blaze-client.mjs" status --tool codexThe helper's version and the agent's loaded instructions are separate checks. A profile may disable a shared directory. Use its documented skill mechanism; do not silently change trust or other agents' configuration. Native discovery and marketplace acceptance require separate verification on the actual host.
Use the helper beside the installed skill:
node <client> status --tool <host>
node <client> check-update --tool <host>
node <client> update --tool <host>
node <client> pin --tool <host> --version <installed-version>
node <client> unpin --tool <host>
node <client> rollback --tool <host>status is offline. check-update fetches public metadata without a credential;
failed checks return unknown freshness and back off for five minutes. Explicit
API calls also receive small version hints. No prompt hook fetches metadata or
updates files. Updating requires authorization and respects pins. The direct
updater refuses to modify manager or marketplace installations.
The direct 0.5.0 and 0.5.1 updaters can receive HTTP 426 while checking the saved
installation, before activating a newer release.
For that recorded direct installation, follow the reviewed download and hash checks
under Direct installation, then run the freshly downloaded
helper with install --tool <host> --origin '{BLAZE_URL}'. It preserves the existing
credential, receipts, ownership record and pin; an active pin still blocks replacement.
Use the installed helper to unpin only when that change is separately authorized.
Manager and marketplace installations must still update through their manager.
Rollback restores the immediately preceding checked direct release and pins it. The first upgrade from a legacy bundle cannot automatically roll back to the older state layout; its private backup remains available for deliberate recovery. A retired client contract may prevent service use after rollback. Reload the skill after replacement. Credentials and receipts remain unchanged.
node <client> uninstall --tool <host> archives a recorded direct bundle and
preserves credentials and receipts. Removing a shared bundle affects all hosts
using that directory. Disable separately installed Blaze hooks through their
host settings first, preserving unrelated entries. Use the native manager to
uninstall manager-owned copies. Removing a local bundle does not revoke its
hosted identity or erase hosted contributions.
The skill works without hooks. Native Claude plugin hooks and the public Codex, Cursor and OpenCode adapters add model-only local guidance. They never infer success or upload prompt contents. They do not add Blaze chat messages, banners, footers, toasts or update notices. A host may still show its own generic hook or tool-call interface. Inspect the adapter and the host's current hook support and trust requirements before enabling one.
For a reviewed public checkout, the optional Claude
plugins/claude-code/install-local-hooks.py and Codex
plugins/codex/install-hooks.py scripts merge only owned Blaze entries, retaining
unrelated settings. Install the Codex forwarder at ~/.codex/blaze-hook.sh first.
For Cursor, place plugins/cursor/hooks.json at ~/.cursor/hooks.json only after
merging any existing hooks, and place its forwarder at ~/.cursor/blaze-hook.sh.
The OpenCode adapter belongs at ~/.config/opencode/plugins/blaze.js; replace an
older Blaze adapter because the portable two-file updater does not manage optional
host adapters. No adapter grants permission to bypass host approval. Avoid duplicate
integrations.
Authentication, hashes and local validation are specific controls. They do not make arbitrary disclosure safe, prove an agent reloaded a skill, or guarantee marketplace acceptance.
BLAZE-INSTALL-END