Hook configuration loaded from the workspace, or None if not found
Show child attributes
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"OpenHands Docs","colors":{"primary":"#99873c","light":"#ffe165","dark":"#ffe165"},"logo":{"light":"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/logo/light.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=49b636402b03f7279ca5e1afefeec1d2","dark":"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/logo/dark.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=e0c4017631cebc3a289798438e2c0d7a"},"favicon":"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/openhands/logo-square.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=6ef1bab575660ae6e2d44fcc57bc675f","appearance":{"default":"light"},"background":{"color":{"light":"#f7f3ee","dark":"#0B0D0E"}},"navbar":{"links":[],"primary":{"type":"github","href":"https://github.com/OpenHands/OpenHands"}},"footer":{"socials":{"slack":"https://openhands.dev/joinslack","github":"https://github.com/OpenHands"},"links":[{"header":"Links","items":[{"label":"Company","href":"https://openhands.dev/"},{"label":"Blog","href":"https://openhands.dev/blog"},{"label":"Cloud","href":"https://app.all-hands.dev"},{"label":"Enterprise","href":"https://openhands.dev/enterprise"}]}]},"seo":{"indexing":"navigable"},"contextual":{"options":["copy","view","download-spec","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"allhandsai","hasAudioNarration":false,"actualSubdomain":"allhandsai","customDomains":["docs.openhands.dev"],"gitSource":{"type":"github","owner":"openhands","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aef2c540a8f67c3b92878f6","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"Cloud","count":196},{"language":"default","tag":"Cloud API","count":187},{"language":"default","tag":"REST API Reference","count":185},{"language":"default","tag":"SDK","count":128},{"language":"default","tag":"Guides","count":105},{"language":"default","tag":"API Reference","count":95},{"language":"default","tag":"Enterprise","count":69},{"language":"default","tag":"Agent Canvas","count":60},{"language":"default","tag":"Home","count":58},{"language":"default","tag":"Remote Agent Server","count":55}]},"assistantConfig":{"deflection":{"enabled":true,"email":"contact@openhands.dev","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#banner *{color:rgb(67, 66, 64)}"}],"page":{"pagePath":"sdk/guides/agent-server/api-reference/hooks/get-hooks","slug":"/sdk/guides/agent-server/api-reference/hooks/get-hooks","pageMetadata":{"title":"Get Hooks","description":"Load hooks from the workspace .openhands/hooks.json file.\n\nThis endpoint reads the hooks configuration from the project's\n.openhands/hooks.json file if it exists.\n\nArgs:\n request: HooksRequest containing the project directory path.\n\nReturns:\n HooksResponse containing the hook configuration or None.","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/hooks","href":"/sdk/guides/agent-server/api-reference/hooks/get-hooks","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Load hooks from the workspace .openhands/hooks.json file.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"This endpoint reads the hooks configuration from the project’s\\n.openhands/hooks.json file if it exists.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Args:\\nrequest: HooksRequest containing the project directory path.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Returns:\\nHooksResponse containing the hook configuration or None.\"\n })]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get Hooks","description":"Load hooks from the workspace .openhands/hooks.json file.\n\nThis endpoint reads the hooks configuration from the project's\n.openhands/hooks.json file if it exists.\n\nArgs:\n request: HooksRequest containing the project directory path.\n\nReturns:\n HooksResponse containing the hook configuration or None.","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/hooks","href":"/sdk/guides/agent-server/api-reference/hooks/get-hooks","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/allhandsai/dddab338317a519d/openhands/reo-init.js","/_mintlify/custom/allhandsai/ae719f15d762e1fe/openhands/posthog-init.js","/_mintlify/custom/allhandsai/b35f7f3c3c83fb4c/openhands/canvas-handoff.js","/_mintlify/custom/allhandsai/771d6371c43b73b7/openhands/linkedin-copy-tracking.js"],"openApiReferenceData":{"operation":{"tags":["Hooks"],"summary":"Get Hooks","description":"Load hooks from the workspace .openhands/hooks.json file.\n\nThis endpoint reads the hooks configuration from the project's\n.openhands/hooks.json file if it exists.\n\nArgs:\n request: HooksRequest containing the project directory path.\n\nReturns:\n HooksResponse containing the hook configuration or None.","operationId":"get_hooks_api_hooks_post","requestBody":"9149179d-f9a2-4fbf-adc4-24fe83901c84","responses":{"200":"0e1411e5-bce1-4791-9668-5f33eb9368f8","422":"c626e67b-2683-4013-b1f6-dc5540352ff3"},"method":"post","type":"path","servers":[],"security":[],"path":"/api/hooks","baseUrlOptions":[],"title":"Get Hooks","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"properties":{"project_dir":{"oneOf":[{"type":"string","title":"Project Dir","description":"Workspace directory path for project hooks","uniqueKey":"project_dir.oneOf.0","typeLabel":"string"},{"type":"null","title":"Project Dir","description":"Workspace directory path for project hooks","uniqueKey":"project_dir.oneOf.1","typeLabel":"null"}],"uniqueKey":"project_dir","typeLabel":"string | null"}},"type":"object","title":"HooksRequest","description":"Request body for loading hooks.","uniqueKey":"","typeLabel":"HooksRequest · object"},"examples":{"Example":{"title":"Example","value":{"project_dir":"\u003cstring>"}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"0e1411e5-bce1-4791-9668-5f33eb9368f8":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"hook_config":{"oneOf":[{"type":"object","title":"HookConfig","description":"Hook configuration loaded from the workspace, or None if not found","properties":{"pre_tool_use":{"items":{"properties":{"matcher":{"type":"string","title":"Matcher","default":"*","uniqueKey":"hook_config.oneOf.0.pre_tool_use.items.[INDEX].matcher","typeLabel":"string"},"hooks":{"items":{"properties":{"command":{"type":"string","title":"Command","isRequired":true,"uniqueKey":"hook_config.oneOf.0.pre_tool_use.items.[INDEX].hooks.items.[INDEX].command","typeLabel":"string"},"type":{"type":"string","enum":["command","prompt"],"title":"HookType","description":"Types of hooks that can be executed.","default":"command","uniqueKey":"hook_config.oneOf.0.pre_tool_use.items.[INDEX].hooks.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"timeout":{"type":"integer","title":"Timeout","default":60,"uniqueKey":"hook_config.oneOf.0.pre_tool_use.items.[INDEX].hooks.items.[INDEX].timeout","typeLabel":"integer"}},"type":"object","required":["command"],"title":"HookDefinition","description":"A single hook definition.","uniqueKey":"hook_config.oneOf.0.pre_tool_use.items.[INDEX].hooks.items.[INDEX]","typeLabel":"HookDefinition · object"},"type":"array","title":"Hooks","uniqueKey":"hook_config.oneOf.0.pre_tool_use.items.[INDEX].hooks","typeLabel":"HookDefinition · object[]"}},"type":"object","title":"HookMatcher","description":"Matches events to hooks based on patterns.\n\nSupports exact match, wildcard (*), and regex (auto-detected or /pattern/).","uniqueKey":"hook_config.oneOf.0.pre_tool_use.items.[INDEX]","typeLabel":"HookMatcher · object"},"type":"array","title":"Pre Tool Use","description":"Hooks that run before tool execution","uniqueKey":"hook_config.oneOf.0.pre_tool_use","typeLabel":"HookMatcher · object[]"},"post_tool_use":{"items":{"properties":{"matcher":{"type":"string","title":"Matcher","default":"*","uniqueKey":"hook_config.oneOf.0.post_tool_use.items.[INDEX].matcher","typeLabel":"string"},"hooks":{"items":{"properties":{"command":{"type":"string","title":"Command","isRequired":true,"uniqueKey":"hook_config.oneOf.0.post_tool_use.items.[INDEX].hooks.items.[INDEX].command","typeLabel":"string"},"type":{"type":"string","enum":["command","prompt"],"title":"HookType","description":"Types of hooks that can be executed.","default":"command","uniqueKey":"hook_config.oneOf.0.post_tool_use.items.[INDEX].hooks.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"timeout":{"type":"integer","title":"Timeout","default":60,"uniqueKey":"hook_config.oneOf.0.post_tool_use.items.[INDEX].hooks.items.[INDEX].timeout","typeLabel":"integer"}},"type":"object","required":["command"],"title":"HookDefinition","description":"A single hook definition.","uniqueKey":"hook_config.oneOf.0.post_tool_use.items.[INDEX].hooks.items.[INDEX]","typeLabel":"HookDefinition · object"},"type":"array","title":"Hooks","uniqueKey":"hook_config.oneOf.0.post_tool_use.items.[INDEX].hooks","typeLabel":"HookDefinition · object[]"}},"type":"object","title":"HookMatcher","description":"Matches events to hooks based on patterns.\n\nSupports exact match, wildcard (*), and regex (auto-detected or /pattern/).","uniqueKey":"hook_config.oneOf.0.post_tool_use.items.[INDEX]","typeLabel":"HookMatcher · object"},"type":"array","title":"Post Tool Use","description":"Hooks that run after tool execution","uniqueKey":"hook_config.oneOf.0.post_tool_use","typeLabel":"HookMatcher · object[]"},"user_prompt_submit":{"items":{"properties":{"matcher":{"type":"string","title":"Matcher","default":"*","uniqueKey":"hook_config.oneOf.0.user_prompt_submit.items.[INDEX].matcher","typeLabel":"string"},"hooks":{"items":{"properties":{"command":{"type":"string","title":"Command","isRequired":true,"uniqueKey":"hook_config.oneOf.0.user_prompt_submit.items.[INDEX].hooks.items.[INDEX].command","typeLabel":"string"},"type":{"type":"string","enum":["command","prompt"],"title":"HookType","description":"Types of hooks that can be executed.","default":"command","uniqueKey":"hook_config.oneOf.0.user_prompt_submit.items.[INDEX].hooks.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"timeout":{"type":"integer","title":"Timeout","default":60,"uniqueKey":"hook_config.oneOf.0.user_prompt_submit.items.[INDEX].hooks.items.[INDEX].timeout","typeLabel":"integer"}},"type":"object","required":["command"],"title":"HookDefinition","description":"A single hook definition.","uniqueKey":"hook_config.oneOf.0.user_prompt_submit.items.[INDEX].hooks.items.[INDEX]","typeLabel":"HookDefinition · object"},"type":"array","title":"Hooks","uniqueKey":"hook_config.oneOf.0.user_prompt_submit.items.[INDEX].hooks","typeLabel":"HookDefinition · object[]"}},"type":"object","title":"HookMatcher","description":"Matches events to hooks based on patterns.\n\nSupports exact match, wildcard (*), and regex (auto-detected or /pattern/).","uniqueKey":"hook_config.oneOf.0.user_prompt_submit.items.[INDEX]","typeLabel":"HookMatcher · object"},"type":"array","title":"User Prompt Submit","description":"Hooks that run when user submits a prompt","uniqueKey":"hook_config.oneOf.0.user_prompt_submit","typeLabel":"HookMatcher · object[]"},"session_start":{"items":{"properties":{"matcher":{"type":"string","title":"Matcher","default":"*","uniqueKey":"hook_config.oneOf.0.session_start.items.[INDEX].matcher","typeLabel":"string"},"hooks":{"items":{"properties":{"command":{"type":"string","title":"Command","isRequired":true,"uniqueKey":"hook_config.oneOf.0.session_start.items.[INDEX].hooks.items.[INDEX].command","typeLabel":"string"},"type":{"type":"string","enum":["command","prompt"],"title":"HookType","description":"Types of hooks that can be executed.","default":"command","uniqueKey":"hook_config.oneOf.0.session_start.items.[INDEX].hooks.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"timeout":{"type":"integer","title":"Timeout","default":60,"uniqueKey":"hook_config.oneOf.0.session_start.items.[INDEX].hooks.items.[INDEX].timeout","typeLabel":"integer"}},"type":"object","required":["command"],"title":"HookDefinition","description":"A single hook definition.","uniqueKey":"hook_config.oneOf.0.session_start.items.[INDEX].hooks.items.[INDEX]","typeLabel":"HookDefinition · object"},"type":"array","title":"Hooks","uniqueKey":"hook_config.oneOf.0.session_start.items.[INDEX].hooks","typeLabel":"HookDefinition · object[]"}},"type":"object","title":"HookMatcher","description":"Matches events to hooks based on patterns.\n\nSupports exact match, wildcard (*), and regex (auto-detected or /pattern/).","uniqueKey":"hook_config.oneOf.0.session_start.items.[INDEX]","typeLabel":"HookMatcher · object"},"type":"array","title":"Session Start","description":"Hooks that run when a session starts","uniqueKey":"hook_config.oneOf.0.session_start","typeLabel":"HookMatcher · object[]"},"session_end":{"items":{"properties":{"matcher":{"type":"string","title":"Matcher","default":"*","uniqueKey":"hook_config.oneOf.0.session_end.items.[INDEX].matcher","typeLabel":"string"},"hooks":{"items":{"properties":{"command":{"type":"string","title":"Command","isRequired":true,"uniqueKey":"hook_config.oneOf.0.session_end.items.[INDEX].hooks.items.[INDEX].command","typeLabel":"string"},"type":{"type":"string","enum":["command","prompt"],"title":"HookType","description":"Types of hooks that can be executed.","default":"command","uniqueKey":"hook_config.oneOf.0.session_end.items.[INDEX].hooks.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"timeout":{"type":"integer","title":"Timeout","default":60,"uniqueKey":"hook_config.oneOf.0.session_end.items.[INDEX].hooks.items.[INDEX].timeout","typeLabel":"integer"}},"type":"object","required":["command"],"title":"HookDefinition","description":"A single hook definition.","uniqueKey":"hook_config.oneOf.0.session_end.items.[INDEX].hooks.items.[INDEX]","typeLabel":"HookDefinition · object"},"type":"array","title":"Hooks","uniqueKey":"hook_config.oneOf.0.session_end.items.[INDEX].hooks","typeLabel":"HookDefinition · object[]"}},"type":"object","title":"HookMatcher","description":"Matches events to hooks based on patterns.\n\nSupports exact match, wildcard (*), and regex (auto-detected or /pattern/).","uniqueKey":"hook_config.oneOf.0.session_end.items.[INDEX]","typeLabel":"HookMatcher · object"},"type":"array","title":"Session End","description":"Hooks that run when a session ends","uniqueKey":"hook_config.oneOf.0.session_end","typeLabel":"HookMatcher · object[]"},"stop":{"items":{"properties":{"matcher":{"type":"string","title":"Matcher","default":"*","uniqueKey":"hook_config.oneOf.0.stop.items.[INDEX].matcher","typeLabel":"string"},"hooks":{"items":{"properties":{"command":{"type":"string","title":"Command","isRequired":true,"uniqueKey":"hook_config.oneOf.0.stop.items.[INDEX].hooks.items.[INDEX].command","typeLabel":"string"},"type":{"type":"string","enum":["command","prompt"],"title":"HookType","description":"Types of hooks that can be executed.","default":"command","uniqueKey":"hook_config.oneOf.0.stop.items.[INDEX].hooks.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"timeout":{"type":"integer","title":"Timeout","default":60,"uniqueKey":"hook_config.oneOf.0.stop.items.[INDEX].hooks.items.[INDEX].timeout","typeLabel":"integer"}},"type":"object","required":["command"],"title":"HookDefinition","description":"A single hook definition.","uniqueKey":"hook_config.oneOf.0.stop.items.[INDEX].hooks.items.[INDEX]","typeLabel":"HookDefinition · object"},"type":"array","title":"Hooks","uniqueKey":"hook_config.oneOf.0.stop.items.[INDEX].hooks","typeLabel":"HookDefinition · object[]"}},"type":"object","title":"HookMatcher","description":"Matches events to hooks based on patterns.\n\nSupports exact match, wildcard (*), and regex (auto-detected or /pattern/).","uniqueKey":"hook_config.oneOf.0.stop.items.[INDEX]","typeLabel":"HookMatcher · object"},"type":"array","title":"Stop","description":"Hooks that run when the agent attempts to stop","uniqueKey":"hook_config.oneOf.0.stop","typeLabel":"HookMatcher · object[]"}},"additionalProperties":false,"uniqueKey":"hook_config.oneOf.0","typeLabel":"HookConfig · object"},{"type":"null","description":"Hook configuration loaded from the workspace, or None if not found","uniqueKey":"hook_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"hook_config","typeLabel":"HookConfig · object | null"}},"type":"object","title":"HooksResponse","description":"Response containing hooks configuration.","uniqueKey":"","typeLabel":"HooksResponse · object"},"examples":{"Example":{"title":"Example","value":{"hook_config":{"pre_tool_use":[{"matcher":"*","hooks":[{"command":"\u003cstring>","type":"command","timeout":60}]}],"post_tool_use":[{"matcher":"*","hooks":[{"command":"\u003cstring>","type":"command","timeout":60}]}],"user_prompt_submit":[{"matcher":"*","hooks":[{"command":"\u003cstring>","type":"command","timeout":60}]}],"session_start":[{"matcher":"*","hooks":[{"command":"\u003cstring>","type":"command","timeout":60}]}],"session_end":[{"matcher":"*","hooks":[{"command":"\u003cstring>","type":"command","timeout":60}]}],"stop":[{"matcher":"*","hooks":[{"command":"\u003cstring>","type":"command","timeout":60}]}]}}}},"exampleType":"generated"}},"exampleType":"generated"},"c626e67b-2683-4013-b1f6-dc5540352ff3":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"oneOf":[{"type":"string","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.1","typeLabel":"integer"}],"uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"string | integer"},"type":"array","title":"Location","isRequired":true,"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"(string | integer)[]"},"msg":{"type":"string","title":"Message","isRequired":true,"uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"type":"string","title":"Error Type","isRequired":true,"uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError","uniqueKey":"detail.items.[INDEX]","typeLabel":"ValidationError · object"},"type":"array","title":"Detail","uniqueKey":"detail","typeLabel":"ValidationError · object[]"}},"type":"object","title":"HTTPValidationError","uniqueKey":"","typeLabel":"HTTPValidationError · object"},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["\u003cstring>"],"msg":"\u003cstring>","type":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{},"servers":{}},"originalFileLocation":"openapi/agent-sdk.json"},"subdomain":"allhandsai","siteName":"OpenHands Docs","title":"Get Hooks - OpenHands Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-02-13T03:45:45.059Z","originalFileLocation":"sdk/guides/agent-server/api-reference/hooks/get-hooks.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=\"light\"}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=\"Load hooks from the workspace .openhands/hooks.json file. This endpoint reads the hooks configuration from the project\u0026#x27;s .openhands/hooks.json file if it exists. Args: request: HooksRequest containing the project directory path. Returns: HooksResponse containing the hook configuration or None.\">\u003cmeta data-mint-head name=\"application-name\" content=\"OpenHands 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/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_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/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get Hooks - OpenHands Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Load hooks from the workspace .openhands/hooks.json file. This endpoint reads the hooks configuration from the project\u0026#x27;s .openhands/hooks.json file if it exists. Args: request: HooksRequest containing the project directory path. Returns: HooksResponse containing the hook configuration or None.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"OpenHands Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/hooks/get-hooks\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://allhandsai.mintlify.site/_mintlify/api/og/v2?division=Hooks\u0026amp;title=Get+Hooks\u0026amp;description=Load+hooks+from+the+workspace+.openhands%2Fhooks.json+file.%0A%0AThis+endpoint+reads+the+hooks+configuration+from+the+project%27s%0A.openhands%2Fhooks.json+file+if+it+exist\u0026amp;theme=d1346828d5653c6c432bc1fc\u0026amp;signature=f29065f8a4109b5ce12f8077ad86cb24be10df2213d2e94f7d475f92e1afe268\">\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=\"Get Hooks - OpenHands Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Load hooks from the workspace .openhands/hooks.json file. This endpoint reads the hooks configuration from the project\u0026#x27;s .openhands/hooks.json file if it exists. Args: request: HooksRequest containing the project directory path. Returns: HooksResponse containing the hook configuration or None.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://allhandsai.mintlify.site/_mintlify/api/og/v2?division=Hooks\u0026amp;title=Get+Hooks\u0026amp;description=Load+hooks+from+the+workspace+.openhands%2Fhooks.json+file.%0A%0AThis+endpoint+reads+the+hooks+configuration+from+the+project%27s%0A.openhands%2Fhooks.json+file+if+it+exist\u0026amp;theme=d1346828d5653c6c432bc1fc\u0026amp;signature=f29065f8a4109b5ce12f8077ad86cb24be10df2213d2e94f7d475f92e1afe268\">\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/allhandsai/NJyVpY-OoVetrcKF/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"OpenHands Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#99873c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/hooks/get-hooks\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/sdk/guides/agent-server/api-reference/hooks/get-hooks.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.openhands.dev/#organization\",\"name\":\"OpenHands Docs\",\"url\":\"https://docs.openhands.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/allhandsai/DjhqLcIy_hW6pRTg/logo/light.png?fit=max\u0026auto=format\u0026n=DjhqLcIy_hW6pRTg\u0026q=85\u0026s=49b636402b03f7279ca5e1afefeec1d2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.openhands.dev#website\",\"name\":\"OpenHands Docs\",\"url\":\"https://docs.openhands.dev\",\"publisher\":{\"@id\":\"https://docs.openhands.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/hooks/get-hooks#webpage\",\"url\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/hooks/get-hooks\",\"name\":\"Get Hooks\",\"description\":\"Load hooks from the workspace .openhands/hooks.json file. This endpoint reads the hooks configuration from the project's .openhands/hooks.json file if it exists. Args: request: HooksRequest containing the project directory path. Returns: HooksResponse containing the hook configuration or None.\",\"dateModified\":\"2026-02-13T03:45:45.059Z\",\"isPartOf\":{\"@id\":\"https://docs.openhands.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/hooks/get-hooks#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/hooks/get-hooks#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Guides\",\"item\":\"https://docs.openhands.dev/sdk/guides/hello-world\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Remote Agent Server\",\"item\":\"https://docs.openhands.dev/sdk/guides/agent-server/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"API Reference\",\"item\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/server-details/alive\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Get Hooks\",\"item\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/hooks/get-hooks\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/hooks/get-hooks#apireference\",\"headline\":\"Get Hooks\",\"name\":\"Get Hooks\",\"description\":\"Load hooks from the workspace .openhands/hooks.json file. This endpoint reads the hooks configuration from the project's .openhands/hooks.json file if it exists. Args: request: HooksRequest containing the project directory path. Returns: HooksResponse containing the hook configuration or None.\",\"url\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/hooks/get-hooks\",\"mainEntityOfPage\":{\"@id\":\"https://docs.openhands.dev/sdk/guides/agent-server/api-reference/hooks/get-hooks#webpage\"},\"dateModified\":\"2026-02-13T03:45:45.059Z\",\"publisher\":{\"@id\":\"https://docs.openhands.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.openhands.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"OpenHands Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"OpenHands Docs","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/overview/introduction"}]},{"tab":"Agent Canvas","pages":[{"title":"Agent Canvas","href":"/openhands/usage/agent-canvas/overview"}]},{"tab":"SDK","pages":[{"title":"Software Agent SDK","icon":"code","mode":"wide","href":"/sdk"},{"title":"Getting Started","icon":"rocket","href":"/sdk/getting-started"},{"title":"FAQ","icon":"question","href":"/sdk/faq"},{"group":"Guides","pages":[{"title":"Hello World","href":"/sdk/guides/hello-world"},{"title":"Custom Tools","href":"/sdk/guides/custom-tools"},{"title":"Structured Output","href":"/sdk/guides/structured-output"},{"title":"Model Context Protocol","href":"/sdk/guides/mcp"},{"title":"Agent Skills \u0026 Context","href":"/sdk/guides/skill"},{"title":"Plugins","href":"/sdk/guides/plugins"},{"title":"Persistence","href":"/sdk/guides/convo-persistence"},{"title":"Context Condenser","href":"/sdk/guides/context-condenser"},{"title":"Persistent Memory","href":"/sdk/guides/persistent-memory"},{"title":"Agent Settings","href":"/sdk/guides/agent-settings"},{"title":"Parallel Tool Execution","href":"/sdk/guides/parallel-tool-execution"},{"title":"Task Tool Set","href":"/sdk/guides/task-tool-set"},{"title":"Dynamic Agent Workflows","href":"/sdk/guides/agent-dynamic-workflow"},{"title":"Iterative Refinement","href":"/sdk/guides/iterative-refinement"},{"title":"Security \u0026 Action Confirmation","href":"/sdk/guides/security"},{"title":"Metrics Tracking","href":"/sdk/guides/metrics"},{"title":"Observability \u0026 Tracing","href":"/sdk/guides/observability"},{"title":"Secret Registry","href":"/sdk/guides/secrets"},{"group":"LLM Features","pages":[{"title":"LLM Subscriptions","href":"/sdk/guides/llm-subscriptions"},{"title":"LLM Registry","href":"/sdk/guides/llm-registry"},{"title":"Model Routing","href":"/sdk/guides/llm-routing"},{"title":"Reasoning","href":"/sdk/guides/llm-reasoning"},{"title":"GPT-5 Preset (ApplyPatchTool)","href":"/sdk/guides/llm-gpt5-preset"},{"title":"LLM Streaming","href":"/sdk/guides/llm-streaming"},{"title":"Image Input","href":"/sdk/guides/llm-image-input"},{"title":"Exception Handling","href":"/sdk/guides/llm-error-handling"},{"title":"LLM Fallback Strategy","href":"/sdk/guides/llm-fallback"},{"title":"LLM Profile Store","href":"/sdk/guides/llm-profile-store"},{"title":"Task-Based Model Routing","href":"/sdk/guides/llm-task-routing"}]},{"group":"Agent Features","pages":[{"title":"ACP Agent","href":"/sdk/guides/agent-acp"},{"title":"Interactive Terminal","href":"/sdk/guides/agent-interactive-terminal"},{"title":"Browser Use","href":"/sdk/guides/agent-browser-use"},{"title":"Browser Session Recording","href":"/sdk/guides/browser-session-recording"},{"title":"Creating Custom Agent","href":"/sdk/guides/agent-custom"},{"title":"File-Based Agents","href":"/sdk/guides/agent-file-based"},{"title":"Stuck Detector","href":"/sdk/guides/agent-stuck-detector"},{"title":"Ask Oracle","href":"/sdk/guides/agent-ask-oracle"},{"title":"Theory of Mind (TOM) Agent","href":"/sdk/guides/agent-tom-agent"},{"title":"Critic (Experimental)","href":"/sdk/guides/critic"}]},{"group":"Conversation Features","pages":[{"title":"Fork a Conversation","href":"/sdk/guides/convo-fork"},{"title":"Pause and Resume","href":"/sdk/guides/convo-pause-and-resume"},{"title":"Custom Visualizer","href":"/sdk/guides/convo-custom-visualizer"},{"title":"Send Message While Running","href":"/sdk/guides/convo-send-message-while-running"},{"title":"Conversation with Async","href":"/sdk/guides/convo-async"},{"title":"Ask Agent Questions","href":"/sdk/guides/convo-ask-agent"},{"title":"Goal Completion Loop","href":"/sdk/guides/convo-goal"},{"title":"Hooks","href":"/sdk/guides/hooks"}]},{"group":"Remote Agent Server","pages":[{"title":"Overview","href":"/sdk/guides/agent-server/overview"},{"title":"Local Agent Server","href":"/sdk/guides/agent-server/local-server"},{"title":"Agent Server Package","href":"/sdk/arch/agent-server"},{"title":"Conversation Goals","href":"/sdk/guides/agent-server/conversation-goals"},{"title":"Docker Sandbox","href":"/sdk/guides/agent-server/docker-sandbox"},{"title":"Apptainer Sandbox","href":"/sdk/guides/agent-server/apptainer-sandbox"},{"title":"API-based Sandbox","href":"/sdk/guides/agent-server/api-sandbox"},{"title":"OpenHands Cloud Workspace","href":"/sdk/guides/agent-server/cloud-workspace"},{"title":"Custom Tools with Remote Agent Server","href":"/sdk/guides/agent-server/custom-tools"},{"title":"OpenAI-Compatible Endpoint","href":"/sdk/guides/agent-server/openai-gateway"},{"title":"Deferred Init (Warm-Pool)","href":"/sdk/guides/agent-server/deferred-init"},{"group":"API Reference","pages":[{"group":"Server Details","pages":[{"title":"Alive","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /alive","href":"/sdk/guides/agent-server/api-reference/server-details/alive"},{"title":"Health","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /health","href":"/sdk/guides/agent-server/api-reference/server-details/health"},{"title":"Ready","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /ready","href":"/sdk/guides/agent-server/api-reference/server-details/ready"},{"title":"Get Server Info","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /server_info","href":"/sdk/guides/agent-server/api-reference/server-details/get-server-info"}]},{"group":"Events","pages":[{"title":"Search Conversation Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/{conversation_id}/events/search","href":"/sdk/guides/agent-server/api-reference/events/search-conversation-events"},{"title":"Count Conversation Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/{conversation_id}/events/count","href":"/sdk/guides/agent-server/api-reference/events/count-conversation-events"},{"title":"Get Conversation Event","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/{conversation_id}/events/{event_id}","href":"/sdk/guides/agent-server/api-reference/events/get-conversation-event"},{"title":"Batch Get Conversation Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/{conversation_id}/events","href":"/sdk/guides/agent-server/api-reference/events/batch-get-conversation-events"},{"title":"Send Message","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/events","href":"/sdk/guides/agent-server/api-reference/events/send-message"},{"title":"Respond To Confirmation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/events/respond_to_confirmation","href":"/sdk/guides/agent-server/api-reference/events/respond-to-confirmation"}]},{"group":"Conversations","pages":[{"title":"Search Conversations","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/search","href":"/sdk/guides/agent-server/api-reference/conversations/search-conversations"},{"title":"Count Conversations","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/count","href":"/sdk/guides/agent-server/api-reference/conversations/count-conversations"},{"title":"Get Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations/{conversation_id}","href":"/sdk/guides/agent-server/api-reference/conversations/get-conversation"},{"title":"Delete Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json delete /api/conversations/{conversation_id}","href":"/sdk/guides/agent-server/api-reference/conversations/delete-conversation"},{"title":"Update Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json patch /api/conversations/{conversation_id}","href":"/sdk/guides/agent-server/api-reference/conversations/update-conversation"},{"title":"Batch Get Conversations","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/conversations","href":"/sdk/guides/agent-server/api-reference/conversations/batch-get-conversations"},{"title":"Start Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations","href":"/sdk/guides/agent-server/api-reference/conversations/start-conversation"},{"title":"Pause Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/pause","href":"/sdk/guides/agent-server/api-reference/conversations/pause-conversation"},{"title":"Run Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/run","href":"/sdk/guides/agent-server/api-reference/conversations/run-conversation"},{"title":"Update Conversation Secrets","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/secrets","href":"/sdk/guides/agent-server/api-reference/conversations/update-conversation-secrets"},{"title":"Set Conversation Confirmation Policy","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/confirmation_policy","href":"/sdk/guides/agent-server/api-reference/conversations/set-conversation-confirmation-policy"},{"title":"Set Conversation Security Analyzer","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/security_analyzer","href":"/sdk/guides/agent-server/api-reference/conversations/set-conversation-security-analyzer"},{"title":"Generate Conversation Title","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/generate_title","href":"/sdk/guides/agent-server/api-reference/conversations/generate-conversation-title"},{"title":"Ask Agent","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/ask_agent","href":"/sdk/guides/agent-server/api-reference/conversations/ask-agent"},{"title":"Condense Conversation","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/conversations/{conversation_id}/condense","href":"/sdk/guides/agent-server/api-reference/conversations/condense-conversation"}]},{"group":"Tools","pages":[{"title":"List Available Tools","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/tools/","href":"/sdk/guides/agent-server/api-reference/tools/list-available-tools"}]},{"group":"Bash","pages":[{"title":"Search Bash Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/bash/bash_events/search","href":"/sdk/guides/agent-server/api-reference/bash/search-bash-events"},{"title":"Get Bash Event","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/bash/bash_events/{event_id}","href":"/sdk/guides/agent-server/api-reference/bash/get-bash-event"},{"title":"Batch Get Bash Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/bash/bash_events/","href":"/sdk/guides/agent-server/api-reference/bash/batch-get-bash-events"},{"title":"Start Bash Command","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/bash/start_bash_command","href":"/sdk/guides/agent-server/api-reference/bash/start-bash-command"},{"title":"Execute Bash Command","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/bash/execute_bash_command","href":"/sdk/guides/agent-server/api-reference/bash/execute-bash-command"},{"title":"Clear All Bash Events","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json delete /api/bash/bash_events","href":"/sdk/guides/agent-server/api-reference/bash/clear-all-bash-events"}]},{"group":"Git","pages":[{"title":"Git Changes","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/git/changes/{path}","href":"/sdk/guides/agent-server/api-reference/git/git-changes"},{"title":"Git Diff","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/git/diff/{path}","href":"/sdk/guides/agent-server/api-reference/git/git-diff"}]},{"group":"Files","pages":[{"title":"Upload File","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/file/upload/{path}","href":"/sdk/guides/agent-server/api-reference/files/upload-file"},{"title":"Download File","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/file/download/{path}","href":"/sdk/guides/agent-server/api-reference/files/download-file"},{"title":"Download Trajectory","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/file/download-trajectory/{conversation_id}","href":"/sdk/guides/agent-server/api-reference/files/download-trajectory"}]},{"group":"VSCode","pages":[{"title":"Get Vscode Url","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/vscode/url","href":"/sdk/guides/agent-server/api-reference/vscode/get-vscode-url"},{"title":"Get Vscode Status","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/vscode/status","href":"/sdk/guides/agent-server/api-reference/vscode/get-vscode-status"}]},{"group":"Desktop","pages":[{"title":"Get Desktop Url","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /api/desktop/url","href":"/sdk/guides/agent-server/api-reference/desktop/get-desktop-url"}]},{"group":"Skills","pages":[{"title":"Get Skills","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/skills","href":"/sdk/guides/agent-server/api-reference/skills/get-skills"},{"title":"Sync Skills","description":"Force refresh of public skills from GitHub repository.\n\nThis triggers a git pull on the cached skills repository to get\nthe latest skills from the OpenHands/skills repository.\n\nReturns:\n SyncResponse indicating success or failure.","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/skills/sync","href":"/sdk/guides/agent-server/api-reference/skills/sync-skills"}]},{"group":"Hooks","pages":[{"title":"Get Hooks","deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json post /api/hooks","href":"/sdk/guides/agent-server/api-reference/hooks/get-hooks"}]},{"group":"API Reference","pages":[{"title":"Get Server Info","description":null,"deprecated":null,"version":null,"openapi":"/openapi/agent-sdk.json get /","href":"/sdk/guides/agent-server/api-reference/get-server-info"}]}]}]},{"group":"GitHub Workflows","pages":[{"title":"Assign Reviews","href":"/sdk/guides/github-workflows/assign-reviews"},{"title":"PR Review","href":"/sdk/guides/github-workflows/pr-review"},{"title":"TODO Management","href":"/sdk/guides/github-workflows/todo-management"}]}]},{"group":"Architecture","pages":[{"title":"Overview","href":"/sdk/arch/overview"},{"title":"Design Principles","href":"/sdk/arch/design"},{"group":"SDK Components","pages":[{"title":"Agent","href":"/sdk/arch/agent"},{"title":"Conversation","href":"/sdk/arch/conversation"},{"title":"Tool System \u0026 MCP","href":"/sdk/arch/tool-system"},{"title":"MCP Integration","href":"/sdk/arch/mcp"},{"title":"Events","href":"/sdk/arch/events"},{"title":"Workspace","href":"/sdk/arch/workspace"},{"title":"LLM","href":"/sdk/arch/llm"},{"title":"Skill","href":"/sdk/arch/skill"},{"title":"Condenser","href":"/sdk/arch/condenser"},{"title":"Security","href":"/sdk/arch/security"}]}]},{"group":"API Reference","pages":[{"title":"openhands.sdk.agent","href":"/sdk/api-reference/openhands.sdk.agent"},{"title":"openhands.sdk.conversation","href":"/sdk/api-reference/openhands.sdk.conversation"},{"title":"openhands.sdk.event","href":"/sdk/api-reference/openhands.sdk.event"},{"title":"openhands.sdk.llm","href":"/sdk/api-reference/openhands.sdk.llm"},{"title":"openhands.sdk.security","href":"/sdk/api-reference/openhands.sdk.security"},{"title":"openhands.sdk.tool","href":"/sdk/api-reference/openhands.sdk.tool"},{"title":"openhands.sdk.utils","href":"/sdk/api-reference/openhands.sdk.utils"},{"title":"openhands.sdk.workspace","href":"/sdk/api-reference/openhands.sdk.workspace"}]}]},{"tab":"Cloud","pages":[{"title":"Cloud","href":"/openhands/usage/cloud/openhands-cloud"}]},{"tab":"Enterprise","pages":[{"title":"Enterprise","href":"/enterprise"}]},{"tab":"Enterprise Cookbook","pages":[{"title":"Enterprise Cookbook","href":"/cookbook"}]}]},"basePath":"","title":"Get Hooks - OpenHands Docs","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-5FCzAcfS.js","utils-SLtAG4EZ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-2DZi8ZMu.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D7J3nkzE.js","snippetPresets-D0Alv0AH.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BI4qNJ2c.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BD3uyr8j.js","shallow-D8iEBr5z.js","getApiPlaygroundDisplay-CgNP4lzR.js","CodeSnippet-CX-QHuMs.js","CodeSnippets-VlXE-ZUf.js","Page-D9ithiIZ.js","getPastedJson-DYNQkZ1M.js","icon-CzacdwOi.js","MethodPill-2JVqoYKi.js","DuplicateIcon-_xVXs-U8.js","createIcon-BRHrweLo.js","DynamicMarkdown-mQG_iQiE.js","SectionHeading-DMpJzv8f.js","axios-vUo_bRtp.js","Markdown-5FGIym-8.js","clsx-D-TRO5q5.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CdrJecqK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CHlcWBLM.js"]}