Garnet records what each CI job ran and the outbound connections it opened, then posts one Execution Profile per job to the pull request.
The diff shows what changed. It does not show what ran.Agents and dependencies run code you did not write, in your CI, with your secrets. Garnet records each job at the kernel on the runners you already use: what ran, and the outbound connection each execution chain opened. It posts the result to the pull request as an Execution Profile, one per job, before anyone approves.
pnpm/pnpm#17521 compares the recorded job with its last 10 recorded runs on main. The public report is linked from the comment.
Three parts. The GitHub App connects your repositories. The Garnet Action records your workflow. The PR comment carries one Execution Profile per job, with a link to the same profile as a logged-out public report.
Add Garnet
One App install, one workflow step. First Execution Profile on your next pull request.
Then read the Execution Profile in full. Review agents, coding agents and merge gates can consume the same comment directly or through the Runtime Review MCP; both paths are a preview.Garnet records. The reviewer and repository policy decide.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Garnet Docs","description":"Garnet records execution for every job in your CI, and posts evidence directly to your PR. Trust your agentic PRs, merge faster, ship with confidence.","colors":{"primary":"#D61F2C","light":"#EF4444","dark":"#B91C1C"},"logo":{"light":"https://mintcdn.com/garnetlabs/lqfx9sDXfJZoVh_V/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=lqfx9sDXfJZoVh_V\u0026q=85\u0026s=be16ea1f3a677ad3f9654c6b9363a8fd","dark":"https://mintcdn.com/garnetlabs/lqfx9sDXfJZoVh_V/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=lqfx9sDXfJZoVh_V\u0026q=85\u0026s=24130e02ba777d9a78053569e50161ae","href":"https://garnet.ai/?utm_source=docs.garnet.ai\u0026utm_medium=web\u0026utm_content=docs-logo"},"favicon":"https://mintcdn.com/garnetlabs/lqfx9sDXfJZoVh_V/favicon.svg?fit=max\u0026auto=format\u0026n=lqfx9sDXfJZoVh_V\u0026q=85\u0026s=6b9278ebf6faf56914cbbad15fcf60fd","appearance":{"default":"dark"},"background":{"decoration":"grid"},"navbar":{"links":[{"href":"https://garnet.ai/?utm_source=docs.garnet.ai\u0026utm_medium=web\u0026utm_content=docs-navbar-home","label":"Homepage"},{"href":"https://cal.com/team/garnet/intro?duration=30\u0026utm_source=docs.garnet.ai\u0026utm_medium=web\u0026utm_content=docs-navbar-book","label":"Book a 1:1"}],"primary":{"type":"button","label":"Get Started","href":"/quickstart"}},"footer":{"socials":{"website":"https://garnet.ai/?utm_source=docs.garnet.ai\u0026utm_medium=web\u0026utm_content=docs-footer-website","github":"https://github.com/garnet-org","linkedin":"https://linkedin.com/company/garnet-ai"},"links":[{"items":[{"label":"Homepage","href":"https://garnet.ai/?utm_source=docs.garnet.ai\u0026utm_medium=web\u0026utm_content=docs-footer-home"},{"label":"Dashboard","href":"https://app.garnet.ai/?utm_source=docs.garnet.ai\u0026utm_medium=web\u0026utm_content=docs-footer-dashboard"},{"label":"Released pin (garnet.ai/pins)","href":"https://garnet.ai/pins?utm_source=docs.garnet.ai\u0026utm_medium=web\u0026utm_content=docs-footer-pins"},{"label":"Documented pins (release.json)","href":"/release.json"}]},{"items":[{"label":"GitHub","href":"https://github.com/garnet-org"},{"label":"Speak with us","href":"https://cal.com/team/garnet/intro?duration=30\u0026utm_source=docs.garnet.ai\u0026utm_medium=web\u0026utm_content=docs-footer-book"}]}]},"seo":{"metatags":{"canonical":"https://docs.garnet.ai","og:site_name":"Garnet Documentation","og:title":"Garnet Docs — Runtime Review for pull requests","og:description":"Garnet records what a configured CI job ran and where its outbound connections went, and the GitHub App posts the Execution Profile to the pull request. Garnet records; the reviewer decides.","og:image":"/images/comment-17521-open.png","twitter:card":"summary_large_image","twitter:title":"Garnet Docs — Runtime Review for pull requests","twitter:description":"Garnet records what a configured CI job ran and where its outbound connections went, and the GitHub App posts the Execution Profile to the pull request. Garnet records; the reviewer decides."}},"fonts":{"family":"Geist"},"integrations":{"posthog":{"apiKey":"phc_RE7WQdg7OVxS13IXuhnkD09y60ckkPyh81sE911Arz3","apiHost":"https://us.i.posthog.com"}},"contextual":{"options":["copy","view","claude","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Live example: reference#29","icon":"code-pull-request","href":"https://github.com/garnet-labs/garnet-runtime-review-reference/pull/29"},{"anchor":"Dashboard","icon":"gauge","href":"https://app.garnet.ai/?utm_source=docs.garnet.ai\u0026utm_medium=web\u0026utm_content=docs-nav-dashboard"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"garnetlabs","hasAudioNarration":false,"actualSubdomain":"garnetlabs","customDomains":["docs.garnet.ai"],"gitSource":{"type":"github","owner":"garnet-org","repo":"garnet-documentation","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aea449f5d353acbd1c31b5b","collectionId":"334e63ed-5ad8-452f-a151-3ce2aa04d84c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea449f5d353acbd1c31b5b"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aea45766833942ad4bfde8b","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Get started","count":4},{"language":"default","tag":"The Execution Profile","count":2}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"index","slug":"/","pageMetadata":{"title":"Runtime Review for pull requests","sidebarTitle":"Overview","description":"Garnet records what each CI job ran and the outbound connections it opened, then posts one Execution Profile per job to the pull request.","icon":"shield-halved","href":"/index"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Garnet records what each CI job ran and the outbound connections it opened, then posts one Execution Profile per job to the pull request.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,p:`p`,strong:`strong`,..._provideComponents(),...props.components},{Card,CardGroup,OptimizedImage}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The diff shows what changed. It does not show what ran.`}),`\n`,_jsxs(_components.p,{children:[`Agents and dependencies run code you did not write, in your CI, with your secrets. Garnet records each job at the kernel on the runners you already use: what ran, and the outbound connection each execution chain opened. It posts the result to the pull request as an `,_jsx(_components.strong,{children:`Execution Profile`}),`, one per job, before anyone approves.`]}),`\n`,_jsxs(`div`,{style:{display:`flex`,flexDirection:`column`,alignItems:`center`,margin:`2rem 0`},children:[_jsx(OptimizedImage,{style:{borderRadius:`14px`,border:`1px solid rgba(128,128,128,0.3)`,boxShadow:`0 8px 30px rgba(0,0,0,0.35)`,maxWidth:`640px`,width:`100%`,margin:0},src:`https://mintcdn.com/garnetlabs/j1UEOOOFjGcIWy28/images/comment-17521-open.png?fit=max\u0026auto=format\u0026n=j1UEOOOFjGcIWy28\u0026q=85\u0026s=18ea73d9502b9a4007a3977a06593cad`,alt:`The Runtime Review comment on pnpm/pnpm#17521: nothing new recorded against the last 10 recorded runs on main, with the job tree and runner traffic in one fold`,\"data-og-width\":`2560`,width:`2560`,\"data-og-height\":`3766`,height:`3766`,\"data-path\":`images/comment-17521-open.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/garnetlabs/j1UEOOOFjGcIWy28/images/comment-17521-open.png?w=280\u0026fit=max\u0026auto=format\u0026n=j1UEOOOFjGcIWy28\u0026q=85\u0026s=f58875bbd47111b5cb658cd6b1e4237a 280w, https://mintcdn.com/garnetlabs/j1UEOOOFjGcIWy28/images/comment-17521-open.png?w=560\u0026fit=max\u0026auto=format\u0026n=j1UEOOOFjGcIWy28\u0026q=85\u0026s=39537ec7263c0883910dc1537092e3cb 560w, https://mintcdn.com/garnetlabs/j1UEOOOFjGcIWy28/images/comment-17521-open.png?w=840\u0026fit=max\u0026auto=format\u0026n=j1UEOOOFjGcIWy28\u0026q=85\u0026s=c2986d279468c5b01dafe9518fc153a7 840w, https://mintcdn.com/garnetlabs/j1UEOOOFjGcIWy28/images/comment-17521-open.png?w=1100\u0026fit=max\u0026auto=format\u0026n=j1UEOOOFjGcIWy28\u0026q=85\u0026s=219504819512e0be7b9b79223e93a0fd 1100w, https://mintcdn.com/garnetlabs/j1UEOOOFjGcIWy28/images/comment-17521-open.png?w=1650\u0026fit=max\u0026auto=format\u0026n=j1UEOOOFjGcIWy28\u0026q=85\u0026s=e838a38b1ad8edb9600ee0923d76099a 1650w, https://mintcdn.com/garnetlabs/j1UEOOOFjGcIWy28/images/comment-17521-open.png?w=2500\u0026fit=max\u0026auto=format\u0026n=j1UEOOOFjGcIWy28\u0026q=85\u0026s=b92be11f6de90d748e89dd418c23b2e4 2500w`}),_jsxs(`p`,{style:{fontSize:`0.875rem`,opacity:.65,marginTop:`0.875rem`,marginBottom:0,textAlign:`center`},children:[_jsx(`a`,{href:`https://github.com/pnpm/pnpm/pull/17521`,children:`pnpm/pnpm#17521`}),` compares the recorded job with its last 10 recorded runs on `,_jsx(`code`,{children:`main`}),`. The public report is linked from the comment.`]})]}),`\n`,_jsxs(_components.p,{children:[`Three parts. The `,_jsx(_components.strong,{children:`GitHub App`}),` connects your repositories. The `,_jsx(_components.strong,{children:`Garnet Action`}),` records your workflow. The `,_jsx(_components.strong,{children:`PR comment`}),` carries one Execution Profile per job, with a link to the same profile as a logged-out public report.`]}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Add Garnet`,icon:`rocket`,href:`/quickstart`,children:_jsx(_components.p,{children:`One App install, one workflow step. First Execution Profile on your next pull request.`})}),_jsx(Card,{title:`See a live Execution Profile`,icon:`eye`,href:`https://app.garnet.ai/public/runs/32909555254?profile=01a03b31-6120-7364-bbc0-f263e7f55ce0\u0026utm_source=docs.garnet.ai\u0026utm_medium=web\u0026utm_content=docs-home-proof`,children:_jsxs(_components.p,{children:[`The recorded profile behind `,_jsx(_components.a,{href:`https://github.com/garnet-labs/garnet-runtime-review-reference/pull/29`,children:`garnet-runtime-review-reference#29`}),`. No account needed.`]})})]}),`\n`,_jsxs(_components.p,{children:[`Then read `,_jsx(_components.a,{href:`/execution-profile`,children:`the Execution Profile`}),` in full. Review agents, coding agents and merge gates can consume the same comment directly or through the Runtime Review MCP; both paths are a `,_jsx(_components.a,{href:`/consume`,children:`preview`}),`.`]}),`\n`,_jsx(_components.p,{children:`Garnet records. The reviewer and repository policy decide.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Runtime Review for pull requests","sidebarTitle":"Overview","description":"Garnet records what each CI job ran and the outbound connections it opened, then posts one Execution Profile per job to the pull request.","icon":"shield-halved","href":"/index"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/garnetlabs/dc492dd256bee17a/attribution.js"],"subdomain":"garnetlabs","siteName":"Garnet Docs","title":"Garnet Docs — Runtime Review for pull requests","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-03T20:32:23.322Z","originalFileLocation":"index.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Garnet records what each CI job ran and the outbound connections it opened, then posts one Execution Profile per job to the pull request.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Garnet Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/garnetlabs/wtPETFVvXtkrQy68/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/garnetlabs/wtPETFVvXtkrQy68/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/garnetlabs/wtPETFVvXtkrQy68/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/garnetlabs/wtPETFVvXtkrQy68/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/garnetlabs/wtPETFVvXtkrQy68/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/garnetlabs/wtPETFVvXtkrQy68/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/garnetlabs/wtPETFVvXtkrQy68/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/garnetlabs/wtPETFVvXtkrQy68/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/garnetlabs/wtPETFVvXtkrQy68/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Garnet Docs — Runtime Review for pull requests\">\u003cmeta data-mint-head property=\"og:description\" content=\"Garnet records what a configured CI job ran and where its outbound connections went, and the GitHub App posts the Execution Profile to the pull request. Garnet records; the reviewer decides.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Garnet Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.garnet.ai\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://garnetlabs.mintlify.app/images/comment-17521-open.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Garnet Docs — Runtime Review for pull requests\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Garnet records what a configured CI job ran and where its outbound connections went, and the GitHub App posts the Execution Profile to the pull request. Garnet records; the reviewer decides.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://garnetlabs.mintlify.app/images/comment-17521-open.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/garnetlabs/wtPETFVvXtkrQy68/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Garnet Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#D61F2C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.garnet.ai\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/index.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.garnet.ai/#organization\",\"name\":\"Garnet Docs\",\"url\":\"https://docs.garnet.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/garnetlabs/lqfx9sDXfJZoVh_V/logo/logo-light.svg?fit=max\u0026auto=format\u0026n=lqfx9sDXfJZoVh_V\u0026q=85\u0026s=be16ea1f3a677ad3f9654c6b9363a8fd\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.garnet.ai#website\",\"name\":\"Garnet Docs\",\"url\":\"https://docs.garnet.ai\",\"publisher\":{\"@id\":\"https://docs.garnet.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.garnet.ai/#webpage\",\"url\":\"https://docs.garnet.ai/\",\"name\":\"Runtime Review for pull requests\",\"description\":\"Garnet records what each CI job ran and the outbound connections it opened, then posts one Execution Profile per job to the pull request.\",\"dateModified\":\"2026-11-03T20:32:23.322Z\",\"isPartOf\":{\"@id\":\"https://docs.garnet.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.garnet.ai/#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.garnet.ai/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Get started\",\"item\":\"https://docs.garnet.ai/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Runtime Review for pull requests\",\"item\":\"https://docs.garnet.ai/\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.garnet.ai/#article\",\"headline\":\"Runtime Review for pull requests\",\"name\":\"Runtime Review for pull requests\",\"description\":\"Garnet records what each CI job ran and the outbound connections it opened, then posts one Execution Profile per job to the pull request.\",\"url\":\"https://docs.garnet.ai/\",\"mainEntityOfPage\":{\"@id\":\"https://docs.garnet.ai/#webpage\"},\"image\":\"https://docs.garnet.ai/images/comment-17521-open.png\",\"dateModified\":\"2026-11-03T20:32:23.322Z\",\"publisher\":{\"@id\":\"https://docs.garnet.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.garnet.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Garnet Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Garnet Docs","nav":{"global":{"anchors":[{"anchor":"Live example: reference#29","icon":"code-pull-request","href":"https://github.com/garnet-labs/garnet-runtime-review-reference/pull/29"},{"anchor":"Dashboard","icon":"gauge","href":"https://app.garnet.ai/?utm_source=docs.garnet.ai\u0026utm_medium=web\u0026utm_content=docs-nav-dashboard"}]},"groups":[{"group":"Get started","pages":[{"title":"Runtime Review for pull requests","sidebarTitle":"Overview","icon":"shield-halved","href":""},{"title":"Quick start","description":"Install the GitHub App, add one workflow step, and get your first Execution Profile on a pull request. No code changes.","icon":"rocket","href":"/quickstart"},{"title":"Coverage","sidebarTitle":"Coverage","icon":"table-list","href":"/coverage"},{"title":"Security and permissions","sidebarTitle":"Security","icon":"shield-halved","href":"/security"}]},{"group":"The Execution Profile","pages":[{"title":"What the Execution Profile records and how to read it","sidebarTitle":"Execution Profile","icon":"fingerprint","href":"/execution-profile"},{"title":"Consume the Runtime Review","sidebarTitle":"Consume (preview)","icon":"robot","tag":"PREVIEW","href":"/consume"}]}]},"basePath":"","title":"Garnet Docs — Runtime Review for pull requests","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-B4-wUcHm.js","lightbox-handle-r17bVUz3.js"]}