{"version":"2.1.277","anchor":"cloudremote-hook-execution-now-inspects-a-scripts-shebang","canonical_anchor":"cloudremote-hook-execution-now-inspects-a-scripts-shebang","heading":"Cloud hook scripts now have their shebang line checked before running","tier":"notice","area":"Sandbox","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.277\/e\/cloudremote-hook-execution-now-inspects-a-scripts-shebang","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.277","markdown":"### Cloud hook scripts now have their shebang line checked before running\n\nClaude Code now reads a hook script's #! line to decide if its interpreter is safe to run in a cloud or remote session, not just its declared interpreter\n\n**What**\n\nWhen deciding whether a hook script is safe to run in a cloud or remote (\"teleported\") session, Claude Code previously relied on a declared interpreter. Now, if no interpreter is declared, it reads the script's own shebang (`#!`) line and parses it with a new parser.\n\nThe parsed interpreter is classified as one of:\n\n- an absolute path\n\n- an env-resolved program (via `\/usr\/bin\/env`-style invocation)\n\n- cwd-relative\n\n- \"unjudgeable\" \u2014 for example a relative interpreter, an env invocation with extra options, or an interpreter that itself takes a file argument\n\nIf the interpreter can't be confidently classified as safe (is \"unjudgeable\" or not a plain absolute path\/known env-based form), Claude Code withholds the hook from running and shows a more detailed explanation of what interpreters and options are acceptable.\n\n**Why**\n\nA script's shebang line determines what actually runs it, so checking only a separately declared interpreter left room for a mismatched or unsafe interpreter to run unnoticed in cloud sessions. Parsing the shebang directly closes that gap.\n\n- Area: Sandbox\n- Tier: You'll notice\n- Useful: 2\/5\n- Signal: 2\/5"}