PageSourceSearch

https://docs.controlzero.ai/assets/js/4335d792.8826f01e.js

js controlzero.ai collected 2026-10-05 13:56:02 UTC 21,088 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkcontrolzero_docs||=[]).push([[8006],{79379(e,n,i){i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"guides/shadow-ai-scout","title":"Shadow AI Scout","description":"Supported modes: Hosted","source":"@site/docs/guides/shadow-ai-scout.md","sourceDirName":"guides","slug":"/guides/shadow-ai-scout","permalink":"/docs/guides/shadow-ai-scout","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":10,"frontMatter":{"sidebar_position":10,"title":"Shadow AI Scout"}}');var o=i(74848),t=i(28453);const r={sidebar_position:10,title:"Shadow AI Scout"},l="Shadow AI Scout",c={},d=[{value:"Installation",id:"installation",level:2},{value:"Planned platforms",id:"planned-platforms",level:3},{value:"What the installer will do",id:"what-the-installer-will-do",level:3},{value:"Configuration",id:"configuration",level:2},{value:"Configuration options",id:"configuration-options",level:3},{value:"What Scout Detects",id:"what-scout-detects",level:2},{value:"AI API Traffic",id:"ai-api-traffic",level:3},{value:"AI Applications",id:"ai-applications",level:3},{value:"API Key Exposure",id:"api-key-exposure",level:3},{value:"Enforcement Mode",id:"enforcement-mode",level:2},{value:"DNS-Level Blocking",id:"dns-level-blocking",level:3},{value:"Firewall Rules",id:"firewall-rules",level:3},{value:"Combined Mode",id:"combined-mode",level:3},{value:"Defining Allowed Services",id:"defining-allowed-services",level:3},{value:"Privacy Guarantees",id:"privacy-guarantees",level:2},{value:"Managing Scout",id:"managing-scout",level:2},{value:"Check status",id:"check-status",level:3},{value:"Run a manual scan",id:"run-a-manual-scan",level:3},{value:"View local findings",id:"view-local-findings",level:3},{value:"Update Scout",id:"update-scout",level:3},{value:"Uninstall",id:"uninstall",level:3},{value:"Troubleshooting",id:"troubleshooting",level:2},{value:"Scout is not reporting findings",id:"scout-is-not-reporting-findings",level:3},{value:"Scout cannot connect to Control Zero",id:"scout-cannot-connect-to-control-zero",level:3},{value:"Enforcement mode is not blocking traffic",id:"enforcement-mode-is-not-blocking-traffic",level:3},{value:"High resource usage",id:"high-resource-usage",level:3},{value:"Next Steps",id:"next-steps",level:2}];function a(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components},{MaturityBadge:i}=n;return i||function(e,n){throw new Error("Expected "+(n?"component":"object")+" `"+e+"` to be defined: you likely forgot to import, pass, or provide it.")}("MaturityBadge",!0),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.header,{children:(0,o.jsx)(n.h1,{id:"shadow-ai-scout",children:"Shadow AI Scout"})}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Supported modes:"})," ",(0,o.jsx)("span",{class:"mode-pill hosted",children:"Hosted"}),"\n",(0,o.jsx)(n.strong,{children:"Available in:"})," ",(0,o.jsx)("span",{class:"tier-pill teams",children:"Teams"})," ",(0,o.jsx)(i,{tier:"COMING SOON"})," -- ",(0,o.jsx)(n.a,{href:"../concepts/pricing",children:"View pricing"})]}),"\n",(0,o.jsxs)(n.admonition,{title:"Not yet available",type:"danger",children:[(0,o.jsxs)(n.p,{children:["Scout is ",(0,o.jsx)(n.strong,{children:"not released"}),". There is no installer to download and the Scout\npages in the dashboard are not reachable. This page describes intended\nbehaviour so you can plan for it -- nothing on it works today."]}),(0,o.jsxs)(n.p,{children:["Do not schedule work that depends on Scout. For AI usage you can govern ",(0,o.jsx)(n.strong,{children:"now"}),",\nsee the ",(0,o.jsx)(n.a,{href:"/docs/guides/gateway",children:"gateway"}),", ",(0,o.jsx)(n.a,{href:"/docs/guides/coding-assistant-hooks",children:"coding assistant hooks"}),",\nor the ",(0,o.jsx)(n.a,{href:"/docs/guides/browser-extension",children:"browser extension"}),"."]})]}),"\n",(0,o.jsxs)(n.p,{children:["Scout is a lightweight agent that will discover unauthorized AI usage across your infrastru
1cture. It is not a SIEM, not an antivirus, and not a network monitor. It is purpose-built to answer one question: ",(0,o.jsx)(n.strong,{children:"what AI is running in your environment?"})]}),"\n",(0,o.jsx)(n.p,{children:"Scout will detect AI API traffic, locally installed AI applications, and exposed AI credentials. It will report findings to your Control Zero dashboard without reading file contents, capturing prompts, or transmitting credentials."}),"\n",(0,o.jsx)(n.admonition,{title:"Scope",type:"note",children:(0,o.jsxs)(n.p,{children:["Scout discovers and reports AI usage; enforcement comes from the\n",(0,o.jsx)(n.a,{href:"/docs/guides/gateway",children:"gateway"}),", ",(0,o.jsx)(n.a,{href:"/docs/guides/coding-assistant-hooks",children:"coding hooks"}),", or\n",(0,o.jsx)(n.a,{href:"/docs/guides/browser-extension",children:"browser extension"}),"."]})}),"\n",(0,o.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"There is no installer yet."})," Scout has not been released, so there is nothing\nto download and no command to run."]}),"\n",(0,o.jsx)(n.p,{children:"When Scout ships, this section will carry the real install command and the\nplatform matrix below will describe what is actually built."}),"\n",(0,o.jsx)(n.h3,{id:"planned-platforms",children:"Planned platforms"}),"\n",(0,o.jsxs)(n.table,{children:[(0,o.jsx)(n.thead,{children:(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.th,{children:"Platform"}),(0,o.jsx)(n.th,{children:"Architecture"})]})}),(0,o.jsxs)(n.tbody,{children:[(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"Linux"}),(0,o.jsx)(n.td,{children:"x86_64"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"Linux"}),(0,o.jsx)(n.td,{children:"ARM64"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"macOS"}),(0,o.jsx)(n.td,{children:"x86_64"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"macOS"}),(0,o.jsx)(n.td,{children:"ARM64"})]})]})]}),"\n",(0,o.jsx)(n.h3,{id:"what-the-installer-will-do",children:"What the installer will do"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:"Download the Scout binary for your platform."}),"\n",(0,o.jsx)(n.li,{children:"Verify the binary checksum."}),"\n",(0,o.jsx)(n.li,{children:"Register the agent with your Control Zero account."}),"\n",(0,o.jsx)(n.li,{children:"Install Scout as a background service (systemd on Linux, launchd on macOS)."}),"\n",(0,o.jsx)(n.li,{children:"Start the first scan."}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"configuration",children:"Configuration"}),"\n",(0,o.jsxs)(n.p,{children:["Scout will store its configuration at ",(0,o.jsx)(n.code,{children:"~/.config/cz-scout/settings.toml"}),". You can edit this file to customize scan behavior."]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-toml",children:'# Control Zero API key (set during installation)\napi_key = "cz_live_your_key_here"\n\n# How often to run scans (in seconds). Default: 300 (5 minutes).\nscan_interval = 300\n\n# Which scan modules to enable.\n[modules]\nai_traffic = true        # Detect outbound AI API connections\nai_applications = true   # Detect locally installed AI tools\napi_key_exposure = true  # Detect leaked AI credentials in config files\n\n# Directories to scan for API key exposure.\n# Scout checks file names and metadata only. It does not read file contents.\n[scan_paths]\ninclude = ["~", "/etc", "/opt"]\nexclude = ["~/Library", "~/.cache", "/opt/homebrew/Cellar"]\n\n# Enforcement settings (disabled by default).\n[enforcement]\nenabled = false\nmode = "dns"             # Options: "dns", "firewall", "both"\n'})}),"\n",(0,o.jsx)(n.h3,{id:"configuration-options",children:"Configuration options"}),"\n",(0,o.jsxs)(n.table,{children:[(0,o.jsx)(n.thead,{children:(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.th,{children:"Key"}),(0,o.jsx)(n.th,{children:"Type"}),(0,o.jsx)(n.th,{children:"Default"}),(0,o.jsx)(n.th,{children:"Description"})]})}),(0,o.jsxs)(n.tbody,{children:[(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"api_key"})}),(0,o.jsx)(n.td,{children:"string"}),(0,o.jsx)(n.td,{children:"(required)"}),(0,o.jsx)(n.td,{children:"Your Control Zero API key"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"scan_interval"})}),(0,o.jsx)(n.td,{children:"integer"}),(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"300"})}),(0,o.jsx)(n.td,{children:"Seconds between scans"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"modules.ai_traffic"})}),(0,o.jsx)(n.td,{children:"boolean"}),(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"true"})}),(0,o.jsx)(n.td,{children:"Enable AI API traffic detection"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"modules.ai_applications"})}),(0,o.jsx)(n.td,{children:"boolean"}),(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"true"})}
1),(0,o.jsx)(n.td,{children:"Enable AI application detection"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"modules.api_key_exposure"})}),(0,o.jsx)(n.td,{children:"boolean"}),(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"true"})}),(0,o.jsx)(n.td,{children:"Enable credential exposure scanning"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"enforcement.enabled"})}),(0,o.jsx)(n.td,{children:"boolean"}),(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"false"})}),(0,o.jsx)(n.td,{children:"Enable enforcement mode"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:"enforcement.mode"})}),(0,o.jsx)(n.td,{children:"string"}),(0,o.jsx)(n.td,{children:(0,o.jsx)(n.code,{children:'"dns"'})}),(0,o.jsxs)(n.td,{children:["Enforcement method: ",(0,o.jsx)(n.code,{children:"dns"}),", ",(0,o.jsx)(n.code,{children:"firewall"}),", or ",(0,o.jsx)(n.code,{children:"both"})]})]})]})]}),"\n",(0,o.jsx)(n.h2,{id:"what-scout-detects",children:"What Scout Detects"}),"\n",(0,o.jsx)(n.h3,{id:"ai-api-traffic",children:"AI API Traffic"}),"\n",(0,o.jsx)(n.p,{children:"Scout monitors outbound network connections and identifies traffic to known AI provider endpoints:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["OpenAI (",(0,o.jsx)(n.code,{children:"api.openai.com"}),")"]}),"\n",(0,o.jsxs)(n.li,{children:["Anthropic (",(0,o.jsx)(n.code,{children:"api.anthropic.com"}),")"]}),"\n",(0,o.jsxs)(n.li,{children:["Cohere (",(0,o.jsx)(n.code,{children:"api.cohere.ai"}),")"]}),"\n",(0,o.jsxs)(n.li,{children:["Mistral (",(0,o.jsx)(n.code,{children:"api.mistral.ai"}),")"]}),"\n",(0,o.jsxs)(n.li,{children:["Google AI (",(0,o.jsx)(n.code,{children:"generativelanguage.googleapis.com"}),")"]}),"\n",(0,o.jsxs)(n.li,{children:["Replicate (",(0,o.jsx)(n.code,{children:"api.replicate.com"}),")"]}),"\n",(0,o.jsxs)(n.li,{children:["HuggingFace (",(0,o.jsx)(n.code,{children:"api-inference.huggingface.co"}),")"]}),"\n",(0,o.jsx)(n.li,{children:"And 10+ additional providers"}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"For each connection, Scout reports the destination, originating process, connection frequency, and timestamp."}),"\n",(0,o.jsx)(n.h3,{id:"ai-applications",children:"AI Applications"}),"\n",(0,o.jsx)(n.p,{children:"Scout will detect locally installed AI tools by checking for known process names and application directories:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Local inference:"})," Ollama, LM Studio, LocalAI, llama.cpp"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"AI coding assistants:"})," Cursor, GitHub Copilot, Continue, Cody"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Desktop clients:"})," Claude Desktop, ChatGPT Desktop"]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Development tools:"})," Jupyter with AI extensions, VS Code with AI plugins"]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"api-key-exposure",children:"API Key Exposure"}),"\n",(0,o.jsx)(n.p,{children:"Scout will scan for AI provider credentials in common configuration locations, detecting key patterns for OpenAI, Anthropic, Cohere, HuggingFace, Google AI, and other providers."}),"\n",(0,o.jsx)(n.p,{children:"Scout checks:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Environment files (",(0,o.jsx)(n.code,{children:".env"}),", ",(0,o.jsx)(n.code,{children:".env.local"}),", ",(0,o.jsx)(n.code,{children:".env.production"}),")"]}),"\n",(0,o.jsxs)(n.li,{children:["Configuration files (",(0,o.jsx)(n.code,{children:"config.toml"}),", ",(0,o.jsx)(n.code,{children:"config.yaml"}),", ",(0,o.jsx)(n.code,{children:"settings.json"}),")"]}),"\n",(0,o.jsxs)(n.li,{children:["Shell profiles (",(0,o.jsx)(n.code,{children:".bashrc"}),", ",(0,o.jsx)(n.code,{children:".zshrc"}),", ",(0,o.jsx)(n.code,{children:".profile"}),")"]}),"\n",(0,o.jsx)(n.li,{children:"Source code in project directories"}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Scout reports only the key type and file location."})," The actual key value is never transmitted."]}),"\n",(0,o.jsx)(n.h2,{id:"enforcement-mode",children:"Enforcement Mode"}),"\n",(0,o.jsx)(n.p,{children:"Enforcement is opt-in and disabled by default. When enabled, Scout can block outbound connections to unauthorized AI services."}),"\n",(0,o.jsx)(n.h3,{id:"dns-level-blocking",children:"DNS-Level Blocking"}),"\n",(0,o.jsx)(n.p,{children:"Scout configures local DNS resolution to block domains associated with unauthorized AI providers. Allowed providers are defined in your Control Zero dashboard."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-toml",children:'[enforcement]\nenabled = true\nmode = "dns"\n'})}),"\n",(0,o.jsx)(n.h3,{id:"firewall-rules",children:"Firewall Rules"}),"\n",(0,o.jsx)(n.p,{children:"Scout creates per-process firewall rules that restrict which applications can reach AI endpoints. This allows fine-grained control: approve Cursor but block ChatGPT Desktop, for example."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-toml",children:'[enforcement]\nenabled = true\nmode = "firewall"\n'})}),"\n",(0,o.jsx)(n.h3,{id:"combined-mode",children:"Combined Mode"}),"\n",(0,o.jsx)(n.p,{children:"Use both DNS blocking and firewall rules together for defense in depth."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-toml",children:'[enforcement]\nenabled = true\nmode = "both"\n'})}),"\n",(0,o.jsx)(n.h3,{id:"defining-allowed-services",children:"Defining Allowed Services"}),"\n",(0,o.jsx)(n.p,{children:"Allowed AI services are managed in your Control Zero dashboard under the Shadow AI section. Scout pulls the allow list automatically on each scan cycle."}),"\n",(0,o.jsx)(n.h2,{id:"privacy-guarantees",children:"Privacy Guarantees"}),"\n",(0,o.jsx)(n.p,{children:"Scout is designed to discover AI usage without introducing new privacy or security risks."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"No file content reading."})," Scout checks file names and metadata for credential patterns. It never reads the actual contents of your files."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"No credential transmission."}),' When a leaked key is found, Scout reports the key type (e.g., "OpenAI API key") and file path. The key value itself stays on the machine.']}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"No prompt or response capture."})," Scout identifies AI traffic by connection metadata (destination host, port, process). It does not inspect request or response payloads."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Encrypted communication."})," All data sent from Scout to Control Zero uses TLS encryption."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Minimal permissions."})," Scout requires network monitoring access and read access to file metadata. It does not require root on most configurations."]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"managing-scout",children:"Managing Scout"}),"\n",(0,o.jsx)(n.h3,{id:"check-status",children:"Check status"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"cz-scout status\n"})}),"\n",(0,o.jsx)(n.h3,{id:"run-a-manual-scan",children:"Run a manual scan"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"cz-scout scan --now\n"})}),"\n",(0,o.jsx)(n.h3,{id:"view-local-findings",children:"View local findings"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"cz-scout findings\n"})}),"\n",(0,o.jsx)(n.h3,{id:"update-scout",children:"Update Scout"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"cz-scout update\n"})}),"\n",(0,o.jsx)(n.h3,{id:"uninstall",children:"Uninstall"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"cz-scout uninstall\n"})}),"\n",(0,o.jsxs)(n.p,{children:["This stops the background service, removes the binary, and deregisters the agent from your Control Zero account. Local configuration files at ",(0,o.jsx)(n.code,{children:"~/.config/cz-scout/"})," are preserved for reference."]}),"\n",(0,o.jsx)(n.h2,{id:"troubleshooting",children:"Troubleshooting"}),"\n",(0,o.jsx)(n.h3,{id:"scout-is-not-reporting-findings",children:"Scout is not reporting findings"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["Verify the API key is correct: ",(0,o.jsx)(n.code,{children:"cz-scout status"}),' should show "connected."']}),"\n",(0,o.jsxs)(n.li,{children:["Check that at least one scan module is enabled in ",(0,o.jsx)(n.code,{children:"~/.config/cz-scout/settings.toml"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Run a manual scan with ",(0,o.jsx)(n.code,{children:"cz-scout scan --now"})," and check for errors in the output."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"scout-cannot-connect-to-control-zero",children:"Scout cannot connect to Control Zero"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["Verify outbound HTTPS access to ",(0,o.jsx)(n.code,{children:"api.controlzero.ai"})," on port 443."]}),"\n",(0,o.jsxs)(n.li,{children:["If behind a corporate proxy, set the ",(0,o.jsx)(n.code,{children:"HTTPS_PROXY"})," environment variable before starting Scout."]}),"\n",(0,o.jsx)(n.li,{children:"Check firewall rules that may block outbound connections from the Scout process."}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"enforcement-mode-is-not-blocking-traffic",children:"Enforcement mode is not blocking traffic"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["Confirm that ",(0,o.jsx)(n.code,{children:"enforcement.enabled = true"})," in your settings file."]}),"\n",(0,o.jsxs)(n.li,{children:["DNS blocking requires Scout to manage the local DNS resolver. Verify with ",(0,o.jsx)(n.code,{children:"cz-scout status"}),"."]}),"\n",(0,o.jsxs)(n.li,{children:["Firewall mode may require elevated permissions on some systems. Check the Scout logs at ",(0,o.jsx)(n.code,{children:"~/.config/cz-scout/logs/"}),"."]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"high-resource-usage",children:"High resource usage"}),"\n",(0,o.jsx)(n.p,{children:"Scout is designed to be lightweight. If you observe unexpected resource consumption:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["Increase the ",(0,o.jsx)(n.code,{children:"scan_interval"})," to reduce scan frequency."]}),"\n",(0,o.jsxs)(n.li,{children:["Narrow ",(0,o.jsx)(n.code,{children:"scan_paths.include"})," to only the directories you need to monitor."]}),"\n",(0,o.jsx)(n.li,{children:"Disable scan modules you do not need."}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"next-steps",children:"Next Steps"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"/docs/intro",children:"Control Zero Introduction"})," for an overview of the full platform."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"/docs/quickstart",children:"Qu
1ick Start"})," to set up policy enforcement for your AI agents."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://controlzero.ai/pricing",children:"Pricing"})," for plan details and limits."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},28453(e,n,i){i.d(n,{R:()=>r,x:()=>l});var s=i(96540);const o={},t=s.createContext(o);function r(e){const n=s.useContext(t);return s.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.