@skein-code/cli 0.3.26 → 0.3.27

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.
@@ -289,21 +289,37 @@ JavaScript plugins are intentionally unsupported because they would share the
289
289
  CLI's full filesystem, environment, and process privileges.
290
290
 
291
291
  MCP is the interoperability boundary for external executable capabilities. It
292
- is disabled by default, removed from untrusted project configuration, exposes a
293
- compact lazy activation catalog during normal chat startup, treats server
294
- annotations as untrusted, and applies argument, schema, result, server-count,
295
- timeout, and transport limits. The `mcp_activate` catalog connects a selected
296
- server on demand, discovers its remote tools, and registers at most eight
297
- request-relevant schemas into the live registry; explicit diagnostic commands
298
- such as `skein mcp status` can still connect all configured servers eagerly.
299
- Every MCP activation and remote MCP call currently requires the network
300
- permission category. A configured stdio server is still an external program
301
- with the user's operating-system privileges; cwd and environment validation
302
- reduce accidental exposure but are not a sandbox. Only reviewed user-owned
303
- configuration should enable one.
304
-
305
- Before any marketplace-style plugin support, add a declarative capability
306
- manifest, first-run review, lazy tool-schema activation, per-server permission
307
- scopes, and an optional process sandbox. Plugin packages should compose Skills,
308
- workflows, and MCP servers rather than load arbitrary code into the Skein
309
- process.
292
+ is disabled by default, removed from untrusted project configuration, treats
293
+ server annotations as untrusted, and applies argument, schema, result,
294
+ server-count, timeout, and transport limits. A common declarative capability
295
+ vocabulary describes source, version, tools, permission categories, network,
296
+ commands, paths, sensitive fields, background/process-tree effects, and
297
+ completion-evidence support. Tool definitions carry the same source,
298
+ activation, permission, and evidence metadata so `/tools` can distinguish the
299
+ built-in, memory, workflow, agent, and MCP surfaces.
300
+
301
+ Normal chat exposes three bounded controls: `mcp_search` and `mcp_inspect` read
302
+ only local redacted manifests; `mcp_activate` connects only a manifest whose
303
+ workspace-bound SHA-256 fingerprint the user trusted. The model cannot write
304
+ the trust store. Remote discovery stays true-lazy and activation registers at
305
+ most eight query-relevant schemas. Once a manifest names tools, undeclared
306
+ remote schemas are rejected. Disable and revoke decisions persist and unload
307
+ registered adapters. Optional server failures remain isolated; only an
308
+ explicitly required, trusted server is checked during runtime initialization
309
+ and allowed to block it.
310
+
311
+ Every MCP call retains `network` permission even for stdio. Declared write,
312
+ shell, and Git effects add rather than replace permission categories. Sensitive
313
+ argument fields are redacted before terminal, TUI, JSON, or approval events.
314
+ External mutations receive complete change tracking only when Skein created the
315
+ pre-call checkpoint and the server returns that exact id with workspace-valid
316
+ changed files, artifact receipts, and completion evidence. Other mutation
317
+ results set tracking to `unresolved`, preventing an unsupported completion
318
+ claim.
319
+
320
+ A configured stdio server is still an external program with the user's
321
+ operating-system privileges; cwd and environment validation are not a process
322
+ sandbox. Marketplace-style packages must compose data-only Skills, workflows,
323
+ profiles, and explicitly trusted MCP servers rather than load arbitrary code
324
+ into the Skein process. An optional OS/container subprocess sandbox remains a
325
+ future hardening layer.
@@ -9,7 +9,7 @@ one of the milestones below.
9
9
 
10
10
  - Product name: `Skein`; primary executable: `skein`.
11
11
  - Compatibility executables: `mosaic` and `mosaic-code`.
12
- - Current repository version: `0.3.26`.
12
+ - Current repository version: `0.3.27`.
13
13
  - Runtime requirement: Node.js `>=22.16.0` (the runtime uses unflagged
14
14
  `node:sqlite` with FTS5, and current CLI/build dependencies require this
15
15
  Node 22 baseline).
@@ -41,8 +41,8 @@ npm audit --omit=dev
41
41
  npm run release:verify -- --output-dir artifacts/package
