opensocrates 1.1.4 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,40 @@ All notable changes to OpenSocrates are documented here. This project follows
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [1.1.5] - 2026-08-12
9
+
10
+ ### Added
11
+
12
+ - Packaged `diagnose` now verifies the complete installed file inventory
13
+ against `checksums.sha256` and validates the release manifest's runtime
14
+ version, host, and content revision. Explicit `mismatch`, `unavailable`, and
15
+ `unverified` states replace presence-based claims
16
+ ([#64](https://github.com/ParkerHwang/OpenSocrates/issues/64)).
17
+ - Release tests execute the packaged runtime against both intact packages and
18
+ a staged tampered Claude package so integrity reporting is exercised outside
19
+ the source process ([#64](https://github.com/ParkerHwang/OpenSocrates/issues/64)).
20
+
21
+ ### Changed
22
+
23
+ - Claude grounding artifacts now prefer an owner-only, self-ignored
24
+ `.opensocrates` area inside the active workspace, while retaining the OS
25
+ temporary directory as a fail-open fallback. Lookup, receipts, expiry, and
26
+ cleanup handle both roots during upgrades and fallback runs
27
+ ([#62](https://github.com/ParkerHwang/OpenSocrates/issues/62)).
28
+ - Codex package and installation documentation now requires one interactive
29
+ hook approval before automatic selection is expected and distinguishes
30
+ release-validated packaging from unvalidated live hook delivery
31
+ ([#63](https://github.com/ParkerHwang/OpenSocrates/issues/63)).
32
+
33
+ ### Fixed
34
+
35
+ - Default-permission `claude -p` sessions can read selected grounding content
36
+ without `--add-dir`, avoiding the denied-read repair loop caused by placing
37
+ artifacts only in the system temporary directory
38
+ ([#62](https://github.com/ParkerHwang/OpenSocrates/issues/62)).
39
+ - `diagnose` no longer reports manifest and checksum verification merely
40
+ because package files exist ([#64](https://github.com/ParkerHwang/OpenSocrates/issues/64)).
41
+
8
42
  ## [1.1.4] - 2026-08-12
9
43
 
10
44
  ### Added
@@ -305,3 +339,4 @@ All notable changes to OpenSocrates are documented here. This project follows
305
339
  [1.1.2]: https://github.com/ParkerHwang/OpenSocrates/compare/v1.1.1...v1.1.2
306
340
  [1.1.3]: https://github.com/ParkerHwang/OpenSocrates/compare/v1.1.2...v1.1.3
307
341
  [1.1.4]: https://github.com/ParkerHwang/OpenSocrates/compare/v1.1.3...v1.1.4
342
+ [1.1.5]: https://github.com/ParkerHwang/OpenSocrates/compare/v1.1.4...v1.1.5
package/README.ko.md CHANGED
@@ -16,7 +16,7 @@ OpenSocrates는 Claude와 Codex를 위한 로컬 연동 및 저작 추론 프레
16
16
  추론 시스템을 고른 뒤, 이론과 예제 전체를 활성 작업에 추가합니다. 단순한 사실
17
17
  확인과 기계적인 작업은 그대로 통과할 수 있습니다.
18
18
 
19
- 버전 `1.1.4`에는 48개의 추론 시스템, Claude의 단일 사용자 진입점, 선택된 절차를
19
+ 버전 `1.1.5`에는 48개의 추론 시스템, Claude의 단일 사용자 진입점, 선택된 절차를
20
20
  실제로 읽었는지 확인하는 Claude 접지 게이트, Claude/Codex 통합 라이프사이클,
21
21
  선택형 자동 업데이트가 들어 있습니다. 현재 릴리스 플랫폼은 Apple Silicon
22
22
  macOS(`darwin-arm64`)입니다. 기존 호스트 로그인을 사용하므로 API 키나
@@ -26,17 +26,17 @@ OpenSocrates 백엔드가 필요하지 않습니다.
26
26
  런처는 `darwin-arm64`만 허용하며, Intel Mac·Linux·Windows용 런처와 런타임은
27
27
  이번 릴리스에 포함되거나 지원되지 않습니다.
28
28
 
29
- > **최신 릴리스: [OpenSocrates 1.1.4](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.4).**
30
- > Cowork에 업로드할 수 있는 Claude 네이티브 패키지, 호스트별 런타임 분리, 사용할 수
31
- > 없는 집계와 0회를 구분하는 내용 없는 셀렉터 진단을 추가했습니다.
32
- > `npx --yes opensocrates@1.1.4 update --host all`로 관리 중인 두 호스트를 함께
29
+ > **최신 릴리스: [OpenSocrates 1.1.5](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.5).**
30
+ > Claude 접지 파일을 추가 디렉터리 권한 없이 읽을 수 있게 하고, `diagnose`에서
31
+ > 설치 패키지를 실제로 검증하며, Codex의 최초 훅 승인 경계를 명확히 했습니다.
32
+ > `npx --yes opensocrates@1.1.5 update --host all`로 관리 중인 두 호스트를 함께
33
33
  > 업데이트할 수 있습니다.
34
34
 
35
35
  ## 호스트 지원 범위
36
36
 
37
37
  | 호스트 화면 | 자동 선택 | 사용자 진입점 | 검증 상태 |
38
38
  | --- | --- | --- | --- |
39
- | Codex CLI 및 Desktop | 지원 | OpenSocrates 플러그인 | `darwin-arm64` 릴리스 검증 완료 |
39
+ | Codex CLI 및 Desktop | 앱에서 훅을 한 번 승인한 뒤 지원 | OpenSocrates 플러그인 | `darwin-arm64` 패키지·런처 릴리스 검증 완료, 실제 Codex 훅 전달 영수증 없음 |
40
40
  | Claude Code CLI | `UserPromptSubmit` 훅으로 지원 | `/opensocrates` | `darwin-arm64` 로컬 검증 완료 |
41
41
  | Claude Code 데스크톱 앱 | Claude Code 플러그인이 실행되는 곳에서 지원 | `/opensocrates` | [인증된 훅 생명주기 로컬 검증 완료](docs/claude-desktop-live-probe.md) |
42
42
  | Claude Cowork | 실측 로컬 플러그인 업로드에서 지원 | `/opensocrates` | [네이티브 훅 생명주기 로컬 검증 완료, 릴리스 직접 업로드 지원, 마켓플레이스 동기화 없음](docs/claude-cowork-live-probe.md) |
@@ -47,7 +47,8 @@ OpenSocrates 백엔드가 필요하지 않습니다.
47
47
  - **구현 완료** — 코드에 존재하고 패키지에 포함됩니다.
48
48
  - **로컬 검증 완료** — 관리자 장비에서 전 구간을 실행했지만 매 빌드마다
49
49
  검증하지는 않습니다.
50
- - **릴리스 검증 완료** — 릴리스 게이트가 매 빌드마다 실행합니다.
50
+ - **릴리스 검증 완료** — 릴리스 게이트가 매 빌드마다 실행합니다. 현재 Codex는
51
+ 패키지와 런처를 검증하며 실제 훅 전달까지 검증했다는 뜻은 아닙니다.
51
52
  - **실험적 / 실측 수신 기록 없음** — 구현은 되어 있지만 호스트가 실제로 훅을
52
53
  전달했다는 기록이 없습니다. `os capabilities show`는 이 항목들을 사용 가능이
53
54
  아니라 `unknown`으로 보고합니다.
@@ -80,7 +81,7 @@ Node.js 20 이상이 필요합니다. npm에 게시된 `opensocrates` 패키지
80
81
  ### 준비된 모든 호스트에 설치
81
82
 
82
83
  ```bash
83
- npx --yes opensocrates@1.1.4 install --host all
84
+ npx --yes opensocrates@1.1.5 install --host all
84
85
  ```
85
86
 
86
87
  모든 호스트 경로는 지원되는 인증 완료 CLI를 찾고, 어느 호스트도 바꾸기 전에
@@ -91,9 +92,9 @@ npx --yes opensocrates@1.1.4 install --host all
91
92
  전체 라이프사이클에서 같은 호스트 값을 사용할 수 있습니다.
92
93
 
93
94
  ```bash
94
- npx --yes opensocrates@1.1.4 status --host all
95
- npx --yes opensocrates@1.1.4 update --host all
96
- npx --yes opensocrates@1.1.4 remove --host all
95
+ npx --yes opensocrates@1.1.5 status --host all
96
+ npx --yes opensocrates@1.1.5 update --host all
97
+ npx --yes opensocrates@1.1.5 remove --host all
97
98
  ```
98
99
 
99
100
  소유자 전용 `~/.opensocrates/desired-state.json`에는 선택 채널, 설치된 호스트,
@@ -105,9 +106,9 @@ npx --yes opensocrates@1.1.4 remove --host all
105
106
  기존 사용자와의 호환성을 위해 기본 호스트는 계속 Codex입니다.
106
107
 
107
108
  ```bash
108
- npx --yes opensocrates@1.1.4 install
109
- # 같은 명령: npx --yes opensocrates@1.1.4 install --host codex
110
- npx --yes opensocrates@1.1.4 install --host claude
109
+ npx --yes opensocrates@1.1.5 install
110
+ # 같은 명령: npx --yes opensocrates@1.1.5 install --host codex
111
+ npx --yes opensocrates@1.1.5 install --host claude
111
112
  ```
112
113
 
113
114
  기존 `--host codex` 및 `--host claude` 라이프사이클은 그대로 지원합니다. 호스트별
@@ -124,9 +125,9 @@ Claude 상태는 활성 설치와 설치됐지만 비활성화된 플러그인
124
125
  ### 선택형 자동 업데이트
125
126
 
126
127
  ```bash
127
- npx --yes opensocrates@1.1.4 auto-update enable --host all
128
- npx --yes opensocrates@1.1.4 auto-update status
129
- npx --yes opensocrates@1.1.4 auto-update disable
128
+ npx --yes opensocrates@1.1.5 auto-update enable --host all
129
+ npx --yes opensocrates@1.1.5 auto-update status
130
+ npx --yes opensocrates@1.1.5 auto-update disable
130
131
  ```
131
132
 
132
133
  자동 업데이트는 명시적으로 켜기 전까지 비활성화되어 있습니다. macOS LaunchAgent는
@@ -148,7 +149,7 @@ LaunchAgent를 언로드하고 삭제하며, `remove --host all`도 관리 호
148
149
  ### Claude 웹 및 Desktop Chat 스킬
149
150
 
150
151
  이 화면들은 플러그인 스킬은 지원하지만 훅은 실행하지 않습니다. 릴리스에서
151
- `opensocrates-1.1.4-claude-chat-skills.zip`을 내려받아 Claude의 **사용자 지정 →
152
+ `opensocrates-1.1.5-claude-chat-skills.zip`을 내려받아 Claude의 **사용자 지정 →
152
153
  스킬 → 스킬 업로드** 화면에서 업로드하세요. ZIP은 업로더 요구사항에 맞춰
153
154
  최상위 `opensocrates/` 폴더 바로 아래에 `SKILL.md`를 둡니다. 패키지는
154
155
  `/opensocrates` 스킬 하나만 노출하고, 48개
@@ -162,21 +163,21 @@ LaunchAgent를 언로드하고 삭제하며, `remove --host all`도 관리 호
162
163
  npm 레지스트리를 거치지 않을 때도 같은 호스트 옵션을 사용합니다.
163
164
 
164
165
  ```bash
165
- npx --yes github:ParkerHwang/OpenSocrates#v1.1.4 install --host all
166
- npx --yes github:ParkerHwang/OpenSocrates#v1.1.4 install --host claude
167
- npx --yes github:ParkerHwang/OpenSocrates#v1.1.4 install --host codex
166
+ npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host all
167
+ npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host claude
168
+ npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host codex
168
169
  ```
169
170
 
170
171
  ### 릴리스 파일 직접 검증
171
172
 
172
- [v1.1.4 릴리스](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.4)에서
173
+ [v1.1.5 릴리스](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.5)에서
173
174
  `opensocrates.mjs`, 호스트 패키지, `.sha256` 파일을 내려받습니다. Claude의 예:
174
175
 
175
176
  ```bash
176
- shasum -a 256 -c opensocrates-1.1.4-claude-plugin.zip.sha256
177
+ shasum -a 256 -c opensocrates-1.1.5-claude-plugin.zip.sha256
177
178
  node opensocrates.mjs install --host claude \
178
- --asset opensocrates-1.1.4-claude-plugin.zip \
179
- --checksum opensocrates-1.1.4-claude-plugin.zip.sha256
179
+ --asset opensocrates-1.1.5-claude-plugin.zip \
180
+ --checksum opensocrates-1.1.5-claude-plugin.zip.sha256
180
181
  ```
181
182
 
182
183
  Codex 패키지는 `claude`를 `codex`로 바꾸면 됩니다.
@@ -191,7 +192,7 @@ Codex 패키지는 `claude`를 `codex`로 바꾸면 됩니다.
191
192
  ```bash
192
193
  claude plugin uninstall opensocrates@OpenSocrates --scope user
193
194
  claude plugin marketplace remove OpenSocrates --scope user
194
- npx --yes opensocrates@1.1.4 install --host claude
195
+ npx --yes opensocrates@1.1.5 install --host claude
195
196
  ```
196
197
 
197
198
  관리형 v1.1.0 Claude 설치를 업데이트하면 패키지 트리 전체가 교체됩니다. 따라서
@@ -206,12 +207,25 @@ Claude나 Codex를 평소처럼 사용하세요. 요청에 판단, 해석, 진
206
207
 
207
208
  1. 현재 호스트에서 새로운 비영구 셀렉터를 시작합니다.
208
209
  2. 저작된 48개 시스템 카탈로그에서 적합한 시스템을 선택합니다.
209
- 3. 선택된 전체 콘텐츠를 소유자 전용 임시 Markdown 파일에 씁니다.
210
+ 3. 선택된 전체 콘텐츠를 소유자 전용 Markdown 파일에 씁니다.
210
211
  4. 각 방법 ID와 콘텐츠 리비전, 크기 한도 안에 들면 정확한 `Do not use when` 및
211
212
  `Stop conditions`를 작은 숨김 컨텍스트에 추가합니다.
212
213
  5. 활성 작업이 방법을 적용하기 전에 전체 파일을 읽고, 접지된 답변의 마지막에
213
214
  `OpenSocrates grounding: triangulation@1`과 같은 정확한 감사 줄을 남기게 합니다.
214
215
 
216
+ Codex에 설치한 뒤에는 대화형 Codex 세션을 한 번 열어 OpenSocrates 훅을 승인해야
217
+ 자동 선택을 신뢰할 수 있습니다. 이 승인이 끝나기 전에는 `codex exec` 같은 비대화형
218
+ 화면이 신뢰되지 않은 훅을 조용히 건너뛸 수 있습니다.
219
+
220
+ Claude 훅 화면은 추가 디렉터리 권한 없이 선택 콘텐츠를 읽을 수 있도록 현재
221
+ 워크스페이스 안의 소유자 전용 `.opensocrates` artifact 영역을 우선 사용합니다.
222
+ 내부 `.gitignore`가 이 영역을 `git status`에서 숨기고 turn·세션 정리 시 파일을
223
+ 삭제합니다. 워크스페이스를 사용할 수 없으면 소유자 전용 OS 임시 디렉터리로
224
+ 대체합니다. 다만 `.gitignore`나 숨김 디렉터리를 무시하지 않는 별도 백업·동기화
225
+ 도구는 artifact가 존재하는 동안 저작된 OpenSocrates 콘텐츠를 볼 수 있습니다.
226
+ artifact에는 원시 프롬프트, 대화 기록, 워크스페이스 콘텐츠, 자격 증명, 셀렉터
227
+ 추론이 들어가지 않습니다.
228
+
215
229
  Claude 훅 화면에서는 Read 전용 `PostToolUse` 훅이 현재 turn의 정확한 파일을 첫
216
230
  줄부터 종료 표식까지 읽은 경우에만 인증된 영수증을 만듭니다. `Stop` 시 영수증이나
217
231
  감사 줄이 없으면 한 번만 보정을 요청하고, `stop_hook_active`로 반복 보정을
@@ -294,6 +308,13 @@ Claude 셀렉터 시도는 `executable_missing`, `request_rejected`, `spawn_fail
294
308
  표시합니다. 다음 유효한 셀렉터 결과가 현재 스키마의 손상된 집계를 새로운 제한된
295
309
  카운트 문서로 교체하며, 알 수 없는 미래 스키마는 해당 새 런타임을 위해 보존합니다.
296
310
 
311
+ 패키지의 `diagnose` 명령은 설치 파일 목록을 `checksums.sha256`과 대조하고 릴리스
312
+ manifest가 실행 중인 버전·호스트·콘텐츠 리비전을 가리키는지도 확인합니다. 단순한
313
+ 파일 존재 여부로 성공을 추정하지 않고 `verified`, `mismatch`, `unavailable`,
314
+ `unverified`를 표시합니다. 이 해시는 로컬 변경이나 손상을 찾지만 manifest와
315
+ checksum 파일 자체는 서명되지 않았으므로 패키지 전체를 바꿀 수 있는 공격자에 대한
316
+ 진본성 증명은 아닙니다.
317
+
297
318
  자동 업데이트를 켜면 앞서 설명한 desired state와 간결한 영수증만 소유자 전용
298
319
  권한으로 저장합니다. 실행 중인 Claude나 Codex 세션을 검사하거나 종료하지 않습니다.
299
320
  이미 실행 중인 작업은 로드한 플러그인을 계속 쓰고, 새 작업이 조정된 버전을 자연스럽게
package/README.md CHANGED
@@ -17,7 +17,7 @@ uses a fresh host-native selector to choose relevant systems, and adds their
17
17
  complete theory and examples to the active task. Straightforward factual and
18
18
  mechanical work can pass through unchanged.
19
19
 
20
- Version `1.1.4` includes 48 reasoning systems, one user-facing Claude entry, a
20
+ Version `1.1.5` includes 48 reasoning systems, one user-facing Claude entry, a
21
21
  Claude grounding gate that verifies selected procedures were read, coordinated
22
22
  Claude/Codex lifecycle management, and opt-in automatic updates on
23
23
  Apple-silicon macOS (`darwin-arm64`). It uses your existing host login and does
@@ -27,17 +27,18 @@ The native plugin archives intentionally ship only `bin/launch.sh`. That
27
27
  launcher accepts `darwin-arm64` only; macOS Intel, Linux, and Windows launchers
28
28
  and runtimes are not shipped or supported in this release.
29
29
 
30
- > **Latest release: [OpenSocrates 1.1.4](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.4).**
31
- > It adds a Cowork-uploadable native Claude package, host-split runtimes, and
32
- > content-free selector diagnostics that distinguish unavailable data from zero.
30
+ > **Latest release: [OpenSocrates 1.1.5](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.5).**
31
+ > It makes Claude grounding readable without extra directory permission,
32
+ > verifies installed package files in `diagnose`, and documents Codex's
33
+ > one-time hook approval boundary.
33
34
  > Upgrade both managed hosts together with
34
- > `npx --yes opensocrates@1.1.4 update --host all`.
35
+ > `npx --yes opensocrates@1.1.5 update --host all`.
35
36
 
36
37
  ## Host support
37
38
 
38
39
  | Host surface | Automatic selection | User-facing entry | Validation status |
39
40
  | --- | --- | --- | --- |
40
- | Codex CLI and Desktop | Yes | OpenSocrates plugin | Release-validated on `darwin-arm64` |
41
+ | Codex CLI and Desktop | Yes, after one-time in-app hook approval | OpenSocrates plugin | Package and launcher release-validated on `darwin-arm64`; no live Codex hook-delivery receipt |
41
42
  | Claude Code CLI | Yes, through `UserPromptSubmit` | `/opensocrates` | Locally validated on `darwin-arm64` |
42
43
  | Claude Code desktop app | Yes, where Claude Code plugins run | `/opensocrates` | [Authenticated hook lifecycle locally validated](docs/claude-desktop-live-probe.md) |
43
44
  | Claude Cowork | Yes, in the tested local plugin upload | `/opensocrates` | [Native hook lifecycle locally validated; direct release upload, no marketplace sync](docs/claude-cowork-live-probe.md) |
@@ -49,7 +50,8 @@ interchangeable:
49
50
  - **Implemented** — the integration exists in code and ships in the package.
50
51
  - **Locally validated** — exercised end to end on a maintainer machine, but
51
52
  not on every build.
52
- - **Release-validated** — exercised by the release gate on every build.
53
+ - **Release-validated** — exercised by the release gate on every build. For
54
+ Codex this currently covers the package and launcher, not live hook delivery.
53
55
  - **Experimental / no live probe receipt** — implemented, but no captured
54
56
  receipt shows the host actually delivering the hook. `os capabilities show`
55
57
  reports these capabilities as `unknown`, not as available.
@@ -84,7 +86,7 @@ before registering an owner-marked managed marketplace.
84
86
  ### Install every ready host
85
87
 
86
88
  ```bash
87
- npx --yes opensocrates@1.1.4 install --host all
89
+ npx --yes opensocrates@1.1.5 install --host all
88
90
  ```
89
91
 
90
92
  The all-host path detects supported, authenticated host CLIs, completes every
@@ -96,9 +98,9 @@ registration.
96
98
  Use the same host value for the complete lifecycle:
97
99
 
98
100
  ```bash
99
- npx --yes opensocrates@1.1.4 status --host all
100
- npx --yes opensocrates@1.1.4 update --host all
101
- npx --yes opensocrates@1.1.4 remove --host all
101
+ npx --yes opensocrates@1.1.5 status --host all
102
+ npx --yes opensocrates@1.1.5 update --host all
103
+ npx --yes opensocrates@1.1.5 remove --host all
102
104
  ```
103
105
 
104
106
  A private `~/.opensocrates/desired-state.json` manifest records the selected
@@ -111,9 +113,9 @@ automatic update, and per-host drift.
111
113
  Codex remains the default host for backward compatibility:
112
114
 
113
115
  ```bash
114
- npx --yes opensocrates@1.1.4 install
115
- # Equivalent: npx --yes opensocrates@1.1.4 install --host codex
116
- npx --yes opensocrates@1.1.4 install --host claude
116
+ npx --yes opensocrates@1.1.5 install
117
+ # Equivalent: npx --yes opensocrates@1.1.5 install --host codex
118
+ npx --yes opensocrates@1.1.5 install --host claude
117
119
  ```
118
120
 
119
121
  Existing `--host codex` and `--host claude` lifecycle commands remain
@@ -133,9 +135,9 @@ commands. The privacy-safe 2.1.226 fixture is under
133
135
  ### Opt-in automatic updates
134
136
 
135
137
  ```bash
136
- npx --yes opensocrates@1.1.4 auto-update enable --host all
137
- npx --yes opensocrates@1.1.4 auto-update status
138
- npx --yes opensocrates@1.1.4 auto-update disable
138
+ npx --yes opensocrates@1.1.5 auto-update enable --host all
139
+ npx --yes opensocrates@1.1.5 auto-update status
140
+ npx --yes opensocrates@1.1.5 auto-update disable
139
141
  ```
140
142
 
141
143
  Automatic updates are disabled until explicitly enabled. The macOS LaunchAgent
@@ -158,7 +160,7 @@ workspace paths. `auto-update disable` unloads and removes the LaunchAgent;
158
160
  ### Claude web and Desktop Chat skills
159
161
 
160
162
  These surfaces support plugin skills but not hooks. Download
161
- `opensocrates-1.1.4-claude-chat-skills.zip` from the release and upload it from
163
+ `opensocrates-1.1.5-claude-chat-skills.zip` from the release and upload it from
162
164
  Claude's **Customize → Skills → Upload skill** UI. The ZIP contains one
163
165
  top-level `opensocrates/` folder with `SKILL.md` directly inside, as required by
164
166
  the skill uploader. The package exposes exactly one
@@ -172,22 +174,22 @@ because Chat does not execute plugin hooks. See Anthropic's
172
174
  The same host option works without the npm registry:
173
175
 
174
176
  ```bash
175
- npx --yes github:ParkerHwang/OpenSocrates#v1.1.4 install --host all
176
- npx --yes github:ParkerHwang/OpenSocrates#v1.1.4 install --host claude
177
- npx --yes github:ParkerHwang/OpenSocrates#v1.1.4 install --host codex
177
+ npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host all
178
+ npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host claude
179
+ npx --yes github:ParkerHwang/OpenSocrates#v1.1.5 install --host codex
178
180
  ```
179
181
 
180
182
  ### Manual release verification
181
183
 
182
184
  Download `opensocrates.mjs`, the host package, and its `.sha256` file from the
183
- [v1.1.4 release](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.4).
185
+ [v1.1.5 release](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.5).
184
186
  For Claude, for example:
185
187
 
186
188
  ```bash
187
- shasum -a 256 -c opensocrates-1.1.4-claude-plugin.zip.sha256
189
+ shasum -a 256 -c opensocrates-1.1.5-claude-plugin.zip.sha256
188
190
  node opensocrates.mjs install --host claude \
189
- --asset opensocrates-1.1.4-claude-plugin.zip \
190
- --checksum opensocrates-1.1.4-claude-plugin.zip.sha256
191
+ --asset opensocrates-1.1.5-claude-plugin.zip \
192
+ --checksum opensocrates-1.1.5-claude-plugin.zip.sha256
191
193
  ```
192
194
 
193
195
  Replace `claude` with `codex` for the Codex package.
@@ -202,7 +204,7 @@ what is installed, remove it explicitly:
202
204
  ```bash
203
205
  claude plugin uninstall opensocrates@OpenSocrates --scope user
204
206
  claude plugin marketplace remove OpenSocrates --scope user
205
- npx --yes opensocrates@1.1.4 install --host claude
207
+ npx --yes opensocrates@1.1.5 install --host claude
206
208
  ```
207
209
 
208
210
  Updating a managed v1.1.0 Claude installation replaces the complete package
@@ -218,14 +220,28 @@ reasoning process. When it intervenes, it:
218
220
 
219
221
  1. starts a fresh, non-persistent selector in the current host;
220
222
  2. chooses from the authored 48-system catalog;
221
- 3. writes the complete selected content to an owner-only temporary Markdown
222
- file;
223
+ 3. writes the complete selected content to an owner-only Markdown file;
223
224
  4. adds a bounded hidden context message with each method ID, content revision,
224
225
  and, when they fit, its exact `Do not use when` and `Stop conditions`; and
225
226
  5. requires the active task to read the complete file before applying the
226
227
  method and to end a grounded response with an exact audit line such as
227
228
  `OpenSocrates grounding: triangulation@1`.
228
229
 
230
+ After installing for Codex, open one interactive Codex session and approve the
231
+ OpenSocrates hooks before relying on automatic selection. Until that one-time
232
+ approval, non-interactive surfaces such as `codex exec` may silently continue
233
+ without running the untrusted hooks.
234
+
235
+ Claude hook surfaces prefer an owner-only `.opensocrates` artifact area inside
236
+ the current workspace so Claude can read the selected content without an extra
237
+ directory permission. Its self-contained `.gitignore` keeps the area out of
238
+ `git status`; files are removed on turn/session cleanup. If the workspace is
239
+ unusable, OpenSocrates falls back to the owner-only OS temporary directory.
240
+ Because the preferred area is inside the workspace, a separate backup or sync
241
+ tool that ignores neither `.gitignore` nor hidden directories could observe the
242
+ authored OpenSocrates artifact while it exists. Artifacts never contain the raw
243
+ prompt, transcript, workspace content, credentials, or selector reasoning.
244
+
229
245
  On Claude hook surfaces, a Read-only `PostToolUse` hook records an authenticated
230
246
  receipt only when the exact current-turn file is read from its first line
231
247
  through a terminal marker. At `Stop`, a missing receipt or audit line requests
@@ -313,6 +329,14 @@ of asserting zero attempts. The next valid selector outcome replaces a
313
329
  malformed current-schema aggregate with a fresh bounded count document; an
314
330
  unknown future schema is preserved for the newer runtime that owns it.
315
331
 
332
+ The packaged `diagnose` command also verifies the installed file inventory
333
+ against `checksums.sha256` and checks that the release manifest identifies the
334
+ running version, host, and content revision. It reports `verified`, `mismatch`,
335
+ `unavailable`, or `unverified` rather than inferring success from file presence.
336
+ These hashes detect local change or damage; the manifest and checksum file are
337
+ not signed and therefore are not an authenticity proof against an attacker who
338
+ can replace the whole package.
339
+
316
340
  When enabled, the updater stores only desired lifecycle state and the concise
317
341
  receipt described above, under owner-only permissions. It does not inspect or
318
342
  terminate running Claude or Codex sessions; a running task keeps its loaded
package/SECURITY.md CHANGED
@@ -48,6 +48,13 @@ OpenSocrates 1.x:
48
48
  receipts;
49
49
  - fails open when the selector cannot safely complete.
50
50
 
51
+ The installed `diagnose` command verifies the exact package inventory against
52
+ `checksums.sha256` and validates release-manifest identity for the running
53
+ version, host, and content revision. A mismatch is reported explicitly. These
54
+ files are not signed, so this is local integrity and damage detection, not an
55
+ authenticity guarantee against an attacker able to replace the complete
56
+ package and its checksum metadata.
57
+
51
58
  The Claude selector runs a bounded, non-persistent `claude --safe-mode -p`
52
59
  process. Safe mode disables user, project, and plugin customizations, and
53
60
  OpenSocrates additionally passes `--tools ""`, `--disallowedTools "mcp__*"`, and
package/VERSION CHANGED
@@ -1 +1 @@
1
- 1.1.4
1
+ 1.1.5
@@ -24,7 +24,7 @@ import { Readable } from "node:stream";
24
24
  import { pipeline } from "node:stream/promises";
25
25
  import { fileURLToPath } from "node:url";
26
26
 
27
- export const PRODUCT_VERSION = "1.1.4";
27
+ export const PRODUCT_VERSION = "1.1.5";
28
28
  export const REPOSITORY = "ParkerHwang/OpenSocrates";
29
29
  export const MARKETPLACE_NAME = "opensocrates";
30
30
  export const PLUGIN_NAME = "opensocrates";
@@ -1579,6 +1579,13 @@ async function runInstallOrUpdate(options, action) {
1579
1579
  console.log(
1580
1580
  `OpenSocrates ${PRODUCT_VERSION} ${verb} successfully for ${hosts.join(", ")}.`,
1581
1581
  );
1582
+ if (hosts.includes("codex")) {
1583
+ console.log(
1584
+ "Codex approval required: open one interactive Codex session and approve the " +
1585
+ "OpenSocrates hooks before relying on automatic selection. Non-interactive " +
1586
+ "codex exec silently skips hooks that have not been trusted.",
1587
+ );
1588
+ }
1582
1589
  console.log("Start new host tasks to load the updated skills and hooks.");
1583
1590
  return hosts;
1584
1591
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opensocrates",
3
- "version": "1.1.4",
3
+ "version": "1.1.5",
4
4
  "description": "Install and manage OpenSocrates for Claude Code, Cowork, and Codex.",
5
5
  "type": "module",
6
6
  "bin": {