@safekb/mcp 0.6.0 → 0.7.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/README.md +18 -6
- package/dist/safekb-mcp.js +1031 -641
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -108,7 +108,7 @@ every tool that keeps a key this way; see [Where secrets are kept](#where-secret
|
|
|
108
108
|
| `--move-key <ref>` | | Move a seal root's current key to `--store system\|file`. |
|
|
109
109
|
| `--delete-key <ref>` | | Remove a seal root's keys from this machine, after a typed confirmation. |
|
|
110
110
|
| `--export <file>` | | Write what this token reaches to a new passphrase-protected file. Takes `--space`, `--doc`, `--compress`, `--skip-locked`. See [Export and import](#export-and-import). |
|
|
111
|
-
| `--import <file>` | | Create what such a file holds in this token's account, as new things. Takes `--into-space`, `--store`. |
|
|
111
|
+
| `--import <file>` | | Create what such a file holds in this token's account, as new things. Takes `--into-space`, `--store`, `--keys`. |
|
|
112
112
|
| | `SAFEKB_SEALED_IDLE_TTL` | Seconds an unlocked seal root may stay idle. Default 900. `unlock_sealed` can set it per root with `idle_ttl_seconds` (60 to 3600). |
|
|
113
113
|
| | `SAFEKB_HOSTED_TIMEOUT` | Seconds a hosted tool call may take. Default 300. |
|
|
114
114
|
| | `SAFEKB_MCP_NO_BROWSER` | Set to anything: never start a browser, only show the authorize link. |
|
|
@@ -319,6 +319,7 @@ npx -y @safekb/mcp --export all.safekb --compress # everything this token
|
|
|
319
319
|
npx -y @safekb/mcp --export work.safekb --space <space id> --doc <document id>
|
|
320
320
|
npx -y @safekb/mcp --import all.safekb # into the account of this token
|
|
321
321
|
npx -y @safekb/mcp --import work.safekb --into-space <space id>
|
|
322
|
+
npx -y @safekb/mcp --import all.safekb --keys pc-a.keys --keys pc-b.keys # keys of locked roots
|
|
322
323
|
```
|
|
323
324
|
|
|
324
325
|
Both need a terminal: the passphrase of the file is typed there (twice for an export) and is never an
|
|
@@ -334,10 +335,12 @@ What an export holds:
|
|
|
334
335
|
- Databases with columns, indexes, views, rows, row pages and the rows' files.
|
|
335
336
|
- Credentials with every secret field. Each secret of a server-encrypted credential is one audited
|
|
336
337
|
reveal on the server.
|
|
337
|
-
- Sealed folders, documents, attachments and credentials
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
338
|
+
- Sealed folders, documents, attachments and credentials of every seal root that opens with a secret
|
|
339
|
+
this machine keeps or its sidecar holds (`safekb-mcp --sidecar`, then `add <name or id>` for a
|
|
340
|
+
passphrase root), decrypted on this machine.
|
|
341
|
+
- Every other seal root as the server stores it, still sealed: the machine that makes the backup needs
|
|
342
|
+
none of their keys. The export names these roots before it writes. Pending deposits in them are left
|
|
343
|
+
out. `--skip-locked` leaves such roots out entirely instead.
|
|
341
344
|
- Projects, tasks, decisions, and the links between exported things.
|
|
342
345
|
|
|
343
346
|
What is selected:
|
|
@@ -356,6 +359,12 @@ What an import does:
|
|
|
356
359
|
- Every exported space becomes a new space, also where one of that name exists. `--into-space` puts
|
|
357
360
|
everything into one existing space instead. A token limited to some spaces is given the spaces it
|
|
358
361
|
creates (this needs a SafeKB server of October 2026 or newer).
|
|
362
|
+
- A seal root the file holds still sealed is opened with its key: from a key export given with
|
|
363
|
+
`--keys <file>` (repeatable; made with `--export-keys` on any machine that keeps the key; its
|
|
364
|
+
passphrase is asked and its keys are used for this import only), or from a store of this machine.
|
|
365
|
+
A key of another account, or one replaced since by a key or passphrase change, does not open it.
|
|
366
|
+
Without a key everything in that root is left out, and the root is named with the reason; import
|
|
367
|
+
the file again with its key to restore it (that creates everything else again too).
|
|
359
368
|
- Every seal root becomes a new seal root with a newly generated key, kept in the default key store
|
|
360
369
|
or the one named by `--store`; a passphrase root therefore becomes a key root. A seal root whose
|
|
361
370
|
name is taken on this machine gets ` (imported)` appended. **Back the new keys up**
|
|
@@ -365,6 +374,8 @@ What an import does:
|
|
|
365
374
|
- When a step fails the import stops, says at which record, and leaves what it had created; nothing
|
|
366
375
|
is rolled back.
|
|
367
376
|
|
|
377
|
+
A file written by 0.7.0 or newer is not read by 0.6.0; 0.7.0 reads files of 0.6.0.
|
|
378
|
+
|
|
368
379
|
Not in an export: version history, creation and change times and authors, shares, public links, space
|
|
369
380
|
members, and the account's settings. A vault document (encrypted in the browser to its owner's vault)
|
|
370
381
|
is exported as ciphertext and can only go back into the account it came from, while its id is free
|
|
@@ -377,7 +388,8 @@ there. Merged tasks are left out.
|
|
|
377
388
|
- A program running as your user can read a key file, ask the system keyring or the sidecar for a
|
|
378
389
|
secret, and read the memory of this client while a root is unlocked.
|
|
379
390
|
- A session that has unlocked a root can be tricked by content it reads into copying it elsewhere.
|
|
380
|
-
- An export file: it holds sealed content under the passphrase of the
|
|
391
|
+
- An export file: it holds the sealed content of every root that opened under the passphrase of the
|
|
392
|
+
file, not under its seal roots.
|
|
381
393
|
- A compromised local machine, or a malicious server serving stale data.
|
|
382
394
|
- Metadata: existence, sizes, timestamps, tree position.
|
|
383
395
|
|