You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Blocked by #432 (which adds hyp session ignore|unignore|status). This issue is the consequence: once the verb exists, the client skills stop being implementations and become thin invocations, and two LLPs stop being true.
Current state
hypaware-ignore and hypaware-unignore (Claude only) are ~60 lines of embedded bash each: an env guard, gateway endpoint resolution, curl, and a python3 JSON parse. Branch skills/ignore-hide-and-destale fixes what was outright wrong in them today (see below), but the mechanism itself only goes away with the verb.
hypaware-ignore printed .total and declared success without ever checking ignored. Now requires ignored: true and reports "still being recorded" otherwise.
hypaware-unignore said "The CLI is idempotent" (there is no CLI) and told users to hand-delete a .hypignore that hyp unignore <path> manages, omitting the machine-local governor (hyp policy unset / hyp policy show) entirely.
Both gained disable-model-invocation: true, which removes them from the model's context while leaving /hypaware-ignore in the user's slash menu.
Target state
Each skill body becomes a single dynamic-context injection:
---name: hypaware-ignoredescription: Stop HypAware recording for this sessiondisable-model-invocation: trueallowed-tools: Bash(hyp session ignore*)---
!`hyp session ignore`
Report the line above. Check at any time with `hyp session status`.
Deletes per file: the env guard (the verb resolves the id), the endpoint block (the verb resolves the endpoint from config + status.json), the curl, and the python3 parse. Roughly 60 lines to 5. The allowed-tools grant also narrows from Bash(curl *) to Bash(hyp session ignore*), which is a real reduction in what the skill pre-approves.
Codex gets the skills for the first time
hypaware-core/plugins-workspace/codex/skills/ currently has no hypaware-ignore / hypaware-unignore, so a Codex user has no session opt-out outside hypaware-privacy Step 1 (see the Codex comment on #432). Adding them was previously unattractive because it meant duplicating the rollout-resolution bash; with the verb owning resolution, the Codex skills are the same five lines as the Claude ones.
Register in both plugins: hypaware-core/plugins-workspace/claude/src/index.js (the skill-name list at ~L248) and the equivalent in codex/src/index.js.
LLP edits that must land in the same change
These are currently false-once-implemented, not merely stale:
LLP 0066 §motivation ("This spec closes that gap without changing the skills. The skills are the contract; the implementation is specified here.") and LLP 0067 (front matter: "The skill ... is the contract and is not changed"; §overview: "Nothing touches the cache schema, the recorder, backfill, or the skills"). After this change the route remains the contract and the CLI becomes its primary client, with the skills as thin wrappers. Reword rather than delete: the point being preserved is that the wire contract was designed first and honored, not that the skill file is immutable.
LLP 0067 §drop justifies R5 with "the hash fallback it uses otherwise can never be in the set (the skill only ever submits a real CLAUDE_CODE_SESSION_ID)". A verb accepting an explicit [id] argument weakens that invariant: a user can submit an arbitrary string. Either document that the set may hold ids that match nothing (harmless: membership is tested against resolved ids), or have the verb validate the id shape. Decide and record it.
Acceptance
Both Claude skills are <10 lines and contain no curl, no python3, no port literal.
Codex has both skills, registered and materialized at attach.
/hypaware-ignore still works end to end; hyp session status confirms membership afterwards.
disable-model-invocation: true retained on all four (they are user-triggered, side-effecting actions).
LLP 0066 / 0067 edits land in the same commit as the code, per the repo's living-docs rule.
Blocked by #432 (which adds
hyp session ignore|unignore|status). This issue is the consequence: once the verb exists, the client skills stop being implementations and become thin invocations, and two LLPs stop being true.Current state
hypaware-ignoreandhypaware-unignore(Claude only) are ~60 lines of embedded bash each: an env guard, gateway endpoint resolution,curl, and apython3JSON parse. Branchskills/ignore-hide-and-destalefixes what was outright wrong in them today (see below), but the mechanism itself only goes away with the verb.Fixed in-place on that branch, pending the verb:
${ANTHROPIC_BASE_URL:-http://127.0.0.1:8787}; 8787 has not been the default since LLP 0114 (seehyp initwrites an explicitlisten: 127.0.0.1:8787, forfeiting LLP 0114's fixed default and its EADDRINUSE fallback #431). Now resolves the live port fromhyp status --jsonwith an 18521 default. This block is throwaway the moment the verb lands.hypaware-ignoreprinted.totaland declared success without ever checkingignored. Now requiresignored: trueand reports "still being recorded" otherwise.hypaware-unignoresaid "The CLI is idempotent" (there is no CLI) and told users to hand-delete a.hypignorethathyp unignore <path>manages, omitting the machine-local governor (hyp policy unset/hyp policy show) entirely.disable-model-invocation: true, which removes them from the model's context while leaving/hypaware-ignorein the user's slash menu.Target state
Each skill body becomes a single dynamic-context injection:
Deletes per file: the env guard (the verb resolves the id), the endpoint block (the verb resolves the endpoint from config +
status.json), thecurl, and thepython3parse. Roughly 60 lines to 5. Theallowed-toolsgrant also narrows fromBash(curl *)toBash(hyp session ignore*), which is a real reduction in what the skill pre-approves.Codex gets the skills for the first time
hypaware-core/plugins-workspace/codex/skills/currently has nohypaware-ignore/hypaware-unignore, so a Codex user has no session opt-out outsidehypaware-privacyStep 1 (see the Codex comment on #432). Adding them was previously unattractive because it meant duplicating the rollout-resolution bash; with the verb owning resolution, the Codex skills are the same five lines as the Claude ones.Register in both plugins:
hypaware-core/plugins-workspace/claude/src/index.js(the skill-name list at ~L248) and the equivalent incodex/src/index.js.LLP edits that must land in the same change
These are currently false-once-implemented, not merely stale:
CLAUDE_CODE_SESSION_ID)". A verb accepting an explicit[id]argument weakens that invariant: a user can submit an arbitrary string. Either document that the set may hold ids that match nothing (harmless: membership is tested against resolved ids), or have the verb validate the id shape. Decide and record it.Acceptance
curl, nopython3, no port literal./hypaware-ignorestill works end to end;hyp session statusconfirms membership afterwards.disable-model-invocation: trueretained on all four (they are user-triggered, side-effecting actions)./ref-checkclean.Related
hyp session ignore/unignore/status#432 (the verb; blocks this),hyp initwrites an explicitlisten: 127.0.0.1:8787, forfeiting LLP 0114's fixed default and its EADDRINUSE fallback #431 (the port pin that made the stale fallback visible)