Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save RafalWilinski/3416a497f94ee2a0c589a8d930304950 to your computer and use it in GitHub Desktop.
Save RafalWilinski/3416a497f94ee2a0c589a8d930304950 to your computer and use it in GitHub Desktop.
Auto-approve all MCP tool calls in Claude Desktop
// HOW TO INSTRUCTIONS
// 1. Open Claude Desktop
// 2. Go to Help -> Enable Developer Mode
// 3. Navigate Developer Tools window named "Developer Tools - https://claude.ai"
// 4. Go to "Console" tab
// 5. Type "allow pasting" and hit Enter
// 6. Paste this snippet and hit Enter
// From now on, all MCP calls will be auto-approved
// END INSTRUCTIONS
// Cooldown tracking
let lastClickTime = 0;
const COOLDOWN_MS = 1000; // 1 second cooldown
const observer = new MutationObserver((mutations) => {
// Check if we're still in cooldown
const now = Date.now();
if (now - lastClickTime < COOLDOWN_MS) {
console.log("πŸ•’ Still in cooldown period, skipping...");
return;
}
console.log("πŸ” Checking mutations...");
const dialog = document.querySelector('[role="dialog"]');
if (!dialog) return;
const buttonWithDiv = dialog.querySelector("button div");
if (!buttonWithDiv) return;
const toolText = buttonWithDiv.textContent;
if (!toolText) return;
console.log("πŸ“ Found tool request:", toolText);
const toolName = toolText.match(/Run (\S+) from/)?.[1];
if (!toolName) return;
console.log("πŸ› οΈ Tool name:", toolName);
const allowButton = Array.from(dialog.querySelectorAll("button")).find(
(button) => button.textContent.includes("Allow for This Chat")
);
if (allowButton) {
console.log("πŸš€ Auto-approving tool:", toolName);
lastClickTime = now; // Set cooldown
allowButton.click();
}
});
// Start observing
observer.observe(document.body, {
childList: true,
subtree: true,
});
@rvanbaalen
Copy link

And CMD+SHIFT+OPTION+I for the mac users :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment