Guide · Agent skill
How to use the Hopper Binary Debugger agent skill
Updated · written with AI from the project's own documentation and checked against our catalogue data
The hopper-debugger skill teaches an AI agent to use Hopper Disassembler, a macOS app that turns compiled macOS and iOS programs into readable pseudo-code, as a service it can query. This guide is for developers who already have Hopper and want their agent to look up functions and strings in Apple frameworks and app binaries. After reading it you will be able to install the skill, connect Hopper through mcporter, and ask for the kind of binary analysis the skill supports.
Quick start
- 1Get Hopper 6.0 or later. Install Hopper Disassembler 6.0 or later on macOS. You need a licence for it to analyse binaries.
- 2Install the skill. Unzip the downloaded ZIP into ~/.claude/skills/ or a project's .claude/skills/, or upload it under Settings → Capabilities → Skills in the Claude apps.
- 3Register Hopper's MCP server. Run mcporter config add hopper with --scope home and the path to HopperMCPServer inside the Hopper app bundle.
- 4Verify the connection. Run mcporter list hopper --brief with a timeout. A working list confirms the server responds.
- 5Open a binary. Open the target binary with Hopper and wait for the import to finish before sending queries.
- 6Ask for an analysis. Describe the symbol or behaviour you want explained in plain language, and let the agent search and summarise the pseudo-code.
What an agent skill is and what this one does
An agent skill is a folder with a SKILL.md file that gives an AI agent instructions for a specific task. The agent loads the skill when a request matches its description, so you do not have to explain the workflow each time.
This skill covers reverse-engineering support using Hopper. Once it is set up, the agent can search for procedures and strings in a document such as AppKit, pull pseudo-code for a single procedure, and combine that with your local source code, the LLDB debugger, logs and small test cases to explain or diagnose a bug.
- Searches procedures and strings in Apple frameworks and app binaries loaded into Hopper
- Reads pseudo-code for one procedure at a time and summarises the control flow
- Checks hypotheses with LLDB, logging or a repro before editing app code
- Notes known gotchas, such as the correct call syntax and how to read Hopper's license state
Install the hopper-debugger skill
Download the ZIP from the skill's page on this directory and unzip it. The skill folder contains agents/openai.yaml and SKILL.md. Put the folder in one of these locations:
- Personal: ~/.claude/skills/ so every project on your machine can use it
- Project only: .claude/skills/ inside the repository you are working in
- Claude apps: upload the ZIP under Settings → Capabilities → Skills
Install Hopper Disassembler and mcporter
The skill needs Hopper Disassembler 6.0 or later. Hopper 6.0 and newer ship their own MCP server, called HopperMCPServer, inside the app bundle, so you do not need a third-party server. The skill also needs the mcporter command-line tool, which the source refers to but does not describe installing, so check its documentation for setup.
Then register Hopper's built-in server with mcporter. The --scope home flag is required. Without it, mcporter writes config/mcporter.json into whatever repository you are in.
mcporter config add hopper --scope home \
--command "/Applications/Hopper Disassembler.app/Contents/MacOS/HopperMCPServer" \
--description "Hopper Disassembler built-in MCP server (stdio)"Verify the connection and open a binary
Run the list command to confirm mcporter can reach Hopper. Then open a binary with Hopper. Small binaries import with no dialog; large frameworks can take minutes, so poll for the document rather than sleeping for a fixed time.
- Document names come from list_documents and have no .hop extension. A window titled AppKit.hop is called AppKit.
- The server does not fall back to the current document, so pass document on every document-scoped call.
MCPORTER_LIST_TIMEOUT=25000 timeout 40 mcporter list hopper --briefAlways use --args, never --params
This is the detail most likely to cost you time. mcporter accepts an unknown --params flag silently, drops the payload, and sends the call with no arguments. Hopper then returns "Document not found.", which looks like a licensing or document problem but is actually a syntax error.
# WRONG: arguments silently dropped
mcporter call hopper.list_segments --params '{"document":"AppKit"}'
# RIGHT
mcporter call hopper.list_segments --args '{"document":"AppKit"}'Query a procedure by symbol or address
Start from the symbol you are trying to explain, search for it, then inspect one small target at a time. The procedure argument accepts either a symbol name or a hex address. Ask the agent to summarise the relevant control flow rather than pasting large decompilations.
- Other tools in the server include list_documents, current_document, set_current_document, list_segments, list_procedures, list_strings, search_strings, procedure_info, procedure_address and current_procedure.
- Hopper disassembly shows which store a value is written to; check the runtime to confirm it actually gets there.
mcporter call hopper.search_procedures --args '{"document":"AppKit","pattern":"addCursorRect"}' --output json
mcporter call hopper.procedure_pseudo_code --args '{"document":"AppKit","procedure":"0x185475b2c"}' --output jsonTroubleshoot common failures
Most failures fall into a few patterns. The skill's guidance is to wrap Hopper calls in timeout, avoid sending concurrent requests while an import is running, and restart the mcporter daemon rather than killing processes broadly.
- "Connection closed": Hopper is probably not running or is showing a modal. Check the windows, dismiss the dialog, then retry.
- "Document not found.": almost always a missing --args flag, not a broken document.
- Wedged mcporter: stop and restart its daemon.
mcporter daemon stop && mcporter daemon startWhat people use it for
- Finding which internal procedure an AppKit method calls when a window or cursor behaves unexpectedly
- Searching a framework's strings to locate a message or error text the public documentation does not mention
- Comparing a disassembled function against your own code to explain a bug before changing anything
- Reading a small app binary's pseudo-code to check how it handles a particular call
Frequently asked questions
How do I install the hopper-debugger skill?
Download the ZIP from this page and unzip it into ~/.claude/skills/ for personal use or .claude/skills/ inside a project. You can also upload the ZIP in the Claude apps under Settings → Capabilities → Skills.
Do I need Hopper Disassembler to use this skill?
Yes. The skill drives Hopper's built-in MCP server, so it is not useful without Hopper Disassembler 6.0 or later installed on macOS.
Is the hopper-debugger skill free?
The skill is released under the MIT licence. Hopper Disassembler is a separate product with its own licence, which you need to own or hold to analyse binaries.
Why does Hopper say 'Document not found'?
In the skill's guidance this almost always means the call was sent with --params instead of --args, so the document argument was dropped. Switch to --args and retry.
Does the skill use the network?
The source file states the skill does not use the network. It does run scripts and includes AppleScript and daemon control commands, so review them before use.
What are the alternatives to this skill?
The source does not compare this skill with other tools. You can query Hopper directly from the command line over stdio, which the skill's troubleshooting section shows, or use other disassemblers without this agent integration.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
This skill suits macOS and iOS developers who already own Hopper Disassembler 6.0 or later and want an agent to query Apple framework internals alongside their own code. Skip it if you do not have Hopper, do not have the right to analyse the binaries, or do not want an agent running a local MCP server and desktop automation.
Download the skill