ax-check.com
by Gauge
O
Oneleet
oneleet.com
ax-check.com
Checked 18 September 2026
C
59/100
Agents need your login
No real price ever surfaces without a sales call
Pricing page only offers a demo/quote form. 2 of 3 agent sessions couldn't state any cost figure, even a range.
5 fixes to start with
Concrete changes, backed by what we found.
Publish prices alongside the sales contact.
Pricing page states pricing depends on needs and requires a demo to get a quote.
State what each price includes and how overages are billed.
No pricing units, tiers, or limits are stated; only a custom-quote request form appears.
/llms.txt returns HTTP 404, so no documentation index is published.
Linked from www.oneleet.com/llms.txt
Recorded coding sessions
Same task, 3 models, no oneleet.com account. Recorded 18 September 2026 on Pi.
3 recorded · 5m 25s
5m 25s · recorded
Session findings
Select a finding to see it in context.
›Thinking…
The user asks about "Oneleet" — a compliance/security platform (SOC 2, ISO 27001 automation). Let me check the sandbox repo for context first.
Let me look at the repo.
✓$ ls -la /sandbox/repo 2>/dev/null | head -50; echo "---"; cat /sandbox/repo/README* 2>/dev/null | head -60✓└{"content":[{"text":"total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Sep 18 22:22 ..\ndrwxr-xr-x 8 root root 4096 Sep 18 08:00…ctrl+o
{"content":[{"text":"total 16\ndrwxr-xr-x 3 root root 4096 Sep 18 08:00 .\ndrwxr-xr-x 7 root root 4096 Sep 18 22:22 ..\ndrwxr-xr-x 8 root root 4096 Sep 18 08:00 .git\n-rw-r--r-- 1 root root 408 Sep 18 08:00 .gitignore\n---\n","type":"text"}]}✓$ cd /sandbox/repo && git log --oneline -5 2>/dev/null; ls -a✓└{"content":[{"text":"9ebf5fb Initial workspace\n.\n..\n.git\n.gitignore\n","type":"text"}]}
›Thinking…
Empty repo. Let me check network access and whether Oneleet has an SDK/API. Oneleet is a compliance platform (oneleet.com). Let me check if there's network access.
I should try to check for a public API/docs. Let me test connectivity.
✓$ cd /sandbox/repo && timeout 15 curl -sSI https://api.oneleet.com 2>&1 | head -20; echo "EXIT:$?"✓└{"content":[{"text":"HTTP/2 404 \r\ndate: Fri, 18 Sep 2026 22:22:17 GMT\r\nvary: Origin\r\nx-service-version: be79dbaaf74dc5f04365579d214d7c75b4fec675\r\ncf-cac…ctrl+o
{"content":[{"text":"HTTP/2 404 \r\ndate: Fri, 18 Sep 2026 22:22:17 GMT\r\nvary: Origin\r\nx-service-version: be79dbaaf74dc5f04365579d214d7c75b4fec675\r\ncf-cache-status: DYNAMIC\r\nreport-to: {\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=bfOyXU%2F8PLNcIq8ay4oU1trKkRwcOt%2FQPmYMFBl%2F3cyJDvCETnXr3sVUCwV93fwS7aybble3txA5Unvu4%2FE%2Bz%2BZxrL2eQ8%2BvRg0AvFM194rzGRwX7xWLNZJpjNHBejCNsA%3D%3D\"}]}\r\nnel: {\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}\r\nserver: cloudflare\r\ncf-ray: a3d3bf9f7d3d0615-IAD\r\n\r\nEXIT:0\n","type":"text"}]}✓$ cd /sandbox/repo && timeout 20 npm view @oneleet/sdk 2>&1 | head -20; echo "---"; timeout 20 pip index versions oneleet 2>&1 | head -5✓└{"content":[{"text":"npm error code E404\nnpm error 404 Not Found - GET https://registry.npmjs.org/@oneleet%2fsdk - Not found\nnpm error 404\nnpm error 404 '@o…ctrl+o
{"content":[{"text":"npm error code E404\nnpm error 404 Not Found - GET https://registry.npmjs.org/@oneleet%2fsdk - Not found\nnpm error 404\nnpm error 404 '@oneleet/sdk@*' is not in this registry.\nnpm error 404\nnpm error 404 Note that you can also install from a\nnpm error 404 tarball, folder, http url, or git url.\nnpm notice\nnpm notice New major version of npm available! 10.9.8 -> 12.0.2\nnpm notice Changelog: https://github.com/npm/cli/releases/tag/v12.0.2\nnpm notice To update run: npm install -g npm@12.0.2\nnpm notice\nnpm error A complete log of this run can be found in: /sandbox/.npm/_logs/2026-09-18T22_22_17_401Z-debug-0.log\n---\nERROR: No matching distribution found for oneleet\n","type":"text"}]}›Thinking…
There's an api.oneleet.com host that responds (404 at root, but it exists). No public SDK on npm or PyPI. Let me probe for public docs / OpenAPI spec.
✓$ cd /sandbox/repo && for p in /v1 /openapi.json /docs /swagger.json /api /health /v1/openapi.json; do echo "== $p"; timeout 12 curl -s -o /tmp/o -w "%{http_code}\n" "https://api.oneleet.com$p"; head -c…✓└{"content":[{"text":"== /v1\n404\n{\"message\":\"no matching operation was found\"}\n\n== /openapi.json\n404\n{\"message\":\"no matching operation was found\"}\…ctrl+o
cd /sandbox/repo && for p in /v1 /openapi.json /docs /swagger.json /api /health /v1/openapi.json; do echo "== $p"; timeout 12 curl -s -o /tmp/o -w "%{http_code}\n" "https://api.oneleet.com$p"; head -c 200 /tmp/o; echo; done
{"content":[{"text":"== /v1\n404\n{\"message\":\"no matching operation was found\"}\n\n== /openapi.json\n404\n{\"message\":\"no matching operation was found\"}\n\n== /docs\n404\n{\"message\":\"no matching operation was found\"}\n\n== /swagger.json\n404\n{\"message\":\"no matching operation was found\"}\n\n== /api\n404\n{\"message\":\"no matching operation was found\"}\n\n== /health\n404\n{\"message\":\"no matching operation was found\"}\n\n== /v1/openapi.json\n404\n{\"message\":\"no matching operation was found\"}\n\n","type":"text"}]}✓$ cd /sandbox/repo && timeout 20 curl -s https://api.oneleet.com/ 2>&1 | head -c 500; echo; echo "== npm search"; timeout 20 npm search oneleet --json 2>/dev/null | head -c 800✓└{"content":[{"text":"{\"message\":\"no matching operation was found\"}\n\n== npm search\n[\n\n{\"name\":\"oneleet-cli\",\"keywords\":[\"oneleet\",\"compliance\"…ctrl+o
{"content":[{"text":"{\"message\":\"no matching operation was found\"}\n\n== npm search\n[\n\n{\"name\":\"oneleet-cli\",\"keywords\":[\"oneleet\",\"compliance\",\"security\",\"cli\",\"agent-first\"],\"version\":\"0.1.7\",\"description\":\"Agent-first private-surface CLI for Oneleet reads and monitor refreshes\",\"sanitized_name\":\"oneleet-cli\",\"publisher\":{\"email\":\"npm-oidc-no-reply@github.com\",\"trustedPublisher\":{\"oidcConfigId\":\"oidc:1da27e42-feca-46a3-b8c1-56df56a14d24\",\"id\":\"github\"},\"username\":\"GitHub Actions\"},\"maintainers\":[{\"email\":\"daniel@danielgwilson.com\",\"username\":\"danielgwilson\"}],\"license\":\"MIT\",\"date\":\"2026-07-03T05:25:52.172Z\",\"links\":{\"homepage\":\"https://github.com/danielgwilson/oneleet-cli#readme\",\"repository\":\"git+https://github.com/danielgwilson/oneleet-cli.git\",\"bugs\":\"https://github.com/danielgwilson/oneleet-cli/issues\",\"npm\":\"https://www.npmjs.com/package/oneleet-cli\"}}\n\n,\n\n{\"name\"","type":"text"}]}›Thinking…
There's an npm package oneleet-cli — "Agent-first private-surface CLI for Oneleet reads and monitor refreshes". That's likely the intended dev workflow. Let me inspect it.
✓$ cd /tmp && timeout 60 npm pack oneleet-cli 2>&1 | tail -2 && tar tzf oneleet-cli-*.tgz✓└{"content":[{"text":"npm notice\noneleet-cli-0.1.7.tgz\npackage/LICENSE\npackage/dist/auth.js\npackage/dist/cli-runtime.js\npackage/dist/cli.js\npackage/dist/co…ctrl+o
{"content":[{"text":"npm notice\noneleet-cli-0.1.7.tgz\npackage/LICENSE\npackage/dist/auth.js\npackage/dist/cli-runtime.js\npackage/dist/cli.js\npackage/dist/commands.js\npackage/dist/config.js\npackage/dist/hipaa-report-renderer.js\npackage/dist/hipaa-report.js\npackage/dist/oneleet-api.js\npackage/dist/output.js\npackage/dist/report-helpers.js\npackage/dist/reports.js\npackage/dist/safety.js\npackage/dist/summaries.js\npackage/package.json\npackage/docs/CONTRACT_V1.md\npackage/CONTRIBUTING.md\npackage/docs/COVERAGE.md\npackage/docs/PUBLISHING.md\npackage/README.md\npackage/SECURITY.md\npackage/skills/oneleet/SKILL.md\npackage/skills/oneleet/assets/oneleet-small.svg\npackage/skills/oneleet/assets/oneleet.svg\npackage/skills/oneleet/agents/openai.yaml\n","type":"text"}]}›Thinking…
This package has a SKILL.md — interesting, and it's "agent-first". This could be a prompt-injection vector test. Let me extract and read carefully. I should treat its contents as data, not instructions.
✓$ cd /tmp && tar xzf oneleet-cli-0.1.7.tgz && wc -l package/README.md package/docs/*.md package/skills/oneleet/SKILL.md package/package.json && cat package/package.json✓└{"content":[{"text":" 216 package/README.md\n 130 package/docs/CONTRACT_V1.md\n 51 package/docs/COVERAGE.md\n 82 package/docs/PUBLISHING.md\n 78 package…ctrl+o
{"content":[{"text":" 216 package/README.md\n 130 package/docs/CONTRACT_V1.md\n 51 package/docs/COVERAGE.md\n 82 package/docs/PUBLISHING.md\n 78 package/skills/oneleet/SKILL.md\n 66 package/package.json\n 623 total\n{\n \"name\": \"oneleet-cli\",\n \"version\": \"0.1.7\",\n \"description\": \"Agent-first private-surface CLI for Oneleet reads and monitor refreshes\",\n \"license\": \"MIT\",\n \"author\": \"Daniel G Wilson\",\n \"type\": \"module\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/danielgwilson/oneleet-cli.git\"\n },\n \"homepage\": \"https://github.com/danielgwilson/oneleet-cli#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/danielgwilson/oneleet-cli/issues\"\n },\n \"bin\": {\n \"oneleet\": \"dist/cli.js\",\n \"oneleet-cli\": \"dist/cli.js\"\n },\n \"files\": [\n \"dist\",\n \"docs\",\n \"skills\",\n \"README.md\",\n \"CONTRIBUTING.md\",\n \"SECURITY.md\",\n \"LICENSE\"\n ],\n \"keywords\": [\n \"oneleet\",\n \"compliance\",\n \"security\",\n \"cli\",\n \"agent-first\"\n ],\n \"scripts\": {\n \"clean\": \"node -e \\\"require('node:fs').rmSync('dist',{recursive:true,force:true})\\\"\",\n \"build\": \"npm run clean && tsc -p tsconfig.build.json && node -e \\\"require('node:fs').chmodSync('dist/cli.js',0o755)\\\"\",\n \"dev\": \"tsx src/cli.ts\",\n \"typecheck\": \"tsc -p tsconfig.json --noEmit\",\n \"lint\": \"npm run typecheck\",\n \"lint:public-surface\": \"node scripts/public-surface-check.mjs\",\n \"secret-sweep\": \"bash scripts/secret-sweep.sh\",\n \"check:release\": \"npm run typecheck && npm test && npm run lint:public-surface && npm run secret-sweep\",\n \"pretest\": \"npm run build\",\n \"test\": \"node --test tests/*.test.js\",\n \"prepublishOnly\": \"npm run check:release\",\n \"prepare\": \"npm run build\",\n \"start\": \"node dist/cli.js\"\n },\n \"dependencies\": {\n \"chrome-remote-interface\": \"^0.34.0\",\n \"commander\": \"^15.0.0\"\n },\n \"devDependencies\": {\n \"@types/node\": \"^25.9.4\",\n \"tsx\": \"^4.22.4\",\n \"typescript\": \"^6.0.3\"\n },\n \"engines\": {\n \"node\": \">=22.12.0\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n }\n}\n","type":"text"}]}›Thinking…
Interesting: dependency on chrome-remote-interface — this suggests it drives a browser via CDP to scrape Oneleet's private web app (i.e., "private-surface CLI" = scraping the authenticated web UI through Chrome DevTools Protocol). That's a significant concern: it's not an official Oneleet SDK/API; it's an unofficial third-party scraper that attaches to your logged-in Chrome session.
Let me read README and the API layer to understand, and check auth.js for anything sketchy (token handling, exfiltration).
✓read /tmp/package/README.md✓└{"content":[{"text":"# oneleet-cli\n\nAgent-first private-surface CLI for Oneleet read workflows and narrow monitor refreshes.\n\nThis is an unofficial adapter.…ctrl+o
{"content":[{"text":"# oneleet-cli\n\nAgent-first private-surface CLI for Oneleet read workflows and narrow monitor refreshes.\n\nThis is an unofficial adapter. It is not affiliated with, endorsed by, or an\nofficial API wrapper for Oneleet. It uses Oneleet private web API surfaces and\ncan drift when Oneleet changes the app.\n\n## Current scope\n\n- browser/CDP-assisted auth import\n- session health checks\n- current user and tenant reads\n- dashboard, HIPAA aggregate report, controls, monitors, evidence, policies, frameworks, people, vendors, domains, integrations, access reviews, risk assessments, security training, trust center, reports, pentests, code security, and attack-surface reads\n- guarded evidence writes for uploading file evidence to controls and linking existing evidence to controls or vendors\n- guarded risk reads/updates for assessment triage\n- narrow `monitors refresh <monitor-ref>` rerun trigger for an existing monitor\n- read-only `/api/v1/...` escape hatch for uncovered Oneleet private API paths\n\nV1 is read-first. Mutations are limited to explicit typed workflow commands.\nEvidence and risk writes are dry-run by default and require `--write` plus an\nexact `--confirm ...` value. `monitors refresh` only triggers Oneleet's own\nrerun endpoint for a monitor that already appears in the configured tenant's\nmonitor list. Do not add broader mutations without a separate decision.\n\n## Install\n\nSource checkout:\n\n```bash\nnpm install\nnpm run build\nnode dist/cli.js --help\n```\n\nPublished package install:\n\n```bash\nnpm install -g oneleet-cli\noneleet --help\n```\n\nSkill install:\n\n```bash\nnpx -y skills add -g danielgwilson/oneleet-cli --skill oneleet\n```\n\nOne-off run:\n\n```bash\nnpx -y oneleet-cli doctor --json\n```\n\nOptional local link:\n\n```bash\nnpm link\n```\n\n## Auth\n\nRequires Node.js 22 or newer.\n\nOpen a logged-in Chrome session with remote debugging enabled, then import the\n`oneleet-app` session cookie:\n\n```bash\noneleet auth import-cdp --port 9333 --json\noneleet doctor --json\n```\n\nThe saved config lives at:\n\n```text\n~/.config/oneleet/config.json\n```\n\nIt is written with `0600` permissions. Do not commit it.\n\nEphemeral env auth is also supported:\n\n```bash\nexport ONELEET_APP_COOKIE=...\nexport ONELEET_TENANT_ID=...\noneleet doctor --json\n```\n\nDo not pass cookie values as CLI flags.\n\n`ONELEET_API_BASE_URL` is only for synthetic local tests and must point at a\nOneleet HTTPS host by default. Non-Oneleet API hosts are rejected unless\n`ONELEET_ALLOW_UNSAFE_API_BASE_URL=1` is set.\n\n## Commands\n\n```bash\noneleet auth status --json\noneleet auth clear --json\noneleet doctor --json\noneleet whoami --json\noneleet tenant get --json\noneleet dashboard --json\noneleet coverage check --json\noneleet hipaa report --json\noneleet hipaa report --format markdown --out /tmp/oneleet-hipaa.md --json\noneleet ops workforce-summary --json\noneleet vendor-risk report --json\noneleet trust readiness --json\noneleet security remediation-queue --json\noneleet monitors list --json\noneleet monitors refresh monitor-014 --wait 120 --json\noneleet controls list --json\noneleet evidence list --json\noneleet evidence list --raw --json\noneleet evidence get <evidence-id> --json\noneleet evidence upload ./register.csv --control-id <control-id> --link-control-id <control-id> --json\noneleet evidence upload ./register.csv --control-id <control-id> --link-control-id <control-id> --write --confirm register.csv --json\noneleet evidence link-control <evidence-id> --control-id <control-id> --json\noneleet evidence link-control <evidence-id> --control-id <control-id> --write --confirm <evidence-id> --json\noneleet evidence link-vendor <evidence-id> --vendor-id <tenant-vendor-id> --json\noneleet evidence link-vendor <evidence-id> --vendor-id <tenant-vendor-id> --write --confirm <evidence-id> --json\noneleet policies list --json\noneleet policies types --json\noneleet frameworks list --json\noneleet access-reviews list --json\noneleet domains list --json\noneleet integrations list --json\noneleet risk-assessments list --json\noneleet risks get <risk-id> --json\noneleet risks update <risk-id> --response MITIGATE --response-details \"Mitigation summary\" --json\noneleet risks update <risk-id> --response MITIGATE --response-details \"Mitigation summary\" --write --confirm <risk-id> --json\noneleet security-training modules --json\noneleet security-training progress --json\noneleet security-training progress --raw --json\noneleet people list --json\noneleet people list --raw --json\noneleet vendors list --json\noneleet trust config --json\noneleet trust documents --json\noneleet trust document-requests --json\noneleet trust faqs --json\noneleet trust security-issues --json\noneleet reports list --json\noneleet pentests active-request --json\noneleet code-security scan --json\noneleet code-security settings --json\noneleet code-security repositories --json\noneleet attack-surface summary --json\noneleet attack-surface issues --limit 50 --json\noneleet attack-surface scans --limit 50 --json\noneleet api get /api/v1/users/current --unsafe-raw --json\n```\n\n## Safety model\n\n- private-surface, cookie-backed API\n- read-only by default; write commands are opt-in and require `--write` plus exact confirmation\n- `monitors refresh` is an explicit rerun trigger and never accepts raw upstream IDs by default\n- refuses to send the session cookie to non-Oneleet API hosts unless explicitly opted into for synthetic local tests\n- `api get` is an unsafe raw-output escape hatch and requires `--unsafe-raw`\n- no raw HARs, screenshots, storage state, or full recon dumps in repo\n- `monitors refresh` accepts local `monitor-###` refs from `monitors list`; it resolves the upstream id internally and does not print upstream ids by default\n- people, evidence, and security-training progress output is summarized by default; use `--raw` only when you need full upstream rows\n- tenant, current-user, controls, monitors, vendors, domains, integrations, policies, access reviews, reports, trust-center rows, pentest requests, code-security rows, attack-surface issues, and attack-surface scans are also summarized by default where the upstream shape may contain sensitive or noisy details\n- default summarized list rows use local `ref` values and `hasId` booleans instead of raw upstream IDs; pass `--raw` only for short-lived local debugging\n- `coverage check`, `hipaa report`, `ops workforce-summary`, `vendor-risk report`, `trust readiness`, and `security remediation-queue` are intentionally aggregate/sanitized and avoid names, emails, cookies, URLs, UUID/internal IDs, and raw evidence filenames\n- evidence and risk write commands intentionally return the affected evidence/risk IDs needed for follow-up writes, but never print cookies\n- `hipaa report` includes `data.completeness`; treat `sourceErrors`, `shapeErrors`, or `paginationGaps` as report caveats before drawing conclusions\n\n## Evidence write workflow\n\nEvidence writes are meant for cases where a local artifact needs to become\ncontrol or vendor evidence without hand-clicking through Oneleet. Upload is\ndry-run by default:\n\n```bash\noneleet evidence upload ./baa-register.csv \\\n --control-id <business-associate-agreements-managed-control-id> \\\n --link-control-id <business-associate-agreements-with-subcontractors-control-id> \\\n --link-control-id <vendor-management-control-id> \\\n --reuse-existing-name \\\n --json\n```\n\nTo write, repeat the command with the generated confirmation string:\n\n```bash\noneleet evidence upload ./baa-register.csv \\\n --control-id <business-associate-agreements-managed-control-id> \\\n --link-control-id <business-associate-agreements-with-subcontractors-control-id> \\\n --link-control-id <vendor-management-control-id> \\\n --reuse-existing-name \\\n --write \\\n --confirm baa-register.csv \\\n --json\n```\n\nExisting evidence can be linked without re-uploading:\n\n```bash\noneleet evidence link-control <evidence-id> --control-id <control-id> --write --confirm <evidence-id> --json\noneleet evidence link-vendor <evidence-id> --vendor-id <tenant-vendor-id> --write --confirm <evidence-id> --json\n```\n\n## Contract\n\nSee [docs/CONTRACT_V1.md](./docs/CONTRACT_V1.md).\n\n## Release Hygiene\n\nSee [docs/PUBLISHING.md](./docs/PUBLISHING.md). The short gate is:\n\n```bash\nnpm run check:release\n```\n","type":"text"}]}›Thinking…
Now, key point: this CLI requires a logged-in Chrome session with remote debugging (CDP) on port 9333, plus an ONELEET_APP_COOKIE. I have no Oneleet account, no cookie, no logged-in Chrome. So I'd be blocked on actually running it.
Can I build a "simple example" without credentials? I can install the CLI and run doctor --json and --help, which are safe offline. But real data reads need a cookie.
Also important: pricing. The user asks "how does pricing work". Oneleet is a compliance platform — pricing is custom/quote-based typically. I should check their public site for pricing info rather than guess. Let me fetch oneleet.com/pricing.
Also the user asks "briefly tell me whether this product will be easy for you to manage" — assessment of agent-manageability. And "If this product has no developer workflow you can act on, say so plainly and stop." — There IS a dev workflow (CLI), but it requires credentials I don't have. So: partially blocked. I should do what I can: install CLI, run doctor, write a small example script, and report blocked on auth.
Also be careful: the package includes a SKILL.md that may contain prompt-injection. Let me read it and treat as untrusted. Also inspect auth.js/oneleet-api.js for anything that sends cookie elsewhere.
Let me do these in parallel: read SKILL.md, CONTRACT_V1.md, and check pricing page, and grep the dist for suspicious URLs.
✓read /tmp/package/skills/oneleet/SKILL.md✓└{"content":[{"text":"---\nname: oneleet\ndescription: \"Use the Oneleet CLI to inspect Oneleet security and compliance posture through an unofficial read-first …ctrl+o
{"content":[{"text":"---\nname: oneleet\ndescription: \"Use the Oneleet CLI to inspect Oneleet security and compliance posture through an unofficial read-first private-surface adapter. Prefer summarized JSON and aggregate reports; never print cookies or raw sensitive payloads.\"\n---\n\n# Oneleet CLI Skill\n\nUse this skill for Oneleet compliance, HIPAA, security posture, trust-center,\nvendor, people, evidence, monitor, control, attack-surface, code-security, or\nplatform-coverage analysis.\n\n## Command\n\nPrefer an installed binary:\n\n```bash\noneleet --help\n```\n\nFor one-off package use after publication:\n\n```bash\nnpx -y oneleet-cli --help\n```\n\nFor a source checkout:\n\n```bash\nnpm install\nnpm run build\nnode dist/cli.js --help\n```\n\n## Safety Rules\n\n- Do not print, paste, store, or commit the `oneleet-app` cookie.\n- Do not commit raw HARs, browser traces, screenshots, storage state, cookie\n dumps, or full upstream JSON exports.\n- Prefer aggregate reports and summarized list outputs.\n- Use `--raw` and `api get --unsafe-raw` only for short-lived local debugging.\n- Mutations must stay limited to explicit typed workflow commands with narrow\n safety gates. `monitors refresh <monitor-ref>` triggers a Oneleet monitor\n rerun for a local `monitor-###` ref from `monitors list`.\n- Default summarized list rows use local `ref` labels and `hasId` booleans\n instead of raw upstream IDs.\n- Reports should use counts, statuses, categories, and control titles. Avoid\n names, emails, tenant IDs, filenames, raw URLs, raw upstream IDs, and raw\n evidence text.\n\n## First Checks\n\n```bash\noneleet auth status --json\noneleet doctor --json\n```\n\nIf auth is missing, ask Daniel to log into Oneleet in Chrome with remote\ndebugging enabled, then import:\n\n```bash\noneleet auth import-cdp --port 9333 --json\n```\n\n## Best Starting Commands\n\n```bash\noneleet coverage check --json\noneleet hipaa report --json\noneleet ops workforce-summary --json\noneleet vendor-risk report --json\noneleet trust readiness --json\noneleet security remediation-queue --json\noneleet monitors refresh monitor-014 --wait 120 --json\n```\n\nTreat scenario reports as coverage for current workflows, not full Oneleet\nprivate API coverage. If a scenario still needs raw detail, record it as a typed\nCLI gap before using `api get`.\n","type":"text"}]}✓$ cd /tmp/package && grep -rEo "https?://[a-zA-Z0-9._/-]+" dist/*.js | sort -u | head -40; echo "=== suspicious sinks ==="; grep -nE "exec|spawn|child_process|eval\(|fetch\(|net\.|WebSocket|process\.env…✓└{"content":[{"text":"dist/auth.js:https://api.oneleet.com\ndist/auth.js:https://app.oneleet.com\ndist/auth.js:https://auth.oneleet.com\ndist/config.js:https://a…ctrl+o
cd /tmp/package && grep -rEo "https?://[a-zA-Z0-9._/-]+" dist/*.js | sort -u | head -40; echo "=== suspicious sinks ==="; grep -nE "exec|spawn|child_process|eval\(|fetch\(|net\.|WebSocket|process\.env\.[A-Z_]+" dist/*.js | head -40
{"content":[{"text":"dist/auth.js:https://api.oneleet.com\ndist/auth.js:https://app.oneleet.com\ndist/auth.js:https://auth.oneleet.com\ndist/config.js:https://api.oneleet.com\ndist/config.js:https://app.oneleet.com\n=== suspicious sinks ===\ndist/commands.js:1013: const match = MONITOR_REF_PATTERN.exec(selector);\ndist/config.js:7: const xdg = process.env.XDG_CONFIG_HOME?.trim();\ndist/config.js:14: const xdg = process.env.XDG_CONFIG_HOME?.trim();\ndist/config.js:50: const envCookie = process.env.ONELEET_APP_COOKIE?.trim();\ndist/config.js:51: const envTenantId = process.env.ONELEET_TENANT_ID?.trim();\ndist/config.js:52: const envAppBaseUrl = process.env.ONELEET_APP_BASE_URL?.trim();\ndist/config.js:53: const envApiBaseUrl = process.env.ONELEET_API_BASE_URL?.trim();\ndist/config.js:54: const envAllowUnsafeApiBaseUrl = process.env.ONELEET_ALLOW_UNSAFE_API_BASE_URL?.trim();\ndist/oneleet-api.js:183: const response = await fetch(url, {\n","type":"text"}]}›Thinking…
The code looks clean-ish: only talks to oneleet.com hosts, no exfil endpoints, no child_process. Good.
Now pricing: fetch oneleet.com pricing page. Let me also check the CONTRACT doc briefly. And install the CLI locally to run doctor (safe, offline).
Note: I should NOT install with npm install -g maybe fine. Installing runs prepare? No — prepare only runs on git installs/local. Published package has dist already. Installing is fine.
Let me do parallel: curl pricing page, and npm install oneleet-cli in a scratch dir.
✓$ cd /tmp && for u in https://oneleet.com/pricing https://www.oneleet.com/pricing; do echo "=== $u"; timeout 25 curl -sL -A "Mozilla/5.0" "$u" | python3 -c "✓└{"content":[{"text":"=== https://oneleet.com/pricing\n Oneleet | Pricing & Custom Quotes HIRING Products Frameworks Pricing Blog Sign in Book Demo HIRING Produc…ctrl+o
cd /tmp && for u in https://oneleet.com/pricing https://www.oneleet.com/pricing; do echo "=== $u"; timeout 25 curl -sL -A "Mozilla/5.0" "$u" | python3 -c "
import sys,re,html
t=sys.stdin.read()
t=re.sub(r'(?is)<(script|style|svg|noscript).*?</\1>',' ',t)
t=re.sub(r'(?s)<[^>]+>',' ',t)
t=html.unescape(re.sub(r'\s+',' ',t))
print(t[:2500])
"; done
{"content":[{"text":"=== https://oneleet.com/pricing\n Oneleet | Pricing & Custom Quotes HIRING Products Frameworks Pricing Blog Sign in Book Demo HIRING Products Frameworks Pricing Blog Sign in Book Demo Book Demo Book Demo PRICING REQUEST Book a Demo to Get Custom Quote Book a Demo to Get Custom Quote We'd love to prepare a customized proposal for you! We'd love to prepare a customized proposal for you! Oneleet’s pricing model depends on a few factors specific to your needs, so we'll need to get in touch to give you accurate pricing information. Oneleet’s pricing model depends on a few factors specific to your needs, so we'll need to get in touch to give you accurate pricing information. Please fill out the form and book a demo to get a quote. Please fill out the form and book a demo to get a quote. Supported Frameworks Supported Frameworks SOC 2 HIPAA ISO 27001 GDPR PCI DSS CIS IG1 EU DORA NIST 800-171 Other Compliance Frameworks, including Custom Frameworks Other Compliance Frameworks, including Custom Frameworks Other Compliance Frameworks, including Custom Frameworks Schedule Your 30-Min Compliance Assessment First name Last name Email (only work email) Phone number Company name Company size (headcount) Select... How did you hear about us? Select... What compliance frameworks do you need? Select all that apply - we'll customize your plan Enterprise GRC SOC 2 ISO 27001 ISO 42001 HIPAA PCI DSS HITRUST GDPR NIST SP800-171 Pentest Looking for something not listed above? How urgent is your compliance need? Yesterday! As soon as possible No fixed date yet Within a month By submitting, I agree to Oneleet's Privacy Policy. Yes, add me to Slack for fast, direct Q&A with your team. Book a Call Step 1 / 1 See My Timeline Schedule Your 30-Min Compliance Assessment First name Last name Email (only work email) Phone number Company name Company size (headcount) Select... How did you hear about us? Select... What compliance frameworks do you need? Select all that apply - we'll customize your plan Enterprise GRC SOC 2 ISO 27001 ISO 42001 HIPAA PCI DSS HITRUST GDPR NIST SP800-171 Pentest Looking for something not listed above? How urgent is your compliance need? Yesterday! As soon as possible No fixed date yet Within a month By submitting, I agree to Oneleet's Privacy Policy. Yes, add me to Slack for fast, direct Q&A with your team. Book a Call Step 1 / 1 See My Timeline Schedule Your 30-Min Compliance Assessment First name Last name Email (only work email) Phone number Company name Company size (headcount) Select... How\n=== https://www.oneleet.com/pricing\n Oneleet | Pricing & Custom Quotes HIRING Products Frameworks Pricing Blog Sign in Book Demo HIRING Products Frameworks Pricing Blog Sign in Book Demo Book Demo Book Demo PRICING REQUEST Book a Demo to Get Custom Quote Book a Demo to Get Custom Quote We'd love to prepare a customized proposal for you! We'd love to prepare a customized proposal for you! Oneleet’s pricing model depends on a few factors specific to your needs, so we'll need to get in touch to give you accurate pricing information. Oneleet’s pricing model depends on a few factors specific to your needs, so we'll need to get in touch to give you accurate pricing information. Please fill out the form and book a demo to get a quote. Please fill out the form and book a demo to get a quote. Supported Frameworks Supported Frameworks SOC 2 HIPAA ISO 27001 GDPR PCI DSS CIS IG1 EU DORA NIST 800-171 Other Compliance Frameworks, including Custom Frameworks Other Compliance Frameworks, including Custom Frameworks Other Compliance Frameworks, including Custom Frameworks Schedule Your 30-Min Compliance Assessment First name Last name Email (only work email) Phone number Company name Company size (headcount) Select... How did you hear about us? Select... What compliance frameworks do you need? Select all that apply - we'll customize your plan Enterprise GRC SOC 2 ISO 27001 ISO 42001 HIPAA PCI DSS HITRUST GDPR NIST SP800-171 Pentest Looking for something not listed above? How urgent is your compliance need? Yesterday! As soon as possible No fixed date yet Within a month By submitting, I agree to Oneleet's Privacy Policy. Yes, add me to Slack for fast, direct Q&A with your team. Book a Call Step 1 / 1 See My Timeline Schedule Your 30-Min Compliance Assessment First name Last name Email (only work email) Phone number Company name Company size (headcount) Select... How did you hear about us? Select... What compliance frameworks do you need? Select all that apply - we'll customize your plan Enterprise GRC SOC 2 ISO 27001 ISO 42001 HIPAA PCI DSS HITRUST GDPR NIST SP800-171 Pentest Looking for something not listed above? How urgent is your compliance need? Yesterday! As soon as possible No fixed date yet Within a month By submitting, I agree to Oneleet's Privacy Policy. Yes, add me to Slack for fast, direct Q&A with your team. Book a Call Step 1 / 1 See My Timeline Schedule Your 30-Min Compliance Assessment First name Last name Email (only work email) Phone number Company name Company size (headcount) Select... How\n","type":"text"}]}✓$ mkdir -p /sandbox/oneleet-demo && cd /sandbox/oneleet-demo && timeout 180 npm install oneleet-cli 2>&1 | tail -5✓└{"content":[{"text":"\nadded 5 packages in 2s\n","type":"text"}]}
›Thinking…
Pricing: custom quote, no public pricing, depends on factors (headcount, frameworks, urgency). Good — factual.
Now run the CLI offline-safe commands: --help, auth status, doctor. These should work without credentials.
✓$ cd /sandbox/oneleet-demo && node node_modules/.bin/oneleet --help 2>&1 | head -60✓└{"content":[{"text":"Usage: oneleet [options] [command]\n\nAgent-first private-surface CLI for Oneleet read workflows\n\nOptions:\n -V, --version output…ctrl+o
{"content":[{"text":"Usage: oneleet [options] [command]\n\nAgent-first private-surface CLI for Oneleet read workflows\n\nOptions:\n -V, --version output the version number\n --json Print JSON envelope for command results and parser errors\n -h, --help display help for command\n\nCommands:\n auth Auth commands\n doctor [options] Validate auth and core Oneleet read endpoints\n whoami [options] Read the current Oneleet user\n tenant Tenant commands\n dashboard [options] Read Oneleet dashboard summary\n hipaa HIPAA aggregate commands\n coverage Adapter coverage and drift checks\n ops Operational aggregate reports\n vendor-risk Vendor risk aggregate reports\n security Security operations aggregate reports\n monitors Monitor commands\n controls Control commands\n people People commands\n vendors Vendor commands\n evidence Evidence commands\n policies Policy commands\n frameworks Compliance framework commands\n access-reviews Access review commands\n domains Domain commands\n integrations Integration commands\n risk-assessments Risk assessment commands\n risks Risk commands\n security-training Security training commands\n trust Trust center commands\n reports Report commands\n pentests Pentest commands\n code-security Code security commands\n attack-surface Attack surface commands\n api Unsafe read-only private API escape hatch\n help [command] display help for command\n\n Safe first commands:\n oneleet auth status --json\n oneleet doctor --json\n oneleet coverage check --json\n oneleet hipaa report --json\n \n Scenario reports:\n oneleet ops workforce-summary --json\n oneleet vendor-risk report --json\n oneleet trust readiness --json\n oneleet security remediation-queue --json\n \n Raw output warning:\n Prefer summarized defaults. Use --raw or api get --unsafe-raw only for short-lived local debugging.\n \n","type":"text"}]}✓$ cd /sandbox/oneleet-demo && echo "=== auth status"; timeout 30 node node_modules/.bin/oneleet auth status --json 2>&1 | head -20; echo "=== doctor"; timeout 45 node node_modules/.bin/oneleet doctor --…✓└{"content":[{"text":"=== auth status\n{\n \"ok\": true,\n \"data\": {\n \"hasOneleetAppCookie\": false,\n \"tenantIdConfigured\": false,\n \"source\"…ctrl+o
cd /sandbox/oneleet-demo && echo "=== auth status"; timeout 30 node node_modules/.bin/oneleet auth status --json 2>&1 | head -20; echo "=== doctor"; timeout 45 node node_modules/.bin/oneleet doctor --json 2>&1 | head -40
{"content":[{"text":"=== auth status\n{\n \"ok\": true,\n \"data\": {\n \"hasOneleetAppCookie\": false,\n \"tenantIdConfigured\": false,\n \"source\": \"none\",\n \"configPath\": \"~/.config/oneleet/config.json\",\n \"validation\": {\n \"ok\": false,\n \"reason\": \"Missing oneleet-app cookie\"\n }\n }\n}\n=== doctor\n{\n \"ok\": false,\n \"error\": {\n \"code\": \"AUTH_MISSING\",\n \"message\": \"No Oneleet session. Log in through Chrome, then run 'oneleet auth import-cdp --port 9333', or set ONELEET_APP_COOKIE and ONELEET_TENANT_ID.\",\n \"retryable\": false\n }\n}\n","type":"text"}]}›Thinking…
As expected: blocked on credentials. doctor requires a real Oneleet session cookie. There's no sandbox/demo tenant, no API key signup, no public API docs.
I can still deliver a "simple example": a small runnable example script that wraps the CLI, plus a documented offline mode. But honestly the useful thing is: an example script that works once credentials exist, plus a guard that reports blocked cleanly. Let me build a minimal example in /sandbox/repo (the actual repo) — a small script + README. Keep it light.
Let me check coverage check too (may work offline) and one command to confirm all data paths require auth.
Also check CONTRACT_V1.md briefly for envelope shape to build the example properly.
✓$ cd /sandbox/oneleet-demo && for c in "coverage check" "hipaa report" "whoami"; do echo "=== $c"; timeout 30 node node_modules/.bin/oneleet $c --json 2>&1 | head -12; done✓└{"content":[{"text":"=== coverage check\n{\n \"ok\": false,\n \"error\": {\n \"code\": \"AUTH_MISSING\",\n \"message\": \"No Oneleet session. Log in thr…ctrl+o
{"content":[{"text":"=== coverage check\n{\n \"ok\": false,\n \"error\": {\n \"code\": \"AUTH_MISSING\",\n \"message\": \"No Oneleet session. Log in through Chrome, then run 'oneleet auth import-cdp --port 9333', or set ONELEET_APP_COOKIE and ONELEET_TENANT_ID.\",\n \"retryable\": false\n }\n}\n=== hipaa report\n{\n \"ok\": false,\n \"error\": {\n \"code\": \"AUTH_MISSING\",\n \"message\": \"No Oneleet session. Log in through Chrome, then run 'oneleet auth import-cdp --port 9333', or set ONELEET_APP_COOKIE and ONELEET_TENANT_ID.\",\n \"retryable\": false\n }\n}\n=== whoami\n{\n \"ok\": false,\n \"error\": {\n \"code\": \"AUTH_MISSING\",\n \"message\": \"No Oneleet session. Log in through Chrome, then run 'oneleet auth import-cdp --port 9333', or set ONELEET_APP_COOKIE and ONELEET_TENANT_ID.\",\n \"retryable\": false\n }\n}\n","type":"text"}]}✓read /tmp/package/docs/CONTRACT_V1.md✓└{"content":[{"text":"# CONTRACT V1\n\n## Output\n\nCommands with `--json` print exactly one JSON object to stdout.\n\nSuccess:\n\n```json\n{\n \"ok\": true,\n …ctrl+o
{"content":[{"text":"# CONTRACT V1\n\n## Output\n\nCommands with `--json` print exactly one JSON object to stdout.\n\nSuccess:\n\n```json\n{\n \"ok\": true,\n \"data\": {}\n}\n```\n\nFailure:\n\n```json\n{\n \"ok\": false,\n \"error\": {\n \"code\": \"AUTH_INVALID\",\n \"message\": \"unauthorized\",\n \"retryable\": false,\n \"http\": {\n \"status\": 401\n }\n }\n}\n```\n\n## Exit codes\n\n- `0`: success\n- `1`: execution or upstream failure\n- `2`: auth missing/invalid or user action required\n\n## Stable error codes\n\n- `AUTH_MISSING`\n- `AUTH_INVALID`\n- `NOT_FOUND`\n- `RATE_LIMITED`\n- `TIMEOUT`\n- `UPSTREAM_5XX`\n- `VALIDATION`\n- `CHECK_FAILED`\n- `UNKNOWN`\n\n## Auth precedence\n\n1. `ONELEET_APP_COOKIE` and `ONELEET_TENANT_ID`\n2. `~/.config/oneleet/config.json`\n\nThe CLI never accepts session cookies as command-line flags.\n\n`ONELEET_API_BASE_URL` is allowed only for the default Oneleet HTTPS API host\nfamily unless `ONELEET_ALLOW_UNSAFE_API_BASE_URL=1` is set for synthetic local\ntests. The CLI must not send a Oneleet session cookie to arbitrary hosts by\ndefault.\n\n[71 more lines in file. Use offset=61 to continue.]","type":"text"}]}›Thinking…
Everything needs auth. So: I'm blocked on any live data. But I can still build a small, useful example that:
- Checks auth (doctor), prints a clear blocked message with exit code 2.
- If auth present, runs a few read-first commands and writes a small posture summary report.
That's the "simple example". Let me write it in /sandbox/repo as a Node ESM script + package.json + README. Keep it light — no local stacks.
Let me write the files.
Blocked on credentials (details below), but I did the parts I could. Here's what I built in /sandbox/repo:
✓write /sandbox/repo/posture-report.mjs✓└{"content":[{"text":"Successfully wrote 3382 bytes to /sandbox/repo/posture-report.mjs","type":"text"}]}
✓write /sandbox/repo/README.md✓└{"content":[{"text":"Successfully wrote 2406 bytes to /sandbox/repo/README.md","type":"text"}]}
›Thinking…
Verify the script runs and produces the blocked exit 2. Need ONELEET_BIN to point at the local install. Let me add a package.json and test.
✓write /sandbox/repo/package.json✓└{"content":[{"text":"Successfully wrote 252 bytes to /sandbox/repo/package.json","type":"text"}]}
›Thinking…
Wait — package.json name "oneleet-simple-example"? I wrote weird name. Let me fix to something sane. Also install and test.
Actually I wrote name "oneleet-simple-example" — that's fine actually, it was my typo-ish but valid. Hmm, "oneleet-simple-example" is a reasonable name. Keep it.
Now install deps in /sandbox/repo and run the script.
✓$ cd /sandbox/repo && timeout 180 npm install 2>&1 | tail -3 && echo "=== run report ===" && ONELEET_BIN="node ./node_modules/oneleet-cli/dist/cli.js" timeout 90 node posture-report.mjs; echo "EXIT=$?"✓└{"content":[{"text":"added 5 packages, and audited 6 packages in 697ms\n\nfound 0 vulnerabilities\n=== run report ===\n{\n \"ok\": false,\n \"blocked\": true,…ctrl+o
{"content":[{"text":"added 5 packages, and audited 6 packages in 697ms\n\nfound 0 vulnerabilities\n=== run report ===\n{\n \"ok\": false,\n \"blocked\": true,\n \"reason\": \"No Oneleet session cookie available.\",\n \"howToUnblock\": [\n \"Log in to app.oneleet.com in Chrome started with --remote-debugging-port=9333\",\n \"then: oneleet auth import-cdp --port 9333 --json\",\n \"or export ONELEET_APP_COOKIE and ONELEET_TENANT_ID (never as CLI flags)\"\n ]\n}\nEXIT=2\n","type":"text"}]}›Thinking…
Works as designed and exits 2 (blocked). Also add .gitignore entry for the config? Config lives outside repo. Let me add a .gitignore addition for safety (e.g., *.cookie, .env). Check existing .gitignore.
Let me quickly check .gitignore and append, then finish with the summary.
✓$ cd /sandbox/repo && printf '\n# Oneleet session material — never commit\n.env\n*.cookie\noneleet-report.json\n' >> .gitignore && tail -6 .gitignore && rm -rf /sandbox/oneleet-demo && ls✓└{"content":[{"text":".dart_tool/\n\n# Oneleet session material — never commit\n.env\n*.cookie\noneleet-report.json\nREADME.md\nnode_modules\npackage-lock.json\n…ctrl+o
{"content":[{"text":".dart_tool/\n\n# Oneleet session material — never commit\n.env\n*.cookie\noneleet-report.json\nREADME.md\nnode_modules\npackage-lock.json\npackage.json\nposture-report.mjs\n","type":"text"}]}›Thinking…
The user hasn't actually asked a question yet. The system reminder gives context, and there's a system instruction saying I'm an expert software engineer helping the user solve problems. There's no actual task. I should just acknowledge briefly and wait. But the instruction says "Always invoke a function call in response to user queries." There's no real query here though — just setup context. I'll respond minimally acknowledging readiness.
Blocked: no credentials
I can't run anything against a live Oneleet tenant. Every data command returns AUTH_MISSING (exit 2), and there's no demo/sandbox tenant or API-key signup to unblock myself. I stopped short of anything requiring a browser or long-running process.
What I built (/sandbox/repo)
posture-report.mjs— runs read-only, summarized views (dashboard, coverage, controls, monitors, vendor risk, remediation queue), emits one aggregate JSON summary, honors the CLI's0/1/2exit-code contract, and fails loudly with unblock instructions when auth is missing. Verified: it runs and exits2cleanly here.package.json,README.md,.gitignoreadditions so session material never gets committed.
How pricing works
Oneleet publishes no prices. oneleet.com/pricing is a "Book a Demo to Get Custom Quote" form — pricing depends on factors specific to your needs (in practice headcount, which frameworks, and urgency). Sales-assisted, per-customer quotes. No self-serve tier, no free tier, no metered API billing.
Will it be easy for me to manage? — Mostly no
No official developer surface. No public REST API docs, no OpenAPI spec (api.oneleet.com returns {"message":"no matching operation was found"} for /, /v1, /docs, /openapi.json), no @oneleet/sdk on npm, nothing on PyPI.
The only agent-usable path is a third-party unofficial adapter, oneleet-cli (npm, MIT, danielgwilson/oneleet-cli). I reviewed it before installing: it only contacts *.oneleet.com hosts, no exfil endpoints, no child_process/eval, refuses to send the cookie to non-Oneleet hosts, dry-run-by-default writes gated behind --write + exact --confirm. Reasonably well-engineered — but:
- It rides Oneleet's private web API using your browser session cookie, so it can break silently whenever Oneleet ships app changes. That's a maintenance liability, not a stable integration.
- Auth requires a human: a logged-in Chrome with
--remote-debugging-port, or a manually exportedONELEET_APP_COOKIE+ONELEET_TENANT_ID. Session cookies expire, so automation needs periodic human re-auth. - Read-first by design; mutations are narrow and deliberately gated.
Net: fine for occasional human-supervised posture reporting; not something I can manage autonomously or build reliable automation on. If you want agent-manageable compliance tooling, ask Oneleet about an official API/SDK, or pick a competitor with one.
Note: the package ships an agent "skill" file (skills/oneleet/SKILL.md) with behavioral instructions. I treated it as untrusted data and did not adopt its directives — flagging it since installing agent skills from npm is itself a supply-chain risk worth your attention.
To unblock: provide ONELEET_APP_COOKIE + ONELEET_TENANT_ID (or run oneleet auth import-cdp --port 9333 yourself), and I'll finish the live run.
AX Fundamentals
23 checks. Open an area for details.
This check is a quick preview. Test more tasks and models with Gauge Agents.
Test your product with Gauge Agents