Garnet records what each CI job ran and every outbound connection it opened, binds that to the head commit, and posts the Execution Profile 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.
reference#29 adds one npm dependency. Its install step reached api.ipify[.]org, httpbin[.]org and ip-api[.]com. The diff names none of them.
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-reference-29.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":"6ac87c9a76e980610e3a5a6a","collectionId":"859273dd-ab61-4290-b6d3-9a426f0479cc","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac87c9a76e980610e3a5a6a"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ac87c9a76e980610e3a5a6a","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"Get started","count":4},{"language":"default","tag":"The Execution Profile","count":2}]},"assistantConfig":{},"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":"editor-v7-file-tree","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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"editor-agent-model-picker","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":"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}],"isAtlas":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 every outbound connection it opened, binds that to the head commit, and posts the Execution Profile 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 every outbound connection it opened, binds that to the head commit, and posts the Execution Profile 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/bo0UkSKSOMwog5hr/images/comment-reference-29.png?fit=max\u0026auto=format\u0026n=bo0UkSKSOMwog5hr\u0026q=85\u0026s=20de38919e74457fe77708516d170739`,alt:`The Runtime Review comment on garnet-runtime-review-reference#29: one job, 12 destinations, compared with 5a6561f. Under the install step, node reached api.ipify[.]org, httpbin[.]org and ip-api[.]com`,\"data-og-width\":`2000`,width:`2000`,\"data-og-height\":`2130`,height:`2130`,\"data-path\":`images/comment-reference-29.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/garnetlabs/bo0UkSKSOMwog5hr/images/comment-reference-29.png?w=280\u0026fit=max\u0026auto=format\u0026n=bo0UkSKSOMwog5hr\u0026q=85\u0026s=392b01de405018decf47662f44835187 280w, https://mintcdn.com/garnetlabs/bo0UkSKSOMwog5hr/images/comment-reference-29.png?w=560\u0026fit=max\u0026auto=format\u0026n=bo0UkSKSOMwog5hr\u0026q=85\u0026s=0d95d9a6d75a9610b5d1c8390c16fc23 560w, https://mintcdn.com/garnetlabs/bo0UkSKSOMwog5hr/images/comment-reference-29.png?w=840\u0026fit=max\u0026auto=format\u0026n=bo0UkSKSOMwog5hr\u0026q=85\u0026s=9fee02ff021e31963e872e273140a440 840w, https://mintcdn.com/garnetlabs/bo0UkSKSOMwog5hr/images/comment-reference-29.png?w=1100\u0026fit=max\u0026auto=format\u0026n=bo0UkSKSOMwog5hr\u0026q=85\u0026s=6fb9b6418b2dc82a0947c6f2e843e0af 1100w, https://mintcdn.com/garnetlabs/bo0UkSKSOMwog5hr/images/comment-reference-29.png?w=1650\u0026fit=max\u0026auto=format\u0026n=bo0UkSKSOMwog5hr\u0026q=85\u0026s=f137330eb3a75a02b7f22cd0503b1423 1650w, https://mintcdn.com/garnetlabs/bo0UkSKSOMwog5hr/images/comment-reference-29.png?w=2500\u0026fit=max\u0026auto=format\u0026n=bo0UkSKSOMwog5hr\u0026q=85\u0026s=623f96bc17d43d5e9c124f639dfc1026 2500w`}),_jsxs(`p`,{style:{fontSize:`0.875rem`,opacity:.65,marginTop:`0.875rem`,marginBottom:0,textAlign:`center`},children:[_jsx(`a`,{href:`https://github.com/garnet-labs/garnet-runtime-review-reference/pull/29`,children:`reference#29`}),` adds one npm dependency. Its install step reached `,_jsx(`code`,{children:`api.ipify[.]org`}),`, `,_jsx(`code`,{children:`httpbin[.]org`}),` and `,_jsx(`code`,{children:`ip-api[.]com`}),`. The diff names none of them.`]})]}),`\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 every outbound connection it opened, binds that to the head commit, and posts the Execution Profile 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-10-09T05:32:11.229Z","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 every outbound connection it opened, binds that to the head commit, and posts the Execution Profile 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-reference-29.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-reference-29.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 every outbound connection it opened, binds that to the head commit, and posts the Execution Profile to the pull request.\",\"dateModified\":\"2026-10-09T05:32:11.229Z\",\"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 every outbound connection it opened, binds that to the head commit, and posts the Execution Profile to the pull request.\",\"url\":\"https://docs.garnet.ai/\",\"mainEntityOfPage\":{\"@id\":\"https://docs.garnet.ai/#webpage\"},\"image\":\"https://docs.garnet.ai/images/comment-reference-29.png\",\"dateModified\":\"2026-10-09T05:32:11.229Z\",\"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"}]}]},"title":"Garnet Docs — Runtime Review for pull requests","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CFBqa0On.js","lightbox-handle-r17bVUz3.js"]}