{"_id":"@brave/bravebot","_rev":"6-fc233ab11a44108f496ce9c9eff3097e","name":"@brave/bravebot","dist-tags":{"latest":"0.12.0"},"versions":{"0.4.0":{"name":"@brave/bravebot","version":"0.4.0","license":"MPL-2.0","_id":"@brave/bravebot@0.4.0","maintainers":[{"name":"bcrypt","email":"yan@mit.edu"},{"name":"brianbondy","email":"bbondy@gmail.com"},{"name":"brave.com","email":"devops@brave.com"},{"name":"darkdh","email":"darkdh@gmail.com"},{"name":"mrose17","email":"mrose17@gmail.com"},{"name":"petemill","email":"miller.pete+npm@gmail.com"},{"name":"claucece9","email":"sceli@brave.com"},{"name":"pes10k","email":"pes@peteresnyder.com"},{"name":"jonathansampson","email":"jjdsampson@gmail.com"},{"name":"antonok","email":"alazarev@brave.com"}],"homepage":"https://github.com/brave-experiments/brave-bot#readme","bugs":{"url":"https://github.com/brave-experiments/brave-bot/issues"},"bin":{"bravebot":"npm/bin/bravebot.js"},"dist":{"shasum":"b1b9c0314db4bbe8db2a3e7ff4e9c9a139326d79","tarball":"https://registry.npmjs.org/@brave/bravebot/-/bravebot-0.4.0.tgz","fileCount":60,"integrity":"sha512-ziWaxX81Vqi81WAyP3vKfKPP+8bhSP89A0TRhGAzIBhRG7kFeTesaYWNcTopxmUxSpDoBdx0nHEi7HtmCkxQTg==","signatures":[{"sig":"MEYCIQC4Wqkd1zytIGPVMITiy5zYhNIHyHvROg2CFQZ7q7b/BgIhAJkE1BjAF6d0lqh7DYJQjwOZiWN5kCfj8zfVBoBr7KTD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":628206},"engines":{"node":">=18"},"gitHead":"6f7dc5f3f7834da7d96a2bb29cc3b75b7e9c2ee1","scripts":{"postinstall":"node npm/scripts/postinstall.js","lint:lockfile":"lockfile-lint --path package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity"},"_npmUser":{"name":"brave.com","email":"devops@brave.com"},"repository":{"url":"git+https://github.com/brave-experiments/brave-bot.git","type":"git"},"_npmVersion":"11.13.0","description":"A general-purpose agent with structural resistance to indirect prompt injection","directories":{},"_nodeVersion":"24.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lockfile-lint":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/bravebot_0.4.0_1788887752412_0.5844014422481625","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@brave/bravebot","version":"0.5.0","license":"MPL-2.0","_id":"@brave/bravebot@0.5.0","maintainers":[{"name":"bcrypt","email":"yan@mit.edu"},{"name":"brianbondy","email":"bbondy@gmail.com"},{"name":"brave.com","email":"devops@brave.com"},{"name":"darkdh","email":"darkdh@gmail.com"},{"name":"mrose17","email":"mrose17@gmail.com"},{"name":"petemill","email":"miller.pete+npm@gmail.com"},{"name":"claucece9","email":"sceli@brave.com"},{"name":"pes10k","email":"pes@peteresnyder.com"},{"name":"jonathansampson","email":"jjdsampson@gmail.com"},{"name":"antonok","email":"alazarev@brave.com"}],"homepage":"https://github.com/brave-experiments/brave-bot#readme","bugs":{"url":"https://github.com/brave-experiments/brave-bot/issues"},"bin":{"bravebot":"npm/bin/bravebot.js"},"dist":{"shasum":"56a00d8214d291314e4ade452495fe82ac2617a3","tarball":"https://registry.npmjs.org/@brave/bravebot/-/bravebot-0.5.0.tgz","fileCount":62,"integrity":"sha512-l0g1k425Bgzciu8dLBc2AJ7JXYiJGwn765Xh2cl2fb1Se6mrziX3d8K2lvFoNOdOTW5TuO4rYiqTbes14u0Nbw==","signatures":[{"sig":"MEUCIAaAJq7u+SEi6Ui5k4lMWS7MK7rDTbi3W7RxfRNrho5xAiEAvkqnRnyu0SH4EXuXNsRsI9W4BBLdw4zVSw9IOxUgS/Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brave%2fbravebot@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":705897},"engines":{"node":">=18"},"gitHead":"7d07a5a629504626af3c3a001311ff185acd11e9","scripts":{"postinstall":"node npm/scripts/postinstall.js","lint:lockfile":"lockfile-lint --path package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9337b8fb-16d1-4dfe-a1e2-ccdd00a440ae"}},"repository":{"url":"git+https://github.com/brave-experiments/brave-bot.git","type":"git"},"_npmVersion":"11.19.0","description":"A general-purpose agent with structural resistance to indirect prompt injection","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lockfile-lint":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/bravebot_0.5.0_1788902317402_0.7100346051976931","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@brave/bravebot","version":"0.9.0","license":"MPL-2.0","_id":"@brave/bravebot@0.9.0","maintainers":[{"name":"bcrypt","email":"yan@mit.edu"},{"name":"brianbondy","email":"bbondy@gmail.com"},{"name":"brave.com","email":"devops@brave.com"},{"name":"darkdh","email":"darkdh@gmail.com"},{"name":"mrose17","email":"mrose17@gmail.com"},{"name":"petemill","email":"miller.pete+npm@gmail.com"},{"name":"claucece9","email":"sceli@brave.com"},{"name":"pes10k","email":"pes@peteresnyder.com"},{"name":"jonathansampson","email":"jjdsampson@gmail.com"},{"name":"antonok","email":"alazarev@brave.com"}],"homepage":"https://github.com/brave/bravebot#readme","bugs":{"url":"https://github.com/brave/bravebot/issues"},"bin":{"bravebot":"npm/bin/bravebot.js"},"dist":{"shasum":"cd1d19875c9bffe0afbd67a1c4fae809f21bccf0","tarball":"https://registry.npmjs.org/@brave/bravebot/-/bravebot-0.9.0.tgz","fileCount":87,"integrity":"sha512-nlwB4b2jXT4GnWlFUIFgQc/tMwNuyl1h9SOxiZ2eO8LQdpBbFsZkNp9h2U8AHIgcx4dea6CXBlvnv8NxFNHK2Q==","signatures":[{"sig":"MEUCIQC7kJTguzjt0Mbydo+xIfBZbRsVonDAzer384nzt67e/AIgfS/fb6iT3uutt2KWSgjmADIWf3YH0j9m/tKXt8qkK6k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCHntz/bhOJn8V/YVoL2OR+Giowjt8ZGm0qHwplfK5SUgIgFrVzuMRFe2KC+8Lm8n0yVczNeSBl1sjfScgTVqvPYJw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brave%2fbravebot@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1238218},"engines":{"node":">=18"},"gitHead":"c23b2ed525cbc732adeecd7dd0e45fbb0f05985f","scripts":{"postinstall":"node npm/scripts/postinstall.js","lint:lockfile":"lockfile-lint --path package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f2a7d3d-df0d-48fc-a53c-9a876e88b889"}},"repository":{"url":"git+https://github.com/brave/bravebot.git","type":"git"},"_npmVersion":"11.19.0","description":"A general-purpose agent with structural resistance to indirect prompt injection","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lockfile-lint":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/bravebot_0.9.0_1789666099509_0.7646530737883932","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@brave/bravebot","version":"0.10.0","license":"MPL-2.0","_id":"@brave/bravebot@0.10.0","maintainers":[{"name":"bcrypt","email":"yan@mit.edu"},{"name":"brianbondy","email":"bbondy@gmail.com"},{"name":"brave.com","email":"devops@brave.com"},{"name":"darkdh","email":"darkdh@gmail.com"},{"name":"mrose17","email":"mrose17@gmail.com"},{"name":"petemill","email":"miller.pete+npm@gmail.com"},{"name":"claucece9","email":"sceli@brave.com"},{"name":"pes10k","email":"pes@peteresnyder.com"},{"name":"jonathansampson","email":"jjdsampson@gmail.com"},{"name":"antonok","email":"alazarev@brave.com"}],"homepage":"https://github.com/brave/bravebot#readme","bugs":{"url":"https://github.com/brave/bravebot/issues"},"bin":{"bravebot":"npm/bin/bravebot.js"},"dist":{"shasum":"924d82e01d12636b20f78885cf6992cd3abdab61","tarball":"https://registry.npmjs.org/@brave/bravebot/-/bravebot-0.10.0.tgz","fileCount":92,"integrity":"sha512-P7+iP5PJCfJQlZKUM0jnFIdqlLHEdw3eeHRWnHWigjEy4zfOY0IW7vOwVReYfAe+gMnVivikK58mTcueY5tXlQ==","signatures":[{"sig":"MEUCIFz+Lj2p4bcPZYTIzh4CsCmkJde5zyMV9C61p4onp3eoAiEA/D0VNeUvyNJhihJdN+YOVgM5wvTaSUy6AyajQeXsmgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIC7yLgmQniyoxkd/vKyzaygV31gGuT/4oD80rhH8lqbCAiEAhmFiP/B3civXr4PP0l0AXWCAzwPA0HIKAsaJ2gY+OhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brave%2fbravebot@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1712143},"engines":{"node":">=18"},"gitHead":"c93fce2494921ccf97d7dede9972cf20ec06749e","scripts":{"postinstall":"node npm/scripts/postinstall.js","lint:lockfile":"lockfile-lint --path package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity","lint:lockfile:ui":"lockfile-lint --path ui/package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity","lint:lockfile:website":"lockfile-lint --path docs/website/package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity --allowed-package-name-aliases image-size:image-size-next react-helmet-async:@slorber/react-helmet-async react-loadable:@docusaurus/react-loadable"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f2a7d3d-df0d-48fc-a53c-9a876e88b889"}},"repository":{"url":"git+https://github.com/brave/bravebot.git","type":"git"},"_npmVersion":"11.19.0","description":"A general-purpose agent with structural resistance to indirect prompt injection","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lockfile-lint":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/bravebot_0.10.0_1790196298522_0.8649824537209811","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@brave/bravebot","version":"0.11.0","license":"MPL-2.0","_id":"@brave/bravebot@0.11.0","maintainers":[{"name":"bcrypt","email":"yan@mit.edu"},{"name":"brianbondy","email":"bbondy@gmail.com"},{"name":"brave.com","email":"devops@brave.com"},{"name":"darkdh","email":"darkdh@gmail.com"},{"name":"mrose17","email":"mrose17@gmail.com"},{"name":"petemill","email":"miller.pete+npm@gmail.com"},{"name":"claucece9","email":"sceli@brave.com"},{"name":"pes10k","email":"pes@peteresnyder.com"},{"name":"jonathansampson","email":"jjdsampson@gmail.com"},{"name":"antonok","email":"alazarev@brave.com"}],"homepage":"https://github.com/brave/bravebot#readme","bugs":{"url":"https://github.com/brave/bravebot/issues"},"bin":{"bravebot":"npm/bin/bravebot.js"},"dist":{"shasum":"b8c86875bdc2a3fa6f111a1ed61425e58fb855d9","tarball":"https://registry.npmjs.org/@brave/bravebot/-/bravebot-0.11.0.tgz","fileCount":96,"integrity":"sha512-w5Kilc/NgZ+i7r20DPY3CarOAx9cyF0g+B4CRfg8lyJEERPfkJS9cGhrj93Wj9BJJ1nKAzSqIb6T2Pl0peNu+Q==","signatures":[{"sig":"MEUCIGBzxDW+rVqwI+au9MG0q1/jxmIcLJbeuKAitKjwfcD4AiEAnHWhDXnyXTBO5nRNe6Lb8+i6hrxxaGW9x5NuEHshKis=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGDd6ryXEiVihZwNjpQURh05pedH3PrqvNf0qad019SpAiB6mboctOri5/+EFTvbR6gRh4147IOILlGNU5yj6HM7fQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brave%2fbravebot@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2090190},"engines":{"node":">=18"},"gitHead":"0134bddf8e1b90d13aa220dfdd19a21951a2ce5e","scripts":{"postinstall":"node npm/scripts/postinstall.js","lint:lockfile":"lockfile-lint --path package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity","lint:lockfile:ui":"lockfile-lint --path ui/package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity","lint:lockfile:website":"lockfile-lint --path docs/website/package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity --allowed-package-name-aliases image-size:image-size-next react-helmet-async:@slorber/react-helmet-async react-loadable:@docusaurus/react-loadable"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5f2a7d3d-df0d-48fc-a53c-9a876e88b889"}},"repository":{"url":"git+https://github.com/brave/bravebot.git","type":"git"},"_npmVersion":"11.19.0","description":"A general-purpose agent with structural resistance to indirect prompt injection","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lockfile-lint":"^5.0.1"},"_npmOperationalInternal":{"tmp":"tmp/bravebot_0.11.0_1790548558022_0.42502291825905436","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"_id":"@brave/bravebot@0.12.0","bin":{"bravebot":"npm/bin/bravebot.js"},"bugs":{"url":"https://github.com/brave/bravebot/issues"},"dist":{"shasum":"ae38c825b7c498bd7a46878a8bb07690faff042c","tarball":"https://registry.npmjs.org/@brave/bravebot/-/bravebot-0.12.0.tgz","fileCount":97,"integrity":"sha512-RClM1fqgdoTqrm37vL2eXZMcQinuJmcfQ6tLz5cOUKsO6/qTPMdaEQg5qwfCwNWnLbidd3SPRFbC9sU7Y9mR/Q==","signatures":[{"sig":"MEUCIQDlFv584CfWRlIdZDbzuGfz/MxEiknGzZPDREQ3ag5BQQIgQXumeVU1h6AQ2LhCE9/riC0ORna88WLLWwptzoa6lYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICPDDqkjogl1IToI+D940k4/q/zN9yTHagUlVB4XmcmYAiBqck7EsDAmJCAslXGyyR1VIOCUkQWrnPYICtkvQ2yPLw=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@brave%2fbravebot@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2328380},"name":"@brave/bravebot","engines":{"node":">=18"},"gitHead":"b786b964d9b8b64198105ac8fbde65902e679dc2","license":"MPL-2.0","scripts":{"postinstall":"node npm/scripts/postinstall.js","lint:lockfile":"lockfile-lint --path package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity","lint:lockfile:ui":"lockfile-lint --path ui/package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity","lint:lockfile:website":"lockfile-lint --path docs/website/package-lock.json --type npm --allowed-hosts npm --validate-https --validate-package-names --validate-integrity --allowed-package-name-aliases image-size:image-size-next react-helmet-async:@slorber/react-helmet-async react-loadable:@docusaurus/react-loadable"},"version":"0.12.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"5f2a7d3d-df0d-48fc-a53c-9a876e88b889"}},"homepage":"https://github.com/brave/bravebot#readme","repository":{"url":"git+https://github.com/brave/bravebot.git","type":"git"},"_npmVersion":"11.19.0","description":"A general-purpose agent with structural resistance to indirect prompt injection","directories":{},"maintainers":[{"name":"bcrypt","email":"yan@mit.edu"},{"name":"brianbondy","email":"bbondy@gmail.com"},{"name":"brave.com","email":"devops@brave.com"},{"name":"darkdh","email":"darkdh@gmail.com"},{"name":"mrose17","email":"mrose17@gmail.com"},{"name":"petemill","email":"miller.pete+npm@gmail.com"},{"name":"claucece9","email":"sceli@brave.com"},{"name":"pes10k","email":"pes@peteresnyder.com"},{"name":"jonathansampson","email":"jjdsampson@gmail.com"},{"name":"antonok","email":"alazarev@brave.com"}],"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"lockfile-lint":"^5.0.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bravebot_0.12.0_1790806646935_0.9955924298426533"}}},"time":{"created":"2026-09-08T17:15:52.289Z","modified":"2026-09-30T22:17:27.356Z","0.4.0":"2026-09-08T17:15:52.545Z","0.5.0":"2026-09-08T21:18:37.594Z","0.9.0":"2026-09-17T17:28:19.611Z","0.10.0":"2026-09-23T20:44:58.632Z","0.11.0":"2026-09-27T22:35:58.126Z","0.12.0":"2026-09-30T22:17:27.030Z"},"bugs":{"url":"https://github.com/brave/bravebot/issues"},"license":"MPL-2.0","homepage":"https://github.com/brave/bravebot#readme","repository":{"url":"git+https://github.com/brave/bravebot.git","type":"git"},"description":"A general-purpose agent with structural resistance to indirect prompt injection","maintainers":[{"name":"bcrypt","email":"yan@mit.edu"},{"name":"brianbondy","email":"bbondy@gmail.com"},{"name":"brave.com","email":"devops@brave.com"},{"name":"darkdh","email":"darkdh@gmail.com"},{"name":"mrose17","email":"mrose17@gmail.com"},{"name":"petemill","email":"miller.pete+npm@gmail.com"},{"name":"claucece9","email":"sceli@brave.com"},{"name":"pes10k","email":"pes@peteresnyder.com"},{"name":"jonathansampson","email":"jjdsampson@gmail.com"},{"name":"antonok","email":"alazarev@brave.com"}],"readme":"# bravebot\n\n> **Not a released or supported Brave product.** Brave does not release or support bravebot at this\n> time. It is early, and it is being developed in the open. Binaries, the install script, and the\n> npm package are published for early testing and feedback only. Brave expects to release and\n> support it as a product in the future.\n\nBrave Bot is a general-purpose agent, meant as a drop-in replacement for Claude Code, Codex and\nOpenCode. Brave has always shipped user agents, and this one is the user's agent in both senses:\n\n- Structural resistance to indirect prompt injection: a web page cannot redirect an agent working\n  on your behalf.\n- As few tokens as possible.\n- As fast as it can be.\n- Nothing hidden: what it read and what it decided are on the screen.\n- Developed completely in the open.\n- No lock-in: other providers and models, settings on your own machine.\n- The power of a shell without the risk: command lines are compiled into the trust model rather than handed to one.\n\n## Getting started\n\n```sh\nnpm install -g @brave/bravebot\n```\n\nOr on macOS and Linux, without npm:\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/brave/bravebot/main/install.sh | sh\n```\n\nThat puts the binary in `/usr/local/bin`, and takes `INSTALL_DIR` for somewhere else:\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/brave/bravebot/main/install.sh | INSTALL_DIR=\"$HOME/.local/bin\" sh\n```\n\nEither way, run `bravebot` in a repository afterwards. Both installers verify the release\nchecksum, and a session started on an old version says so and gives the line that updates it. See\n[docs/getting-started.md](docs/getting-started.md) for installing, running, and what it asks you.\n\nThe documentation site at\n[brave.github.io/bravebot](https://brave.github.io/bravebot/)\ncovers the same ground for somebody using bravebot rather than working on it, and is maintained\nin-tree under [docs/website](docs/website).\n\n## How it works\n\nBefore data is processed it is labelled as trusted or untrusted and as public or private.\nAn example of untrusted content is text from a web page. An example of private data is a project's secrets.\nBrave Bot can work with untrusted and private content, but it never lets that content into its planner's context.\nProcessors are used to work on immutable untrusted content. A processor is a sub-agent with no tools, no memory and no conversation. It can read untrusted content and rewrite it, but nothing it produces can direct what happens next.\nOne or more labelled data slots are passed into a processor, and it outputs at most one new immutable data slot.\nThe planner is never influenced by untrusted context.\n\nTraces of the gates running are in [docs/specs/](docs/specs/README.md).\n\n## Specs\n\nBehaviour is specified clause by clause, and each clause names the tests that pin it. See\n[docs/specs/](docs/specs/README.md).\n\n## Data collection, usage, and retention\n\nWe do not use your data and we do not store it. Prompts and used file contents are sent to Brave's\nendpoint to produce a reply and are discarded once it has been produced. Nothing is retained and\nnothing is used for training. Local settings are stored in `~/.bravebot` on your own machine.\n\n`bravebot --incognito` runs a session that adds nothing to `~/.bravebot`: no prompt history, no\nsession record, no audit trail, and no change to the model or theme you have chosen. It still reads\nall of that, so the session is the one you configured rather than a fresh install. It edits your\nproject as usual, since that is the work rather than a trace of it. See\n[docs/specs/incognito.md](docs/specs/incognito.md) for what it covers and what it does not.\n\n## Reporting a Vulnerability\n\nSee [https://hackerone.com/brave](https://hackerone.com/brave) for details.\n\n## Development\n\n`cargo build` and `make check`, which runs fmt, clippy and the tests. See\n[docs/development/](docs/development/README.md) for checks, commits, cross-builds, configuration\nand releasing, and [docs/best_practices.md](docs/best_practices.md) for what a pull request is\nreviewed against.\n\nFor the `.envrc` configuration, message bbondy.\n\n## Credit\n\n[docs/credit.md](docs/credit.md).\n\n## License\n\n[MPL-2.0](LICENSE)\n","readmeFilename":"README.md"}