[{"data":1,"prerenderedAt":654},["ShallowReactive",2],{"navigation_docs":3,"-docs-managing-zeeq-credentials":208,"-docs-managing-zeeq-credentials-surround":649},[4,40,73,112,136,151],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[10,15,20,25,30,35],{"title":11,"path":12,"stem":13,"icon":14},"Key Features","\u002Fdocs\u002Fgetting-started\u002Fkey-features","docs\u002F1.getting-started\u002F1.key-features","i-lucide-blocks",{"title":16,"path":17,"stem":18,"icon":19},"Why Zeeq?","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002F1.getting-started\u002F2.introduction","i-lucide-house",{"title":21,"path":22,"stem":23,"icon":24},"Org Onboarding","\u002Fdocs\u002Fgetting-started\u002Forg-onboarding","docs\u002F1.getting-started\u002F3.org-onboarding","i-lucide-rocket",{"title":26,"path":27,"stem":28,"icon":29},"Connecting Agents","\u002Fdocs\u002Fgetting-started\u002Fconnecting-agents","docs\u002F1.getting-started\u002F4.connecting-agents","i-lucide-plug",{"title":31,"path":32,"stem":33,"icon":34},"Harness Tuning","\u002Fdocs\u002Fgetting-started\u002Fharness-tuning","docs\u002F1.getting-started\u002F5.harness-tuning","i-lucide-wrench",{"title":36,"path":37,"stem":38,"icon":39},"FAQ","\u002Fdocs\u002Fgetting-started\u002Ffaq","docs\u002F1.getting-started\u002F6.faq","i-lucide-circle-question-mark",{"title":41,"icon":6,"path":42,"stem":43,"children":44,"page":6},"Feature Overview","\u002Fdocs\u002Fkey-features","docs\u002F2.key-features",[45,49,53,57,61,65,69],{"title":46,"path":47,"stem":48,"icon":14},"Knowledge Libraries","\u002Fdocs\u002Fkey-features\u002Fknowledge-libraries","docs\u002F2.key-features\u002F1.knowledge-libraries",{"title":50,"path":51,"stem":52,"icon":14},"Code Reviews","\u002Fdocs\u002Fkey-features\u002Fcode-reviews","docs\u002F2.key-features\u002F2.code-reviews",{"title":54,"path":55,"stem":56,"icon":14},"Code Review as Agent Tool","\u002Fdocs\u002Fkey-features\u002Fcode-review-tool","docs\u002F2.key-features\u002F3.code-review-tool",{"title":58,"path":59,"stem":60,"icon":14},"Zeeq Tools Telemetry","\u002Fdocs\u002Fkey-features\u002Ftool-and-docs-telemetry","docs\u002F2.key-features\u002F4.tool-and-docs-telemetry",{"title":62,"path":63,"stem":64,"icon":14},"Session Telemetry","\u002Fdocs\u002Fkey-features\u002Fsession-telemetry","docs\u002F2.key-features\u002F5.session-telemetry",{"title":66,"path":67,"stem":68,"icon":14},"Dynamic Skills","\u002Fdocs\u002Fkey-features\u002Fdynamic-skills","docs\u002F2.key-features\u002F6.dynamic-skills",{"title":70,"path":71,"stem":72,"icon":14},"World Model (2026 Q3)","\u002Fdocs\u002Fkey-features\u002Fworld-model","docs\u002F2.key-features\u002F7.world-model",{"title":74,"path":75,"stem":76,"children":77,"page":6},"Managing Zeeq","\u002Fdocs\u002Fmanaging-zeeq","docs\u002F3.managing-zeeq",[78,83,88,93,97,102,107],{"title":79,"path":80,"stem":81,"icon":82},"Local Development","\u002Fdocs\u002Fmanaging-zeeq\u002Flocal-development","docs\u002F3.managing-zeeq\u002F0.local-development","i-lucide-square-terminal",{"title":84,"path":85,"stem":86,"icon":87},"GitHub Configuration","\u002Fdocs\u002Fmanaging-zeeq\u002Fgithub-configuration","docs\u002F3.managing-zeeq\u002F1.github-configuration","i-lucide-github",{"title":89,"path":90,"stem":91,"icon":92},"Organizations and Membership","\u002Fdocs\u002Fmanaging-zeeq\u002Forgs-membership-invitations","docs\u002F3.managing-zeeq\u002F2.orgs-membership-invitations","i-hugeicons-cube",{"title":46,"path":94,"stem":95,"icon":96},"\u002Fdocs\u002Fmanaging-zeeq\u002Fdocument-libraries","docs\u002F3.managing-zeeq\u002F3.document-libraries","i-lucide-library-big",{"title":98,"path":99,"stem":100,"icon":101},"LLM Settings Configuration","\u002Fdocs\u002Fmanaging-zeeq\u002Fllm-settings-configuration","docs\u002F3.managing-zeeq\u002F4.llm-settings-configuration","i-hugeicons-ai-magic",{"title":103,"path":104,"stem":105,"icon":106},"Agent Code Review","\u002Fdocs\u002Fmanaging-zeeq\u002Fagent-code-reviews","docs\u002F3.managing-zeeq\u002F5.agent-code-reviews","i-hugeicons-chat-spark-01",{"title":108,"path":109,"stem":110,"icon":111},"Credentials & API Tokens","\u002Fdocs\u002Fmanaging-zeeq\u002Fcredentials","docs\u002F3.managing-zeeq\u002F6.credentials","i-hugeicons-key-01",{"title":113,"path":114,"stem":115,"children":116,"page":6},"Runtime Configuration","\u002Fdocs\u002Fconfiguration","docs\u002F5.configuration",[117,122,126,131],{"title":118,"path":119,"stem":120,"icon":121},"Google Cloud Configuration","\u002Fdocs\u002Fconfiguration\u002Fgcp-runtime","docs\u002F5.configuration\u002F1.gcp-runtime","i-hugeicons-google",{"title":84,"path":123,"stem":124,"icon":125},"\u002Fdocs\u002Fconfiguration\u002Fgithub-configuration","docs\u002F5.configuration\u002F2.github-configuration","i-hugeicons-github",{"title":127,"path":128,"stem":129,"icon":130},"Local OpenIddict Certificates","\u002Fdocs\u002Fconfiguration\u002Flocal-openiddict-certificates","docs\u002F5.configuration\u002F3.local-openiddict-certificates","i-lucide-file-lock",{"title":132,"path":133,"stem":134,"icon":135},"System Admin Access","\u002Fdocs\u002Fconfiguration\u002Fsystem-admin-access","docs\u002F5.configuration\u002F4.system-admin-access","i-hugeicons-shield-01",{"title":137,"path":138,"stem":139,"children":140,"page":6},"Metrics","\u002Fdocs\u002Fmetrics","docs\u002F6.metrics",[141,146],{"title":142,"path":143,"stem":144,"icon":145},"Metrics Dashboard","\u002Fdocs\u002Fmetrics\u002Fmetrics-dashboard","docs\u002F6.metrics\u002F1.metrics-dashboard","i-hugeicons-analytics-01",{"title":147,"path":148,"stem":149,"icon":150},"Metrics Pipeline","\u002Fdocs\u002Fmetrics\u002Fmetrics-pipeline","docs\u002F6.metrics\u002F2.metrics-pipeline","i-hugeicons-database-02",{"title":152,"path":153,"stem":154,"children":155,"page":6},"Design and Architecture","\u002Fdocs\u002Farchitecture","docs\u002F9.architecture",[156,161,166,171,176,180,184,189,194,199,204],{"title":157,"path":158,"stem":159,"icon":160},"Key Architecture Principles","\u002Fdocs\u002Farchitecture\u002Fkey-principles","docs\u002F9.architecture\u002F0.key-principles","i-lucide-pencil-ruler",{"title":162,"path":163,"stem":164,"icon":165},"MCP Tools Inventory","\u002Fdocs\u002Farchitecture\u002Ftools-inventory","docs\u002F9.architecture\u002F1.tools-inventory","i-lucide-hammer",{"title":167,"path":168,"stem":169,"icon":170},"Caching","\u002Fdocs\u002Farchitecture\u002Fcaching","docs\u002F9.architecture\u002F2.caching","i-lucide-database",{"title":172,"path":173,"stem":174,"icon":175},"Messaging and Queueing","\u002Fdocs\u002Farchitecture\u002Fmessaging-and-queueing","docs\u002F9.architecture\u002F3.messaging-and-queueing","i-lucide-message-square",{"title":177,"path":178,"stem":179,"icon":87},"GitHub Comment Rendering","\u002Fdocs\u002Farchitecture\u002Fgithub-comment-rendering","docs\u002F9.architecture\u002F4.github-comment-rendering",{"title":181,"path":182,"stem":183,"icon":87},"GitHub Integration","\u002Fdocs\u002Farchitecture\u002Fgithub-integration","docs\u002F9.architecture\u002F5.github-integration",{"title":185,"path":186,"stem":187,"icon":188},"LLM Settings and Secret Storage","\u002Fdocs\u002Farchitecture\u002Fllm-settings-and-secret-storage","docs\u002F9.architecture\u002F6.llm-settings-and-secret-storage","i-lucide-key",{"title":190,"path":191,"stem":192,"icon":193},"Organization Activation and Routes","\u002Fdocs\u002Farchitecture\u002Forganization-activation-and-routes","docs\u002F9.architecture\u002F7.organization-activation-and-routes","i-lucide-door-open",{"title":195,"path":196,"stem":197,"icon":198},"MCP Uploaded-Diff Code Reviews","\u002Fdocs\u002Farchitecture\u002Fmcp-uploaded-diff-code-reviews","docs\u002F9.architecture\u002F8.mcp-uploaded-diff-code-reviews","i-lucide-file-search",{"title":200,"path":201,"stem":202,"icon":203},"Repository Content Ingest","\u002Fdocs\u002Farchitecture\u002Frepository-content-ingest","docs\u002F9.architecture\u002F9.repository-content-ingest","i-lucide-file-stack",{"title":205,"path":206,"stem":207},"Telemetry Ingest (2026 Q3)","\u002Fdocs\u002Farchitecture\u002Ftelemetry-ingest","docs\u002F9.architecture\u002F9.telemetry-ingest",{"id":209,"title":108,"body":210,"description":642,"extension":643,"links":644,"meta":645,"navigation":646,"path":109,"seo":647,"stem":110,"__hash__":648},"docs\u002Fdocs\u002F3.managing-zeeq\u002F6.credentials.md",{"type":211,"value":212,"toc":628},"minimark",[213,218,227,234,241,245,249,265,297,302,332,339,343,346,495,499,502,508,512,515,543,547,570,574,577,602,606,613,617,624],[214,215,217],"h2",{"id":216},"summary","Summary",[219,220,221,222,226],"p",{},"Zeeq issues two kinds of user-owned credentials under ",[223,224,225],"strong",{},"Settings > Credentials",". Both are scoped to your currently active organization, so switch organizations first if you need credentials for a different org.",[219,228,229,230,233],{},"Secrets are shown ",[223,231,232],{},"only once"," at creation and cannot be recovered later.",[219,235,236],{},[237,238],"img",{"alt":239,"src":240},"credentials-api-tokens","\u002Fscreens\u002Fcredentials-api-tokens.png",[242,243,244],"note",{},"Generally, most harnesses will work fine with the dynamic client registration (DCR) flow.  In some cases, you may need to use the pre-registered client flow or the API token flow (e.g. GitHub Copilot Cloud Agents).",[214,246,248],{"id":247},"client-credentials","Client credentials",[219,250,251,252,256,257,260,261,264],{},"Client credentials are confidential OAuth clients for machine-to-machine access. They authenticate to the OpenIddict token endpoint with a ",[253,254,255],"code",{},"client_id"," and ",[253,258,259],{},"client_secret"," and receive a short-lived access token scoped to the ",[253,262,263],{},"mcp:tools"," resource.",[266,267,268,278,284,291],"ul",{},[269,270,271,274,275],"li",{},[223,272,273],{},"Grant type:"," ",[253,276,277],{},"client_credentials",[269,279,280,283],{},[223,281,282],{},"Token lifetime:"," ~15 minutes (no refresh token; re-authenticate at the token endpoint)",[269,285,286,274,289],{},[223,287,288],{},"Scope:",[253,290,263],{},[269,292,293,296],{},[223,294,295],{},"Audience:"," the Zeeq MCP resource indicator",[298,299,301],"h3",{"id":300},"create-a-client-credential","Create a client credential",[303,304,305,315,322],"ol",{},[269,306,307,308,310,311,314],{},"Go to ",[223,309,225],{}," and choose ",[223,312,313],{},"New credential",".",[269,316,317,318,321],{},"Enter a name (for example, ",[253,319,320],{},"CI build bot",").",[269,323,324,325,256,328,331],{},"Copy the ",[223,326,327],{},"Client ID",[223,329,330],{},"Client secret"," immediately. The secret is displayed only this once.",[219,333,334,335,338],{},"The creation response also includes a sample ",[253,336,337],{},"curl"," request you can use to test the token endpoint.",[298,340,342],{"id":341},"use-the-credential","Use the credential",[219,344,345],{},"Exchange the client credentials for an access token at the token endpoint, then send the token as a bearer token to the MCP endpoint:",[347,348,353],"pre",{"className":349,"code":350,"language":351,"meta":352,"style":352},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X POST \"$TOKEN_URL\" \\\n  -d \"grant_type=client_credentials\" \\\n  -d \"client_id=$CLIENT_ID\" \\\n  -d \"client_secret=$CLIENT_SECRET\" \\\n  -d \"scope=mcp:tools\" \\\n  -d \"resource=$RESOURCE\"\n\ncurl -H \"Authorization: Bearer $ACCESS_TOKEN\" \"$MCP_URL\"\n","bash","",[253,354,355,384,399,416,433,447,463,470],{"__ignoreMap":352},[356,357,360,363,367,370,374,378,381],"span",{"class":358,"line":359},"line",1,[356,361,337],{"class":362},"sBMFI",[356,364,366],{"class":365},"sfazB"," -X",[356,368,369],{"class":365}," POST",[356,371,373],{"class":372},"sMK4o"," \"",[356,375,377],{"class":376},"sTEyZ","$TOKEN_URL",[356,379,380],{"class":372},"\"",[356,382,383],{"class":376}," \\\n",[356,385,387,390,392,395,397],{"class":358,"line":386},2,[356,388,389],{"class":365},"  -d",[356,391,373],{"class":372},[356,393,394],{"class":365},"grant_type=client_credentials",[356,396,380],{"class":372},[356,398,383],{"class":376},[356,400,402,404,406,409,412,414],{"class":358,"line":401},3,[356,403,389],{"class":365},[356,405,373],{"class":372},[356,407,408],{"class":365},"client_id=",[356,410,411],{"class":376},"$CLIENT_ID",[356,413,380],{"class":372},[356,415,383],{"class":376},[356,417,419,421,423,426,429,431],{"class":358,"line":418},4,[356,420,389],{"class":365},[356,422,373],{"class":372},[356,424,425],{"class":365},"client_secret=",[356,427,428],{"class":376},"$CLIENT_SECRET",[356,430,380],{"class":372},[356,432,383],{"class":376},[356,434,436,438,440,443,445],{"class":358,"line":435},5,[356,437,389],{"class":365},[356,439,373],{"class":372},[356,441,442],{"class":365},"scope=mcp:tools",[356,444,380],{"class":372},[356,446,383],{"class":376},[356,448,450,452,454,457,460],{"class":358,"line":449},6,[356,451,389],{"class":365},[356,453,373],{"class":372},[356,455,456],{"class":365},"resource=",[356,458,459],{"class":376},"$RESOURCE",[356,461,462],{"class":372},"\"\n",[356,464,466],{"class":358,"line":465},7,[356,467,469],{"emptyLinePlaceholder":468},true,"\n",[356,471,473,475,478,480,483,486,488,490,493],{"class":358,"line":472},8,[356,474,337],{"class":362},[356,476,477],{"class":365}," -H",[356,479,373],{"class":372},[356,481,482],{"class":365},"Authorization: Bearer ",[356,484,485],{"class":376},"$ACCESS_TOKEN",[356,487,380],{"class":372},[356,489,373],{"class":372},[356,491,492],{"class":376},"$MCP_URL",[356,494,462],{"class":372},[298,496,498],{"id":497},"revoke","Revoke",[219,500,501],{},"Revoke a credential from the table. Existing tokens issued to that client stop authenticating immediately, and the credential can no longer be used.",[503,504,505],"blockquote",{},[219,506,507],{},"Client credentials do not carry a user role. If a client-credential-protected route ever requires role-based authorization, that is handled separately on the backend.",[214,509,511],{"id":510},"api-tokens","API tokens",[219,513,514],{},"API tokens are long-lived bearer tokens for scripting and CLI access. Unlike client credentials, they represent a specific user and are issued via a custom OpenIddict grant, so the user's org role is resolved live on each request.",[266,516,517,525,531,537],{},[269,518,519,274,521,524],{},[223,520,273],{},[253,522,523],{},"urn:auth:grant-type:user_token"," (custom; handled internally by Zeeq)",[269,526,527,530],{},[223,528,529],{},"Default lifetime:"," 90 days (configurable per token up to 365 days)",[269,532,533,274,535],{},[223,534,288],{},[253,536,263],{},[269,538,539,542],{},[223,540,541],{},"No refresh:"," the token is a direct bearer token; re-create it when it expires",[298,544,546],{"id":545},"create-an-api-token","Create an API token",[303,548,549,556,561,564],{},[269,550,307,551,310,553,314],{},[223,552,225],{},[223,554,555],{},"New token",[269,557,317,558,321],{},[253,559,560],{},"Local CLI",[269,562,563],{},"Optionally set an expiration in days (1–365). Defaults to 90 days.",[269,565,324,566,569],{},[223,567,568],{},"access token"," immediately. The value is displayed only this once.",[298,571,573],{"id":572},"use-the-token","Use the token",[219,575,576],{},"Send the token as a bearer token:",[347,578,580],{"className":349,"code":579,"language":351,"meta":352,"style":352},"curl -H \"Authorization: Bearer $ACCESS_TOKEN\" \"$MCP_URL\"\n",[253,581,582],{"__ignoreMap":352},[356,583,584,586,588,590,592,594,596,598,600],{"class":358,"line":359},[356,585,337],{"class":362},[356,587,477],{"class":365},[356,589,373],{"class":372},[356,591,482],{"class":365},[356,593,485],{"class":376},[356,595,380],{"class":372},[356,597,373],{"class":372},[356,599,492],{"class":376},[356,601,462],{"class":372},[214,603,605],{"id":604},"organization-scoping","Organization scoping",[219,607,608,609,612],{},"Both credential types belong to your ",[223,610,611],{},"active organization",". The active org is shown in the sidebar organization menu. To create or view credentials for another organization, switch to it first — the credentials list updates to reflect the active org.",[214,614,616],{"id":615},"dcr-clients-are-different","DCR clients are different",[219,618,619,620,623],{},"Dynamic Client Registration (DCR) clients — the public\u002FPKCE clients created by MCP coding tools like Claude Code — are managed separately through the ",[253,621,622],{},"\u002Fconnect\u002Fregister"," OAuth flow, not from this screen. When a user who belongs to more than one organization completes a DCR flow, Zeeq prompts them to choose which organization the DCR client should be scoped to before issuing the token.",[625,626,627],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":352,"searchDepth":386,"depth":386,"links":629},[630,631,636,640,641],{"id":216,"depth":386,"text":217},{"id":247,"depth":386,"text":248,"children":632},[633,634,635],{"id":300,"depth":401,"text":301},{"id":341,"depth":401,"text":342},{"id":497,"depth":401,"text":498},{"id":510,"depth":386,"text":511,"children":637},[638,639],{"id":545,"depth":401,"text":546},{"id":572,"depth":401,"text":573},{"id":604,"depth":386,"text":605},{"id":615,"depth":386,"text":616},"Manage OAuth client credentials and long-lived API tokens for machine and scripting access to Zeeq.","md",null,{},{"icon":111},{"title":108,"description":642},"7S6-9lhy66-VVGIkgHoVUiFdJFZ1yBbvhiEz00GMrGA",[650,652],{"title":103,"path":104,"stem":105,"description":651,"icon":106,"children":-1},"How Zeeq loads and displays detailed automated code review findings.",{"title":118,"path":119,"stem":120,"description":653,"icon":121,"children":-1},"How to configure Zeeq to run on Google Cloud Platform (GCP).",1785298596310]