diff --git a/connections/connection-form.mdx b/connections/connection-form.mdx
index a40a97b3..9a564e93 100644
--- a/connections/connection-form.mdx
+++ b/connections/connection-form.mdx
@@ -88,7 +88,9 @@ session picks it up.
-A pre-connect script never runs unprompted. A **Pre-Connect Script** alert shows the script itself and waits for **Run Script**, every time. At launch it is not prompted for at all: a restored window whose connection carries a script waits with a **Connect** button.
+A pre-connect script never runs unprompted. A **Pre-Connect Script** alert shows the script itself and waits for **Run Script**, every time, whatever opens the connection: its window, a link, Compare, **Copy To**, the AI assistant, an MCP client or a script. With no answer in 60 seconds the alert closes as **Cancel**.
+
+A connect you did not start never runs the script. A restored window at launch, a table loading on its own and a reconnect after a tunnel drops all stop at a **Connect** button instead.
## Appearance
diff --git a/developers/applescript.mdx b/developers/applescript.mdx
index f2f08078..bb2e2f67 100644
--- a/developers/applescript.mdx
+++ b/developers/applescript.mdx
@@ -133,7 +133,9 @@ run query "SELECT 1" in connection "Production" ¬
```
Runs one statement and returns a `query result`. No window opens and no tab is disturbed; the
-connection opens first if it is closed, which can prompt for a password.
+connection opens first if it is closed, which can prompt for a password or ask to run the
+connection's pre-connect script. A script prompt nobody answers in 60 seconds closes, and the command
+fails with error -10000.
`row limit` defaults to 500 and caps at 10000. `timeout` defaults to 30 seconds and caps at 600.
Several statements in one call are refused, as are statements that read files or run server-side
diff --git a/developers/mcp-tools.mdx b/developers/mcp-tools.mdx
index f5a04b4d..c7371f78 100644
--- a/developers/mcp-tools.mdx
+++ b/developers/mcp-tools.mdx
@@ -39,6 +39,8 @@ Past the scope, a call clears three more gates:
2. **Connection policy.** **External Clients** set to **Blocked** hides the connection: `list_connections` omits it and any tool that names it is refused. An AI policy of **Never** does the same, except that [`purpose: "display"`](#listing-for-display) still lists it. Otherwise the first call that touches a connection asks the user, as often as **Settings > MCP > Approval** says. That question is always a dialog on the user's Mac, never an elicitation: a client that could answer it could also grant itself the connection. It has no deadline, so the client owns the timeout, and a refusal stands for 60 seconds before the question can be put again.
3. **Safe Mode.** A write goes through the connection's Safe Mode, which may ask the user to confirm it or to authenticate. See [Approvals](/developers/mcp-protocol#approvals-and-input-required).
+A call that has to open a connection with a pre-connect script also waits for the user to run the script, in a dialog on their Mac. **Cancel** returns `denied`. With no answer in 60 seconds the dialog closes and the call returns `timeout`.
+
`confirm_destructive_operation` needs `admin` as well, so it takes a Full Access token, and **Read Only** refuses it outright whatever the token carries. No token skips the user's approval.
Statements that read or write files, or that run server-side code, are refused on every tool. So is more than one statement in a single call, and a statement a `GO 5` line would run five times, except in a SQL Server script sent to [`execute_query`](#execute_query).
diff --git a/features/connection-sharing.mdx b/features/connection-sharing.mdx
index 18f51208..3e68e34b 100644
--- a/features/connection-sharing.mdx
+++ b/features/connection-sharing.mdx
@@ -36,7 +36,7 @@ The export sheet adds these options:
The saved query options appear only when there are saved queries to export, and they need no license. Saved queries are written as readable text unless **Include Credentials** encrypts the file. Version history, [linked SQL folders](/features/favorites#linked-sql-folders) and Team Library queries are never exported.
-**Copy Connection String** writes a database URL that carries the password in plain text, plus the SSH password when the connection tunnels. TablePro marks the clipboard item concealed, which keeps it out of the history of clipboard managers that follow that convention and out of nothing else. **Copy TablePro Link** and **Copy as JSON** carry no secrets.
+**Copy Connection String** writes a database URL that carries the password in plain text, plus the SSH password when the connection tunnels. TablePro marks the clipboard item concealed, which keeps it out of the history of clipboard managers that follow that convention and out of nothing else. **Copy TablePro Link** carries no secrets.
### Encrypted export
diff --git a/features/import-export.mdx b/features/import-export.mdx
index b8d2fefb..afb08483 100644
--- a/features/import-export.mdx
+++ b/features/import-export.mdx
@@ -247,7 +247,7 @@ Right-click tables in the sidebar and choose **Transfer To…** to copy their ro
Then tick the tables to copy.
- Each table is wrapped in its own transaction by default, so a table that fails leaves its own rows untouched and the ones before it committed.
+ The destination's [Safe Mode](/features/safe-mode) covers the whole transfer, with one confirmation and one Touch ID prompt where its level asks for them. Each table is wrapped in its own transaction by default, so a table that fails leaves its own rows untouched and the ones before it committed.
@@ -283,7 +283,7 @@ The extension picks the format, so one command covers all of them. A file no for
Encoding, transaction wrapping, and error handling for SQL; parsing and column mapping for CSV and JSON. TablePro remembers the options from your last successful import, and **Reset to Defaults** restores the stock ones.
- Check the preview, statement count, and file size, then click **Import**.
+ Check the preview, statement count, and file size, then click **Import**. The connection's [Safe Mode](/features/safe-mode) asks once for the whole file where its level calls for a confirmation or Touch ID.