You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor: simplify secret storage to keychain-only
- remove 1Password configuration paths from auth, CLI, MCP guidance, and docs
- fence keychain backend probes behind bounded timeouts so status and tool calls cannot hang the stdio transport
- add regression coverage for probe timeouts and bump the package version to 0.19.10
Copy file name to clipboardExpand all lines: .codex-plugin/plugin.json
+3-4Lines changed: 3 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -22,7 +22,7 @@
22
22
"interface": {
23
23
"displayName": "Notion Agent Labbook",
24
24
"shortDescription": "Connect a project to selected Notion pages and data sources with a local Internal Integration secret.",
25
-
"longDescription": "Notion Agent Labbook handles local Notion configuration and project binding for Codex, Claude Code, and other MCP clients. It uses a Notion Internal Integration secret directly, can open the Notion integrations dashboard for setup, detects whether system keychain and 1Password are available, and stores only non-secret project metadata in `.labbook/`.",
25
+
"longDescription": "Notion Agent Labbook handles local Notion configuration and project binding for Codex, Claude Code, and other MCP clients. It uses a Notion Internal Integration secret directly, can open the Notion integrations dashboard for setup, detects whether the local system keychain is available, and stores only non-secret project metadata in `.labbook/`.",
"Check the current project's Notion status and bound resources before assuming Notion is available.",
38
-
"If the project is not authenticated, use notion_prepare_internal_integration first so the user can get the Internal Integration Secret and inspect storage_options, storage_default, and storage_choice_required.",
39
-
"If storage_choice_required is true, ask whether the user wants keychain or 1password before calling notion_configure_internal_integration.",
40
-
"Use notion_configure_internal_integration to validate and store the secret with the chosen storage value.",
38
+
"If the project is not authenticated, use notion_prepare_internal_integration first so the user can get the Internal Integration Secret and inspect storage_options and storage_default.",
39
+
"Use notion_configure_internal_integration to validate and store the secret, or recommend `agent-labbook configure-secret --storage keychain` for a local hidden prompt.",
41
40
"Before choosing a binding UX, inspect notion_status.binding_recommendation and notion_status.binding_options.",
42
41
"Ask whether the user can paste exact Notion links. If yes, prefer notion_bind_resource_urls. If not and the environment is desktop-capable, prefer notion_open_binding_browser. Otherwise use notion_search_resources plus notion_discover_children and then notion_bind_resources.",
43
42
"Use notion_status or doctor for health checks, and return the official Notion API headers and bound resource IDs only when direct API calls are actually needed."
-`NOTION_AGENT_LABBOOK_TOKEN` is for CI or temporary overrides
56
49
57
50
## 3. Install The MCP Server
@@ -126,7 +119,7 @@ Typical flow:
126
119
|`notion_open_binding_browser`| Start a local browser-based chooser for selecting Notion roots. | No | No |
127
120
|`notion_list_bindings`| List the Notion resources currently bound to this project. | Yes | No |
128
121
|`notion_get_api_context`| Return the Internal Integration secret, official Notion API headers, and bound resource IDs for direct API calls. | Yes | No |
129
-
|`notion_clear_project_auth`| Remove the saved project-local session and delete the stored keychain or 1Password secret. | No | Yes |
122
+
|`notion_clear_project_auth`| Remove the saved project-local session and delete the stored keychain secret. | No | Yes |
130
123
131
124
### Resources (3)
132
125
@@ -155,7 +148,7 @@ Typical flow:
155
148
| Command | Description |
156
149
|---------|-------------|
157
150
|`agent-labbook mcp`| Run the MCP stdio server. |
158
-
|`agent-labbook configure-secret`| Prompt for the Notion Internal Integration secret and store it locally. Supports `--storage`, `--op-vault`, `--op-item-title`. |
151
+
|`agent-labbook configure-secret`| Prompt for the Notion Internal Integration secret and store it locally. Supports `--storage`. |
159
152
|`agent-labbook doctor`| Inspect local Notion Agent Labbook state and print diagnostics as JSON. |
160
153
|`agent-labbook print-mcp-config`| Print a reusable `uvx`-based MCP server config snippet. |
Copy file name to clipboardExpand all lines: skills/labbook/SKILL.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,7 @@ It is not a general Notion wrapper or task-management layer.
24
24
25
25
1. Call `notion_status` or read `labbook://agent-labbook/project/status`.
26
26
2. If the project is not authenticated, call `notion_prepare_internal_integration`.
27
-
3.Default to `agent-labbook configure-secret --storage keychain` on a workstation. Use `--storage 1password` only when the user explicitly wants 1Password.
27
+
3.Use `agent-labbook configure-secret --storage keychain` on a workstation so the secret is captured via a local hidden prompt and stored in the system keychain.
28
28
4. Use `notion_configure_internal_integration` only when the caller can safely provide the secret directly.
29
29
5. Remind the user to share the target pages or data sources with the integration bot inside Notion.
30
30
6. Prefer `notion_bind_resource_urls` for exact links, `notion_open_binding_browser` on desktop, or `notion_search_resources` plus `notion_discover_children` in headless environments.
@@ -45,4 +45,4 @@ It is not a general Notion wrapper or task-management layer.
45
45
- Do not assume Notion is connected for the current project until `notion_status` confirms it.
46
46
- Do not use `notion_get_api_context` as a health check; prefer `notion_status` and `notion_search_resources`.
47
47
- Reuse aliases from `notion_list_bindings` so later sessions stay consistent.
48
-
- Project-local state lives under `.labbook/` and should never be committed. The integration secret itself should come from system keychain, 1Password, or the process environment, not `.labbook/session.json`.
48
+
- Project-local state lives under `.labbook/` and should never be committed. The integration secret itself should come from the system keychain or the process environment, not `.labbook/session.json`.
"4. Call `notion_get_api_context` only when you are ready to use the official Notion API.",
68
65
"",
69
66
"Default workstation path: keychain.",
70
-
"Use `--storage 1password` only when you explicitly want 1Password.",
71
67
f"Use `{TOKEN_ENV_VAR}` only for CI or temporary overrides.",
72
68
"",
73
69
"## Security Notes",
74
70
"",
75
71
"- `NOTION_AGENT_LABBOOK_TOKEN` takes precedence over any locally stored secret for the current process and is intended for CI or temporary overrides.",
76
72
"- `agent-labbook configure-secret` uses a local hidden prompt so the secret does not need to be pasted into chat or shell history.",
77
-
"- When you choose `keychain`, the secret is stored in the local system credential store through Python `keyring`.",
78
-
"- When you choose `1password`, the secret is stored as a 1Password Password item and retrieved later with `op read`.",
73
+
"- The secret is stored in the local system credential store through Python `keyring`.",
79
74
"- Treat the integration secret like a password. Do not paste it into chat transcripts, logs, or committed files.",
0 commit comments