@i4ctime/q-ring 0.14.0 → 0.14.1

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.
Files changed (2) hide show
  1. package/README.md +14 -6
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  <div align="center">
2
- <img src="https://unpkg.com/@i4ctime/q-ring@latest/assets/social-card-optimized.jpg" alt="q-ring logo" width="100%" />
2
+ <img src="https://raw.githubusercontent.com/I4cTime/q-ring/main/assets/social-card-optimized.jpg" alt="q-ring — never paste an API key into .env again" width="100%" />
3
3
  </div>
4
4
 
5
5
  # q-ring
6
6
 
7
- **The first quantum-inspired keyring built specifically for AI coding agents.**
7
+ **OS keychain secrets for AI coding agents, over MCP.**
8
8
 
9
9
  [![NPM Version](https://img.shields.io/npm/v/@i4ctime/q-ring?style=flat-square&color=0ea5e9)](https://www.npmjs.com/package/@i4ctime/q-ring)
10
10
  [![Docs](https://img.shields.io/badge/docs-website-0ea5e9?style=flat-square)](https://qring.i4c.studio/docs)
@@ -383,7 +383,7 @@ qring exec -- npm run deploy
383
383
  # Inject only specific tags
384
384
  qring exec --tags backend -- node server.js
385
385
 
386
- # Run with a restricted profile (blocks curl/wget/ssh, 30s timeout)
386
+ # Run with a restricted profile (blocks network tools and interpreters/shells, 30s timeout)
387
387
  qring exec --profile restricted -- npm test
388
388
  ```
389
389
 
@@ -533,6 +533,8 @@ Define project-level governance rules in `.q-ring.json` to control which MCP too
533
533
 
534
534
  Over MCP, policy is resolved from the directory the server was **launched** in — not from the `projectPath` a caller passes — so an agent can't sidestep restrictions by pointing at a directory with no policy. Launch the MCP server from your project root (where `.q-ring.json` lives). Edits to `.q-ring.json` are picked up automatically (the policy cache invalidates on file change), so you don't need to restart the server.
535
535
 
536
+ Policy files are schema-validated and **fail closed**: an invalid `policy` object (say, a typo like `denytools`) raises a `PolicyConfigError` instead of being silently ignored, so a malformed rule can never widen access.
537
+
536
538
  ```bash
537
539
  # View the active policy
538
540
  qring policy
@@ -568,7 +570,7 @@ Example policy in `.q-ring.json`:
568
570
  Restrict command execution with named profiles that control allowed commands, network access, timeouts, and environment sanitization.
569
571
 
570
572
  ```bash
571
- # Run with the "restricted" profile (blocks curl, wget, ssh; 30s timeout)
573
+ # Run with the "restricted" profile (blocks network tools and interpreters/shells; 30s timeout)
572
574
  qring exec --profile restricted -- npm test
573
575
 
574
576
  # Run with the "ci" profile (5min timeout, allows network)
@@ -578,11 +580,11 @@ qring exec --profile ci -- npm run deploy
578
580
  qring exec -- echo "hello"
579
581
  ```
580
582
 
581
- **Built-in profiles:** `unrestricted`, `restricted` (no network tools, 30s limit), `ci` (5min limit, blocks destructive commands).
583
+ **Built-in profiles:** `unrestricted`, `restricted` (denies network tools *and* interpreters/shells — `python -c`, `node -e`, `bash` and friends can't exfiltrate injected secrets; 30s limit), `ci` (5min limit, blocks destructive commands).
582
584
 
583
585
  ### Tamper-Evident Audit
584
586
 
585
- Every audit event includes a SHA-256 hash of the previous event, creating a tamper-evident chain. Verify integrity and export logs in multiple formats.
587
+ Every audit event includes a SHA-256 hash of the previous event, creating a tamper-evident chain. Since v0.14 the chain is also anchored with a keyed HMAC stored in the OS keyring, so `qring audit:verify` detects truncation and whole-file rewrites — not just in-place edits. Verify integrity and export logs in multiple formats.
586
588
 
587
589
  ```bash
588
590
  # Verify the entire audit chain
@@ -987,6 +989,12 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for the full guide (dev environment, conv
987
989
  - **Claude Code:** `pnpm run plugin:sync:claude` copies `claude-code-plugin/` into the current directory (or pass a project path; add `--user` to install at `~/.claude/`).
988
990
  - See also [docs/cli-mcp-parity.md](docs/cli-mcp-parity.md).
989
991
 
992
+ ## 🔒 Security
993
+
994
+ - **Local-first.** Core storage is your OS keychain — there is no q-ring cloud and no account. The MCP surface, audit log, and agent memory live on your machine (audit and memory files are written owner-only, `0600`).
995
+ - **Hardened by adversarial review.** v0.14.0 shipped the results of an internal adversarial audit — policy-bypass, approval-scoping, and exec-profile findings all fixed, each with regression tests. Details are in the [CHANGELOG](CHANGELOG.md) `Security` sections (house style since 0.12.0: fix first, then disclose there).
996
+ - **Reporting a vulnerability.** Use [GitHub private vulnerability reporting](https://github.com/I4cTime/q-ring/security/advisories/new) — see [SECURITY.md](SECURITY.md) for the supported-versions table and response commitments (48-hour acknowledgement, 7-day assessment).
997
+
990
998
  ## 📜 License
991
999
 
992
1000
  [AGPL-3.0](LICENSE) - Free to use, modify, and share. Any derivative work or hosted service must release its source code under the same license.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@i4ctime/q-ring",
3
- "version": "0.14.0",
3
+ "version": "0.14.1",
4
4
  "mcpName": "io.github.I4cTime/q-ring",
5
5
  "description": "Quantum keyring for AI coding tools — Cursor, Kiro, Claude Code. Secrets, superposition, entanglement, MCP.",
6
6
  "type": "module",