Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -246,9 +246,10 @@ plus `--depth`, `--direction out|in|both`, `--type <node_type>`, `--edge-type
and `edge` datasets are queryable through `hyp query sql` like any other
dataset.

The `hypaware-graph` skill ships with this plugin (along with a
`graph_neighbors` tool), so an assistant can project and walk the graph on your
behalf wherever the graph is enabled.
This plugin ships a `graph_neighbors` tool and the `hyp graph` help that
explains the traversal, and the `hypaware-query` skill covers when to ask the
graph rather than the messages, so an assistant can project and walk the graph
on your behalf.

## Attaching and detaching AI clients

Expand Down Expand Up @@ -349,7 +350,8 @@ hyp purge <path> | --session <id> | --ignored | --all # delete already-cached
```

To pause recording for just the current Claude or Codex session (in-memory,
reversible) use the `hypaware-ignore` and `hypaware-unignore` skills.
reversible) run `hyp session ignore` from inside it; `hyp session unignore`
resumes and `hyp session status` reports the current answer.

The full model, including what enrollment forwards and the first-sync
privacy review, is in
Expand Down
12 changes: 9 additions & 3 deletions docs/PRIVACY.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,15 @@ Two caveats apply to both surfaces:
## Pausing a single session

To keep one conversation out of the record without marking any directory,
run the `hypaware-ignore` skill inside Claude Code or Codex ("don't record
this session"). It is in-memory, lasts for that session, and is reversible
with `hypaware-unignore`. Install the skills with `hyp skills install`.
run `hyp session ignore` from inside that Claude Code or Codex session. It
resolves the session id itself and refuses rather than guessing when it
cannot. Reverse it with `hyp session unignore`; `hyp session status` reports
which state the session is in right now.

The opt-out is in-memory and lasts for that session only. Two things drop it
while you may still believe it holds: a gateway restart, and a fork
(`claude --fork-session`, `codex fork`), which mints a new session id the
opt-out no longer covers. A plain resume reuses the id.

## Deleting what was already recorded

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"node_engine": ">=20",
"entrypoint": "./src/index.js",
"permissions": [],
"compose_with": ["@hypaware/ai-gateway"],
"requires": {
"plugins": {
"@hypaware/ai-gateway": "^2.0.0",
Expand Down
7 changes: 2 additions & 5 deletions hypaware-core/plugins-workspace/claude/hypaware.plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"schema_version": 1,
"name": "@hypaware/claude",
"version": "2.0.0",
"description": "Anthropic Claude Code client adapter for HypAware. Registers the Anthropic upstream preset and exchange projector on the local AI gateway, configures Claude Code's settings.json to route through the gateway, writes session-context records into the plugin state directory for the projector to read, and ships the hypaware-query, hypaware-reference, hypaware-privacy, hypaware-report, and session opt-out skills.",
"description": "Anthropic Claude Code client adapter for HypAware. Registers the Anthropic upstream preset and exchange projector on the local AI gateway, configures Claude Code's settings.json to route through the gateway, writes session-context records into the plugin state directory for the projector to read, and ships the hypaware-query, hypaware-reference, and hypaware-privacy skills.",
"hypaware_api": "^1.0.0",
"runtime": "node",
"node_engine": ">=20",
Expand Down Expand Up @@ -49,10 +49,7 @@
"skills": [
{ "name": "hypaware-query", "clients": ["claude"] },
{ "name": "hypaware-reference", "clients": ["claude"] },
{ "name": "hypaware-ignore", "clients": ["claude"] },
{ "name": "hypaware-unignore", "clients": ["claude"] },
{ "name": "hypaware-privacy", "clients": ["claude"] },
{ "name": "hypaware-report", "clients": ["claude"] }
{ "name": "hypaware-privacy", "clients": ["claude"] }
],
"agents": [
{ "name": "hypaware-analyst", "clients": ["claude"] }
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ If the `curl` fails (gateway not running, wrong port) or the verification line d

**What `opt-out confirmed` proves, exactly.** The gateway holds the id as an opaque token: `ignored: true` means the id is in its drop set, and nothing more. It never inspects traffic, so it cannot tell you the id is one your exchanges carry - that match happens later, in the client adapter, against the `session_id` it stamps on the row. For Claude the session *is* the conversation and `CLAUDE_CODE_SESSION_ID` is that same id, so sending it is what makes the opt-out real; the reply is a receipt for the write, not a verified drop. Do not report it to the user as more than that, and never treat a follow-up `GET` as extra proof: it is the same set lookup answering the same question.

The opt-out is held in memory by the running gateway and keyed on that one session id, so two things drop it: a **gateway restart**, and a **new session id** minted under what the user experiences as the same conversation (`claude --fork-session`; a plain `--resume` / `--continue` reuses the id). If the review spans either, re-run this step. `hyp session status` reports the current answer for the session you are in at any point. Reverse later with `/hypaware-unignore`.
The opt-out is held in memory by the running gateway and keyed on that one session id, so two things drop it: a **gateway restart**, and a **new session id** minted under what the user experiences as the same conversation (`claude --fork-session`; a plain `--resume` / `--continue` reuses the id). If the review spans either, re-run this step. `hyp session status` reports the current answer for the session you are in at any point. Reverse later with `hyp session unignore`.

## Step 2 - Check that backfill has settled (before surveying)

Expand Down
Loading
Loading