opensocrates 1.3.0 → 1.4.0

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/SECURITY.md CHANGED
@@ -2,151 +2,69 @@
2
2
 
3
3
  ## Supported versions
4
4
 
5
- Security fixes are provided for the latest `1.x` release. Pre-1.0 builds are
6
- not supported.
7
-
8
- | Version | Supported |
9
- | --- | --- |
10
- | 1.x | Yes |
11
- | < 1.0 | No |
5
+ Security fixes are provided for the latest `1.x` release. OpenSocrates 1.4.0
6
+ supports Codex only. Pre-1.0 builds and retired host integrations are unsupported.
12
7
 
13
8
  ## Report a vulnerability
14
9
 
15
10
  Do not publish credentials, private prompts, transcripts, workspace data, or
16
- exploit details in a public issue.
17
-
18
- Use GitHub's
19
- [private vulnerability reporting](https://github.com/ParkerHwang/OpenSocrates/security/advisories/new)
20
- to send a confidential report. Include:
21
-
22
- - the affected version and platform;
23
- - the smallest reproducible example;
24
- - expected and observed impact;
25
- - whether credentials or private user data may be exposed;
26
- - any suggested mitigation.
27
-
28
- If private reporting is unavailable, open a public issue requesting a private
29
- contact channel without including vulnerability details.
30
-
31
- Reports are reviewed as maintainer capacity allows. Acknowledgement,
32
- assessment, remediation, and disclosure timing depend on reproducibility,
33
- severity, and the availability of a safe fix.
11
+ exploit details in a public issue. Use GitHub's
12
+ [private vulnerability reporting](https://github.com/ParkerHwang/OpenSocrates/security/advisories/new).
13
+ Include the affected version and platform, a minimal reproduction, the observed
14
+ impact, whether private user data is exposed, and any suggested mitigation.
15
+ If private reporting is unavailable, request a private contact channel in an
16
+ issue without vulnerability details. Response timing depends on reproducibility,
17
+ severity, safe fixes, and maintainer availability.
34
18
 
35
19
  ## Security boundary
36
20
 
37
- The v1.3 default Claude/Codex submission entry emits discovery guidance only. It
38
- selects no initial method, starts no selector model call and creates no grounding
39
- artifact that an abandoned candidate must read at Stop. The decision command
40
- loads fixed canonical content, keeps only volatile context-scoped delivery
41
- identities and agent availability assertions, and never claims applied reasoning
42
- from an assertion. It does not use CWD-controlled fallback content when its fixed
43
- package/source content pair is absent. No disk state, raw prompt, conversation,
44
- reasoning, screenshot, authentication call or telemetry is added by that command.
45
- The selector and native receipt details below describe retained compatibility
46
- adapters; they must not be presented as observations made by the new default path.
47
-
48
- OpenSocrates 1.x:
49
-
50
- - runs its integration locally through Claude or Codex and uses the user's
51
- existing host login;
52
- - does not require or store an Anthropic or OpenAI API key;
53
- - does not host an OpenSocrates backend or add telemetry;
54
- - verifies downloadable packages with SHA-256 release and package manifests;
55
- - keeps cross-host activation transactional and restores prior managed
56
- registrations when a coordinated activation fails;
57
- - leaves scheduled updates disabled until explicitly enabled and stores only
58
- owner-readable desired state, a single-instance lock, and content-free update
59
- receipts;
60
- - fails open when the selector cannot safely complete.
61
-
62
- The installed `diagnose` command verifies the exact package inventory against
63
- `checksums.sha256` and validates release-manifest identity for the running
64
- version, host, and content revision. A mismatch is reported explicitly. These
65
- files are not signed, so this is local integrity and damage detection, not an
66
- authenticity guarantee against an attacker able to replace the complete
67
- package and its checksum metadata.
68
-
69
- The Claude selector runs a bounded, non-persistent `claude --safe-mode -p`
70
- process. Safe mode disables user, project, and plugin customizations, and
71
- OpenSocrates additionally passes `--tools ""`, `--disallowedTools "mcp__*"`, and
72
- `--strict-mcp-config` so no built-in or MCP tool remains. It receives the current
73
- prompt and authored selection catalog only. The process uses the user's Claude
74
- login, so model requests remain subject to Anthropic's service and data-handling
75
- terms. The Codex selector uses the pinned Codex SDK and existing OAuth session in
76
- its own isolated worker.
77
-
78
- The selector environment is default-deny. `CLAUDE_CONFIG_DIR` is one of the
79
- small set of allowed path variables because the child needs it to locate the
80
- user's existing Claude login when a non-default config directory is in use.
81
- OpenSocrates does not copy, inspect, or log credentials from that directory.
82
-
83
- For fail-open diagnosis, each Claude selector attempt increments one
84
- owner-only local aggregate under a closed nine-label vocabulary. The aggregate
85
- stores counts only: it has no timestamp, prompt, transcript, session or turn
86
- identifier, path, model output, credential, or reasoning. It is shown by the
87
- local `diagnose` command and is never transmitted.
88
- An unreadable aggregate is reported as `unavailable`, never as zero observed
89
- attempts. The next valid selector outcome atomically replaces only a malformed
90
- current-schema aggregate with a fresh bounded count document; an unknown future
91
- schema is preserved. Rejected malformed bytes are never copied into another
92
- file.
93
-
94
- Managed policy settings are part of the host trust boundary and are not disabled.
95
- Anthropic's [CLI reference](https://code.claude.com/docs/en/cli-reference) states
96
- that under `--safe-mode` "managed settings policy still applies, including
97
- policy-configured hooks". Consequences on an organization-managed machine:
98
-
99
- - a managed `UserPromptSubmit` hook executes inside the selector process,
100
- receives the current prompt on standard input, and can return
101
- `additionalContext` that enters selection;
102
- - managed plugins, managed skills, managed `CLAUDE.md`, and policy-configured
103
- MCP servers do not load.
104
-
105
- OpenSocrates does not detect or override managed policy. Selection remains
106
- bounded regardless: the model's returned instruction text is discarded, and only
107
- authored catalog content assembled by OpenSocrates is ever injected. Operators
108
- who cannot accept managed-hook visibility of the selector prompt should not
109
- enable OpenSocrates selection on those machines.
110
-
111
- On Claude surfaces that deliver the packaged hooks, the grounding gate observes
112
- only successful `Read` callbacks for the current turn's exact instruction file.
113
- It transiently checks that the response reached an authored terminal marker and
114
- does not retain the response. The owner-only authenticated receipt stores only
115
- the artifact digest, content revision, selected method IDs, and keyed
116
- authentication/tool-use tags; prompts, transcripts, raw tool output,
117
- credentials, workspace paths, and artifact paths are excluded. `Stop` removes
118
- the receipt with the turn artifact. If `Stop` is absent, the next
119
- `UserPromptSubmit` in that session removes prior prompt trees without touching
120
- the new active tree. `SessionEnd` remains the session backstop, and the
121
- 24-hour `SessionStart` sweep covers crash leftovers when neither event arrives.
122
-
123
- The gate's scope is deliberate and worth stating plainly. It establishes that a
124
- successful `Read` callback naming the exact current-turn artifact returned
125
- content reaching the authored terminal marker. It does not cryptographically
126
- prove that every artifact byte was returned: a synthetic payload carrying only
127
- the marker would satisfy the marker test. That is not reachable by the model,
128
- which does not author `tool_response`, and the marker is the artifact's last
129
- line, so a truncated read loses it. Anything able to forge that callback already
130
- controls the hook's standard input and is outside the boundary this gate
131
- defends. The gate raises the cost of an ungrounded answer; it is not a proof of
132
- delivery, and it fails open by design.
133
-
134
- The optional macOS LaunchAgent invokes the selected published npm channel and
135
- then uses the same verified installer path as a manual update. It does not read
136
- or terminate active Claude or Codex sessions. Its receipt contains only the
137
- checked version, timestamp, per-host result, and an error category; prompts,
138
- transcripts, workspace paths, credentials, and raw error output are excluded.
139
- Automatic major-version upgrades are disabled unless the user explicitly
140
- changes that policy.
141
-
142
- Installer rollback mutates only its owner-marked managed marketplace root. If
143
- the failed root cannot be removed and the previous backup therefore cannot be
144
- renamed into place, the installer preserves that backup and prints quoted,
145
- executable recovery commands naming only those two managed paths.
146
-
147
- Signing, notarization, clean-machine installation, platforms other than
148
- `darwin-arm64`, Claude Chat automatic hooks, and live delivery on every host
149
- surface are not claimed as validated. Native plugin archives ship only
150
- `bin/launch.sh`; it rejects macOS Intel, Linux, Windows, and every other target,
151
- and no PowerShell launcher is included. See the release limitations file for
152
- the complete measured boundary.
21
+ The default Codex submission entry emits discovery guidance only. It starts no
22
+ selector-model request and creates no initial method artifact. The decision
23
+ command loads fixed canonical content and retains only volatile, context-scoped
24
+ delivery identities and agent availability assertions. It never treats an agent
25
+ assertion as proof of applied reasoning. Missing fixed package/source content
26
+ does not authorize a CWD-controlled fallback. This command adds no disk state,
27
+ raw prompt logging, conversation retention, screenshot capture, authentication
28
+ call, or telemetry.
29
+
30
+ The retained legacy Codex selector is a separate compatibility path. It uses the
31
+ pinned SDK and existing Codex authentication in an isolated worker, with bounded
32
+ read-only context access, disabled recursive hooks/plugins, a deadline, and
33
+ fail-open cleanup. Its temporary method artifacts contain authored content only.
34
+ A native read receipt is limited to the supported callback and exact artifact;
35
+ it cannot prove model understanding, method application, or improved answers.
36
+ Legacy SDK credential-copy and POSIX context access are unavailable on Windows.
37
+
38
+ OpenSocrates has no backend, telemetry, separate account, or API-key requirement.
39
+ Ordinary model requests remain subject to Codex service terms. Host-managed policy
40
+ and hook approvals remain part of the host trust boundary. Installation and
41
+ synthetic fixtures do not establish live hook delivery.
42
+
43
+ Release and package SHA-256 inventories detect corruption and enforce complete
44
+ closed payloads. `diagnose` checks the installed package against its manifest.
45
+ Unsigned checksums cannot authenticate bytes against an attacker who can replace
46
+ both the payload and its metadata. Release publication requires exact source
47
+ identity, verified asset transport, and immutable GitHub releases.
48
+
49
+ The installer validates managed-path ownership and preserves unrelated files.
50
+ Installation and removal are transactional; a failed activation restores verified
51
+ prior state. If rollback cannot safely restore a backup, it preserves the backup
52
+ and reports its exact recovery path. Purge refuses unknown, changed, linked, or
53
+ in-use payloads. Codex trust is preserved unless the explicit `--reset-trust`
54
+ option requests removal of the seven exact OpenSocrates trust entries through a
55
+ validated transactional configuration update. Conversation history is preserved.
56
+ Retired-host installation state must be cleaned up with the installer version
57
+ that owned it; 1.4.0 does not reinterpret it as Codex state.
58
+
59
+ The optional macOS LaunchAgent uses the verified installer and the selected npm
60
+ channel. It does not read or terminate active Codex sessions. Its owner-only
61
+ receipt contains version, timestamp, host result, and an error category, without
62
+ prompts, transcripts, credentials, workspace paths, or raw errors. Automatic
63
+ updates and automatic major upgrades are opt-in. Windows scheduled updates are
64
+ unavailable; use manual updates.
65
+
66
+ Windows x64 packages use real owner/DACL checks, binary I/O, file locks, and ZIP
67
+ path validation. Signing, notarization, SmartScreen reputation, Windows ARM64,
68
+ and separate clean-machine or GUI behavior are not inferred from package tests.
69
+ See [Windows support](docs/windows-support.md) and the version-specific release
70
+ record for measured evidence.
package/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.0
1
+ 1.4.0