fix: a new account's first Claude session no longer opens on the bypass warning
--allow-dangerously-skip-permissions (bypass in the pane's shift+tab cycle) made Claude Code show its Bypass Permissions warning on any account that had not accepted it yet — every new member's first session, which the Chat UI cannot answer, though nobody asked for bypass. Now passed only when the run starts in bypassPermissions (asking is consent to see it) or the account's user settings already hold skipDangerousModePermissionPrompt (pty-run bypassAccepted; a member's read owner-checked from their home). The host, which accepted long ago, keeps the flag. Test: pty-run.
This commit is contained in:
@@ -374,7 +374,27 @@ describe("pty-run", () => {
|
||||
if (args[0] === "new-session") newSessionArgv = args;
|
||||
return "";
|
||||
});
|
||||
pty.spawnRun({ laneId: 4, cwd: "/tmp/repo" });
|
||||
const prevHome = process.env.CLAUDE_HOME;
|
||||
const home = fs.mkdtempSync(path.join(os.tmpdir(), "bypass-home-"));
|
||||
process.env.CLAUDE_HOME = home;
|
||||
try {
|
||||
// An account that never accepted the bypass warning: no flag, so its
|
||||
// first session does not open on that warning (the Chat UI can't answer).
|
||||
pty.spawnRun({ laneId: 4, cwd: "/tmp/repo" });
|
||||
assert.ok(!newSessionArgv.includes("--allow-dangerously-skip-permissions"));
|
||||
// ...unless the run asks for bypass itself: then the warning is wanted.
|
||||
pty.spawnRun({ laneId: 4, cwd: "/tmp/repo", permissionMode: "bypassPermissions" });
|
||||
assert.ok(newSessionArgv.includes("--allow-dangerously-skip-permissions"));
|
||||
fs.writeFileSync(
|
||||
path.join(home, "settings.json"),
|
||||
JSON.stringify({ skipDangerousModePermissionPrompt: true })
|
||||
);
|
||||
pty.spawnRun({ laneId: 4, cwd: "/tmp/repo" });
|
||||
} finally {
|
||||
if (prevHome === undefined) delete process.env.CLAUDE_HOME;
|
||||
else process.env.CLAUDE_HOME = prevHome;
|
||||
fs.rmSync(home, { recursive: true, force: true });
|
||||
}
|
||||
assert.ok(newSessionArgv.includes("--allow-dangerously-skip-permissions"));
|
||||
// ...as an OPTION only: the starting mode stays the requested one, and
|
||||
// `--dangerously-skip-permissions` (which would enable it) is never passed.
|
||||
|
||||
Reference in New Issue
Block a user