> For the complete documentation index, see [llms.txt](https://nytshift.gitbook.io/nytshift-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nytshift.gitbook.io/nytshift-docs/implementation-ledger/ns-445-hyperliquid-signer-policy-scope.md).

# NS-445 · Hyperliquid signer policy scope

Status: implemented locally on 2026-07-23; no venue request or capital mutation performed.

## Problem

The web control plane restricted reviewed symbols and AEGIS leverage, but the isolated Hyperliquid signer did not independently know the campaign symbol set. A compromised or drifting upstream process could therefore attempt to widen scope while still satisfying notional, confirmation and dead-man gates.

## Delivered

* The supervised signer accepts a canonical, bounded `NIGHTSHIFT_HL_SYMBOL_ALLOWLIST` and `NIGHTSHIFT_HL_MAINNET_MAX_LEVERAGE`.
* First-canary mainnet startup requires both values explicitly and accepts only `BTC` plus `1`.
* The Python boundary rejects new exposure outside its allowlist and rejects mainnet leverage above its cap before adapter or idempotency state.
* Reduce-only exits remain available outside a newly narrowed allowlist, and cancellation remains symbol-unrestricted, so policy tightening cannot trap risk.
* The offline doctor, authenticated signer health and redacted supervisor state expose only symbol-scope SHA-256, symbol count and maximum leverage.
* The web control plane hashes its canonical allowlist, requires an exact signer match for readiness and applies the lower signer leverage ceiling inside AEGIS.
* The no-send readiness audit accepts `--max-leverage`, emits no symbol names and blocks on symbol, leverage or policy-gate mismatch.
* Focused Python, BFF, supervisor, integration and readiness tests cover fail-closed and protective behavior.

## Non-authority

This milestone does not register or revoke an API wallet, approve a builder, claim faucet funds, transfer funds, change venue leverage, arm or disarm a dead-man deadline, submit or cancel an order, provision production PostgreSQL/Privy services or authorize testnet/mainnet mutations. Those remain separate operator actions with fresh action-time authorization.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://nytshift.gitbook.io/nytshift-docs/implementation-ledger/ns-445-hyperliquid-signer-policy-scope.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