42
42
  ```
43
43
 
44
- The latest verified package is `skein-code-cli-0.3.26.tgz`. The verifier writes
45
- its SHA-256 to `artifacts/package/skein-code-cli-0.3.26.tgz.sha256`, and CI
44
+ The latest verified package is `skein-code-cli-0.3.27.tgz`. The verifier writes
45
+ its SHA-256 to `artifacts/package/skein-code-cli-0.3.27.tgz.sha256`, and CI
46
46
  retains the checksum beside the package metadata. The checksum is deliberately
47
47
  not copied into this packaged document because doing so would change the
48
48
  archive it describes.
@@ -99,15 +99,13 @@ firewall policies while requiring complete evidence and recovery coverage.
99
99
  The replay reports a 36.7% estimated-input reduction; this is a deterministic
100
100
  budget measurement, not a provider billing or task-success claim.
101
101
 
102
- MCP tool definitions are now marked for progressive disclosure. Normal chat
103
- startup exposes a compact `mcp_activate` catalog instead of connecting every
104
- server. Selecting a configured server connects it, runs remote `listTools`, and
105
- loads at most eight request-relevant schemas into the live registry. Selected
106
- schemas retain their registry order and remain loaded for the current run, and
107
- Token Ledger receipts record the deferred count. MCP activation and discovered
108
- tools remain `network` operations, hidden tool calls remain rejected by the
109
- existing boundary, and explicit diagnostics such as `skein mcp status` still
110
- connect eagerly by design.
102
+ MCP tool definitions use progressive disclosure. Version `0.3.23` exposed a
103
+ compact `mcp_activate` catalog instead of connecting every server, then loaded
104
+ at most eight request-relevant schemas. Version `0.3.27` adds the preceding
105
+ local `mcp_search` and `mcp_inspect` stages plus user-owned fingerprint trust;
106
+ `skein mcp status` is now no-connect. Selected schemas remain stable for the
107
+ current run, Token Ledger receipts record the deferred count, MCP calls retain
108
+ the network boundary, and hidden tool calls remain rejected.
111
109
 
112
110
  Version `0.3.22` normalizes provider-reported cache and reasoning usage across
113
111
  streaming and non-streaming OpenAI, Anthropic, and Gemini responses. Token
@@ -414,17 +412,29 @@ Implementation progress:
414
412
  Team Run compatibility. Parallel writers, external CLI writer mode, cost
415
413
  controls, Gemini CLI, and optional tmux/iTerm pane hosts remain next.
416
414
 
417
- ### P2: MCP, Skills, And Workflow Trust UX
418
-
419
- Add a first-run catalog and inspection flow for bundled capabilities. Keep
420
- installation explicit and reviewable: show source, requested tools, filesystem
421
- scope, network scope, and trust state before activation. Add fixture servers and
422
- Skills that exercise timeout, malformed schema, disconnect, and version drift.
423
- Lazy MCP activation is now the default chat path. Next, add declarative
424
- capability manifests, per-server trust review, activation telemetry, and an
425
- optional subprocess sandbox before any marketplace. Do not load arbitrary plugin
426
- JavaScript in-process; package reusable extensions as data-only Skills/workflows
427
- plus explicitly trusted MCP servers.
415
+ ### P1: MCP capability trust (complete in 0.3.27)
416
+
417
+ Version `0.3.27` completes local `search inspect → trust → activate` for MCP.
418
+ Redacted manifests cover source, version, tools, permission categories,
419
+ network, commands, paths, sensitive fields, background/process-tree effects,
420
+ and completion-evidence support. Trust is bound to the exact manifest
421
+ fingerprint and workspace; the model cannot grant it. Persistent disable and
422
+ revoke unload activated schemas. Optional server failures remain isolated and
423
+ only explicitly required servers may block initialization.
424
+
425
+ Declared permissions are additive to the non-removable network boundary, and
426
+ server annotations cannot lower them. A named manifest rejects undeclared
427
+ server-injected tools. Text, JSON, and TUI events redact declared sensitive
428
+ arguments. External mutations stay completion-unresolved unless Skein's own
429
+ checkpoint id, workspace-valid changed files, artifact receipts, and completion
430
+ evidence round-trip successfully. Fixed tests cover malformed schemas,
431
+ injection, trust invalidation, disable/revoke, required degradation, schema
432
+ token savings, and top-tool selection. These are deterministic contract tests,
433
+ not a general real-model accuracy claim.
434
+
435
+ Future extension work may add an optional subprocess sandbox and data-only
436
+ bundles that compose Skills, workflows, profiles, and trusted MCP servers. It
437
+ must not load arbitrary plugin JavaScript in-process.
428
438
 
429
439
  ### Delivered: bounded long-session continuity and intent sufficiency
430
440
 
@@ -20,12 +20,12 @@ product surfaces.
20
20
 
21
21
  | Area | Mainstream signal | Skein today | Product implication |
22
22
  | --- | --- | --- | --- |
23
- | Context | Auggie automatically indexes projects and offers context-aware interactive and print modes. Its MCP Tool Search avoids loading every remote schema up front. See [Auggie overview](https://docs.augmentcode.com/cli/overview) and [integrations](https://docs.augmentcode.com/cli/integrations). | Local BM25/path/symbol retrieval with language-aware chunks, current-file freshness checks, diversity-aware token packing, progressive Skills, and hard token caps. Normal chat startup exposes only a compact `mcp_activate` server catalog; remote MCP connection, `listTools`, and up to eight relevant schemas are loaded on demand. | Measure lazy MCP activation cost and add per-server trust review/sandboxing before marketplace-style plugin support. |
23
+ | Context | Auggie automatically indexes projects and offers context-aware interactive and print modes. Its MCP Tool Search avoids loading every remote schema up front. See [Auggie overview](https://docs.augmentcode.com/cli/overview) and [integrations](https://docs.augmentcode.com/cli/integrations). | Local BM25/path/symbol retrieval with language-aware chunks, current-file freshness checks, diversity-aware token packing, progressive Skills, and hard token caps. MCP uses local `search inspect trust activate`; remote `listTools` stays lazy and at most eight relevant schemas load. Activation receipts compare eager and selected schema estimates plus the lexical top match. | Keep the deterministic schema/selection fixture and add real-model tool-choice evaluation before claiming general accuracy gains. |
24
24
  | Tool result economy | FastCtx argues for structured file/search tools, explicit pagination, bounded output tiers, and persistent background-job logs so the model spends fewer turns on shell mechanics. See the [FastCtx repository](https://github.com/yc-duan/fastctx) and its [LINUX DO introduction](https://linux.do/t/topic/2612425). These are design signals, not independent evidence that every model becomes more accurate. | Native tools already use closed schemas and permission/checkpoint boundaries. Oversized results now use a dynamic token budget, head/tail receipts, source-truncation telemetry, and redacted session-scoped local readback. Single-file UTF-8 reads and foreground-only shell execution remain narrower than FastCtx. | Keep FastCtx optional through MCP instead of duplicating the default kernel. Add measured read/list/search continuation and batch reading before considering persistent background jobs. |
25
25
  | Workflow modes | Claude Code documents isolated subagents, agent teams, hooks, code intelligence, Skills, MCP, and plugins in one extension model. See [Claude Code extensions](https://code.claude.com/docs/en/features-overview). Copilot CLI exposes Plan and Autopilot modes. See [Copilot CLI](https://github.com/features/copilot/cli). | Ask and Build modes exist; Ask is read-only but does not produce a named approval-ready plan. | Add an explicit Plan mode. Keep it read-only and require approval before Build. |
26
26
  | Code intelligence | Claude Code advertises language-server-backed symbol navigation and live type errors. | Retrieval is lexical/BM25/path/symbol index based; no LSP diagnostics or rename graph. | Add an optional LSP adapter after storage and scheduler foundations. |
27
27
  | Parallel work | Claude documents isolated subagents and agent teams; Copilot CLI offers background delegation and fleet-style parallel work. | Routed multi-model councils share bounded reports, observe/guard/strict task-budget policies, reviewer acceptance/revision, and a responsive Team Cockpit. The main agent remains the only writer. | Add worktree-isolated writers, deterministic integration, and conflict/rollback UX without weakening the visible review gate. |
28
- | Trust and execution | Gemini CLI documents sandboxing and trusted folders; Claude exposes lifecycle hooks and permission events. See the [Gemini CLI repository](https://github.com/google-gemini/gemini-cli) and [Claude hooks](https://code.claude.com/docs/en/hooks). | Category permissions, project trust, checkpoints, hooks, and audit trails are strong; process sandboxing and first-run trust inspection are incomplete. | Explain trust before activation and offer an optional OS/container sandbox. |
28
+ | Trust and execution | Gemini CLI documents sandboxing and trusted folders; Claude exposes lifecycle hooks and permission events. See the [Gemini CLI repository](https://github.com/google-gemini/gemini-cli) and [Claude hooks](https://code.claude.com/docs/en/hooks). | Category permissions, project trust, checkpoints, hooks, audit trails, per-manifest MCP trust review, persistent disable/revoke, sensitive-field redaction, and unsupported-mutation evidence degradation are present. Process sandboxing remains incomplete. | Add an optional OS/container sandbox without weakening manifest, permission, or completion-evidence gates. |
29
29
  | Collaboration | Auggie supports integrations and conversation export; Copilot supports GitHub-native MCP and shareable workflows. | Session export and resumability are local; no shareable artifact or review bundle. | Add a deterministic redacted session/review bundle before any hosted sharing. |
30
30
  | Distribution and recovery | Competitors provide guided installation, auth, update channels, and workflow-specific entry points. | Package/release verification is reproducible; `skein doctor` reports project/user namespace and interrupted-operation state, while shared live-process leases and exclusive mutation leases make migration, rollback, and recovery crash-safe without deleting changed canonical data. | Add capability review and upgrade UX, then define the measured legacy-alias window. |
31
31
 
@@ -43,9 +43,9 @@ product surfaces.
43
43
  quarantining the canonical copy; `--recover` handles interrupted operations;
44
44
  `--home` covers user-level state. Shared leases cover live managed writers,
45
45
  while namespace mutation requires an exclusive crash-released lease.
46
- 4. **P1 MCP trust hardening:** add per-server review, capability manifests,
47
- activation telemetry, and optional stdio sandboxing on top of lazy MCP
48
- activation.
46
+ 4. **P1 MCP trust hardening:** per-server review, capability manifests,
47
+ activation telemetry, persistent revoke, and required-server isolation are
48
+ delivered; optional stdio sandboxing remains.
49
49
  5. **P1 scheduler and isolation:** retain the shipped task-budget telemetry and
50
50
  reviewer loop, then add cancellation propagation, deterministic integration,
51
51
  and single-writer/worktree boundaries.
@@ -58,3 +58,33 @@ ui:
58
58
  color: true
59
59
  compact: false
60
60
  theme: auto
61
+
62
+ # External capabilities are disabled until both configuration and the separate
63
+ # workspace-bound manifest trust review are explicit. Use:
64
+ # skein mcp search docs
65
+ # skein mcp inspect docs
66
+ # skein mcp trust docs
67
+ # skein mcp activate docs search documentation
68
+ mcp:
69
+ enabled: false
70
+ connectTimeoutMs: 12000
71
+ toolTimeoutMs: 60000
72
+ servers:
73
+ docs:
74
+ enabled: false
75
+ required: false
76
+ transport: http
77
+ url: https://docs.example.com/mcp
78
+ description: Search approved documentation.
79
+ version: 1.0.0
80
+ tools:
81
+ - name: search
82
+ description: Search the approved documentation corpus.
83
+ permissions: [read]
84
+ network: [https://docs.example.com]
85
+ commands: []
86
+ paths: []
87
+ sensitiveFields: [token]
88
+ background: false
89
+ processTree: false
90
+ completionEvidence: none
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skein-code/cli",
3
- "version": "0.3.26",
3
+ "version": "0.3.27",
4
4
  "description": "A context-first, model-agnostic coding agent with an auditable terminal workspace.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -16,6 +16,13 @@
16
16
  },
17
17
  "skein": {
18
18
  "releaseNotes": [
19
+ "MCP now follows a no-network search and inspect review before explicit workspace-bound manifest trust and lazy activation",
20
+ "Declarative capability manifests expose redacted source, version, tools, permissions, network, command, path, sensitive-field, process, and completion-evidence effects",
21
+ "Persistent disable and revoke unload active remote schemas while manifest fingerprint changes fail closed to untrusted",
22
+ "Server annotations cannot lower local permissions, named manifests reject injected undeclared schemas, and optional server failures remain isolated",
23
+ "Only explicitly required trusted MCP servers may block startup, while status inspection no longer connects optional servers",
24
+ "Sensitive MCP arguments are redacted from terminal, TUI, JSON, and approval events; unsupported external mutations remain completion-unresolved",
25
+ "Explain and review intents expose smaller built-in schema sets, and MCP activation reports deterministic eager-versus-loaded schema estimates plus top-match evidence",
19
26
  "First-run setup now states that the primary agent needs API credentials and that provider subscriptions or signed-in coding CLIs are separate delegated tools",
20
27
  "Permission prompts show the policy reason, redacted target, working directory, category risk, and explicit once, session, deny, and stop choices",
21
28
  "The Recovery Center joins last-run state, failure repair hints, changed files, checkpoints, diff, audit, rollback, retry, and safe session resume",