Describe the Bug
In previous versions, I created some user rules and pasted them into the Cursor Settings > Rules > User Rules text input box. This was some markdown content titled “Jupyter Notebook Rules for Cursor (Using notebook_mcp” (mentioning this so you can see it in the proxy log output below). I was able to edit these rules fine previously.
Now I want to remove these rules completely. I experienced some very “instable” UI interactions with the current Cursor Settings > Rules > User Rules section. It (a) showed “No User Rules Yet” at first, but when I start a conversation with an agent suddenly I would see my rules appear. (b) I went to edit those rules, and Save did not work. (c) I went to delete those rules, but delete did not work. (e) I quit and restarted, and saw no rules, but then starting a conversation with an agent they would suddenly load in. (f) I close the project, created a new blank one, quit and restarted. It looked like no rules were there. I start a conversation with an agent, my old rules came back. (g) I tried to then edit those rules to overwrite it, and it did. My edits show up as “Migrated User Rules” via proxy inspection. And now I’m seeing my edited rules in the Cursor Settings > Rules > User Rules UI. (h) However, I still see the old Cursor Rules from prior version appended in the proxy traffic I’m inspecting. I don’t know where they are coming from.
At first I thought these might have been stored in the cloud somewhere. I removed all the rules from the UI and verified I had no files locally, and no files in ~/.cursor, and I was still seeing them appear.
However, I found I was able to clear them by completely uninstalling Cursor, signing out, restarting, re-downloading and re-installing, and signing in fresh. I deleted the application, and associated folders/files here:
rm -rf ~/Library/Application\ Support/Cursor
rm -rf ~/.cursor
rm -rf ~/Library/Preferences/com.todesktop.230313mzl4w4u92.plist
rm -rf ~/Library/Caches/com.todesktop.230313mzl4w4u92
rm -rf ~/Library/Caches/com.todesktop.230313mzl4w4u92.ShipIt
Steps to Reproduce
- Hopefully you have some old User Rules in Cursor from prior version
- Upgrade to the 1.0.0 release
- Go try to manage Cursor Settings > Rules > User Rules and you should see no rules
- Keep the UI for Cursor Settings > Rules visible while you open a chat session with an agent
- Start a conversation with an agent and you should see the old rules load into the Cursor Settings > User Rules panel
- Try to edit those rules and it may save the changes
- Try to delete the rules and it may or may not appear to work
- Quit Cursor and load it back up
- Start mitmproxy and mitmweb (now, your luck may vary here, I created an inspector that parses the protobuf to see the content, not sure what you see by default)
- Go to Cursor and into VS Code Settings and search for “proxy”, set HTTP: Proxy to the port that mitmproxy is running on
- Verify you have no Cursor Rules (no User Rules, no Project Rules), no .cursorrules file, no .cursor directory with any rules files in it, all the toggle switches are disabled in Cursor Settings > Rules. Memories are off as well
- Chat with the agent, ask it anything
- In mitmproxy if you decode the protobuf you will see a conversation summary from GetConversationSummary that includes the question, the model thinking, the answer, and then your old Cursor Rules content appended to it
Expected Behavior
There should be no appending of old cursor rules as context in Conversation Summaries from prior versions that you cannot see and manage anywhere.
Screenshots / Screen Recordings
Operating System
MacOS
Current Cursor Version (Menu → About Cursor → Copy)
Version: 1.0.0 (Universal)
VSCode Version: 1.96.2
Commit: 53b99ce608cba35127ae3a050c1738a959750860
Date: 2025-06-04T19:21:39.410Z
Electron: 34.5.1
Chromium: 132.0.6834.210
Node.js: 20.19.0
V8: 13.2.152.41-electron.0
OS: Darwin arm64 24.5.0
Additional Information
2025-06-06 19:15:52,749 - inspector - DEBUG - ================================================================================
2025-06-06 19:15:52,749 - inspector - DEBUG - [RAW PROTOBUF] GetConversationSummary Response Analysis:
2025-06-06 19:15:52,749 - inspector - DEBUG - ================================================================================
2025-06-06 19:15:52,750 - inspector - DEBUG - [RAW PROTOBUF] Endpoint: /aiserver.v1.ChatService/GetConversationSummary
2025-06-06 19:15:52,750 - inspector - DEBUG - [RAW PROTOBUF] Content length: 8229 bytes
2025-06-06 19:15:52,757 - inspector - DEBUG - [RAW PROTOBUF] Raw bytes (first 200): b’\n\x8d\x03\n\x18what does pythonic mean?\x10\x01j$2787f0d9-4aeb-427b-b80f-d67bff0c2ded\xe8\x01\x01\xf8\x02\x02\x9a\x03\x18\x01\x03\x05\x06\x07\x08\t\x0b\x0c\x0e\x0f\x11\x12\x14\x13\x15\x16\x17\x18\x1b\x1c\x1d\x1e\x1f\xa8\x03\x01\xca\x03\xa0\x02{“root”:{“children”:[{“children”:[{“detail”:0,“format”:0,“mode”:“normal”,“style”:“”,“text”:’
2025-06-06 19:15:52,757 - inspector - DEBUG - [RAW PROTOBUF] Raw bytes (last 200): b’d9-4aeb-427b-b80f-d67bff0c2ded\x18\x01\xf2\x01N\n$869cbc48-e823-4842-882d-1de394ef469a\x12$c74d6d00-e24f-416b-bd76-6e5284f9d32d\x18\x02\xf2\x01(\n$1286c5e0-a586-46ea-b00d-fe5c87282ed4\x18\x02\xf8\x01\x01\x98\x02\x00\xb0\x02\x00\xf0\x02\x02\xfa\x02\x03\x12\x07\x18\x80\x03\x00\x88\x03\x00\x98\x03\x00\xa8\x03\x00\xb2\x03\x05Agent\xc8\x03\x01\x88\x04\x01’
2025-06-06 19:15:52,757 - inspector - DEBUG - [RAW PROTOBUF] UTF-8 decoded length: 8181 chars
2025-06-06 19:15:52,758 - inspector - DEBUG - [RAW PROTOBUF] UTF-8 decoded (repr): ‘\n\x03\n\x18what does pythonic mean?\x10\x01j$2787f0d9-4aeb-427b-b80f-d67bff0c2ded\x01\x01\x02\x02\x03\x18\x01\x03\x05\x06\x07\x08\t\x0b\x0c\x0e\x0f\x11\x12\x14\x13\x15\x16\x17\x18\x1b\x1c\x1d\x1e\x1f\x03\x01\x03\x02{“root”:{“children”:[{“children”:[{“detail”:0,“format”:0,“mode”:“normal”,“style”:“”,“text”:“what does pythonic mean?”,“type”:“text”,“version”:1}],“direction”:“ltr”,“format”:“”,“indent”:0,“type”:“paragraph”,“version”:1}],“direction”:“ltr”,“format”:“”,“indent”:0,“type”:“root”,“version”:1}}\x03\x00\n\x0c\x10\x02j$869cbc48-e823-4842-882d-1de394ef469a\x02$c74d6d00-e24f-416b-bd76-6e5284f9d32d\x02\x0b\n\x04The user is asking what “pythonic” means. This is a conceptual question about Python programming philosophy and best practices, not a request to modify code or search through a codebase. Since this is a general knowledge question about Python programming concepts, I don't need to use any tools - I can answer this directly based on my knowledge.\n\nThe term “pythonic” refers to code that follows Python's design philosophy and idioms, making it readable, elegant, and following the conventions of the Python community.\x12\x07ErAFCkYIBBgCKkB94vKc07v2dVXljMiCjaCQKj6/X5RrqRfHzKNcvgM6GL//G/VighQWOCJA1O5/bJA6WD5QwntFWTrFaR+a4C7xEgwI4HXVvvmCj8M1agAaDOkHdGJWfHBGLGOwcSIwgN0mTLly3TLh9YV11ocKH3AXTTGZTWj0WMAYBV5B+UlOlgcPwe71KTb+rm3HcBcDKpcE0ekqopR8ee0dHbxKbdBcChNvnNcR+SlXx5lDRDfimPcz4fgDqbW3YD/+LdXdb9oQvB73TfOgpt1no8tbAhX6FlrMKBCVESBDpfrLgahpa2JPTVOe6PLDtazfPyXRWy7kD/vF6hrU2zUgJNkK/qYQ1KsnZlkR42Q1q9szDNajMS7Sk2HpukIMVsvWsJ3NSUqYgR5ppInap+9LKMf1voAHXYimnhtgfmyOwDGHVH4T8lWODFhBjqH2yfePiZxU8u7kMdc8Sy8ahfnKzz1bbD8/ig0upAmIjT1adpFCBNiOoaHsvK/afWEnuqzopDGG4mQyuKnlRPMVTH+8bUmnuPAeSoGLBxLVnksM7rfAQWFCbLswGKwh0jPknfE3Hxm6pKftL9hfr931KBiV/Mh1t2zmMnr6bz6jlRgJp0D5L+7w/oMGkcPK8/0X3Hmv5mon14YHX3Gfp7TkmWdo9VQc73cT0RIAao46BxkBDqlsExDnrJbCcwVo1gey+HdwjkOIuK0vTh91mnlbTUKLOfskExFxCaYaBCGcSJ1zE8iWKncnMwF8BwZjfT0Ybiy30djmH5hGytA1OwanYZRpNodT1z0fWUwWLDqBiL1WAjcM4yGtA69MLxaAKtBJEbmb7d0q3XKg6Rnjkk/W17iSOChhn2I5oqkX08ObsCKunaykhHvfJddvLIWEy3LQ5yGnUwhclhy3yCacuN0hshgB\x02\x02\x03$d7460282-722d-4ea0-ad7d-cc58fb5bdf95\x03\x00\x04\x16\n\x0f\n\x0e"Pythonic" refers to code that follows Python's design philosophy, idioms, and best practices. It describes writing code in a way that is natural, readable, and idiomatic to Python, rather than forcing patterns from other programming languages.\n\nHere are the key aspects of pythonic code:\n\n## The Zen of Python\nPythonic code follows the principles outlined in PEP 20 (The Zen of Python), which you can see by running import this
in Python. Key principles include:\n- Beautiful is better than ugly\n- Explicit is better than implicit\n- Simple is better than complex\n- Readability counts\n- There should be one obvious way to do it\n\n## Common Pythonic Patterns\n\nList Comprehensions instead of explicit loops:\npython\n# Pythonic\nsquares = [x**2 for x in range(10)]\n\n# Less pythonic\nsquares = []\nfor x in range(10):\n squares.append(x**2)\n
\n\nUsing enumerate()
and zip()
:\npython\n# Pythonic\nfor i, item in enumerate(items):\n print(f"{i}: {item}")\n\n# Less pythonic\nfor i in range(len(items)):\n print(f"{i}: {items[i]}")\n
\n\nContext managers for resource handling:\npython\n# Pythonic\nwith open(\'file.txt\') as f:\n content = f.read()\n\n# Less pythonic\nf = open(\'file.txt\')\ncontent = f.read()\nf.close()\n
\n\nUsing if __name__ == "__main__"
for script execution\n\nFollowing naming conventions (snake_case for variables/functions, PascalCase for classes)\n\n## What Makes Code “Pythonic”\n- Readable and clear: Code should be easy to understand\n- Concise but not cryptic: Leverages Python's expressiveness without being obscure\n- Uses Python idioms: Takes advantage of Python's built-in functions and language features\n- Follows conventions: Adheres to PEP 8 style guidelines and community standards\n\nWriting pythonic code makes your programs more maintainable, readable by other Python developers, and takes full advantage of what Python offers as a language.\x10\x02j$1286c5e0-a586-46ea-b00d-fe5c87282ed4\x02\x02\x03$d7460282-722d-4ea0-ad7d-cc58fb5bdf95\x03\x00\x10\x01\x1a\x1c\n\x1c### Jupyter Notebook Rules for Cursor (Using notebook_mcp):\n\n1. IMPORTANT - Markdown Formatting:\n * When creating or editing markdown cells, use actual newlines for paragraph breaks, not literal \\n\\n
strings.\n * CORRECT: "## Title\\n\\nThis is a paragraph."
\n * INCORRECT: "## Title\\\\n\\\\nThis is a paragraph."
\n * After editing cells, always use notebook_read_cell
to verify proper formatting.\n\n2. Tool Usage:\n * Always use notebook_mcp
tools for .ipynb
files, never edit_file
.\n * Verify changes after making them with notebook_read_cell
or notebook_read
.\n\n3. Path Resolution for Notebooks:\n * Initial Step: At the beginning of notebook operations, or if path ambiguity exists, call notebook_get_server_path_context
(providing the current project_directory
).\n * Use its output (allowed_roots
, server_path_style
, project_directory_status
, effective_notebook_base_path_for_project
, path_construction_guidance
) to determine how to construct notebook_path
arguments for all other notebook tools.\n * Goal: For unqualified notebook names (e.g., my_notebook.ipynb
), the notebook_path
sent to tools should correctly target the user's current project directory by leveraging the effective_notebook_base_path_for_project
(e.g., project_name/my_notebook.ipynb
).\n * If the project_directory_status
is outside_allowed_roots
or resolution_error
, inform the user and proceed with caution, relying on their explicit path guidance or warning about potential issues.\n * For explicit user-provided paths (e.g., ../another_project/data.ipynb
or absolute paths), use them as given, but warn if they appear to be outside the server's allowed_roots
based on the context tool's output.\n * The server ultimately resolves paths relative to its configured allowed_root
(s). The context tool helps align client-side path construction with server-side expectations.\n\n4. Character Escaping:\n * For LaTeX: Use single backslashes (e.g., \\alpha
, not \\\\alpha
).\n * For newlines: Use actual newlines in the string, not escaped \\\\n
.\n * For display math: Use $$..$$
not \\\\[..\\]
.\n\n5. Investigation Before Editing:\n * Use notebook_get_outline
and notebook_search
first to understand notebook structure.\n * Read existing cells with notebook_read_cell
before modifying them.\n\n6. Available Tools by Category:\n * Path & Server Context: notebook_get_server_path_context
\n * Navigation & Discovery: notebook_get_outline
, notebook_search
, notebook_get_info
, notebook_get_cell_count
\n * File Operations: notebook_create
, notebook_delete
, notebook_rename
, notebook_read
, notebook_export
\n * Cell Operations: notebook_read_cell
, notebook_add_cell
, notebook_edit_cell
, notebook_delete_cell
, notebook_bulk_add_cells
\n * Cell Transformations: notebook_change_cell_type
, notebook_move_cell
, notebook_split_cell
, notebook_merge_cells
, notebook_duplicate_cell
\n * Metadata & Output: notebook_read_metadata
, notebook_edit_metadata
, notebook_read_cell_metadata
, notebook_edit_cell_metadata
, notebook_read_cell_output
, notebook_edit_cell_output
, notebook_clear_cell_outputs
, notebook_clear_all_outputs
\n * Validation: notebook_validate
\n\n7. Cell Magics & Rich Output:\n * Use !command
for shell commands (not %%bash
).\n * Matplotlib, Pandas, and HTML in markdown render correctly.\n * Avoid %%writefile
and similar unsupported magics.\n\n8. Visibility Mode (Less Waiting):\n * Optimize for visibility and transparency during long edits\n * Create notebooks and make edits with incremental tool calls \x01*\x1e\n\x18claude-4-sonnet-thinking"\x00@\x00z\x1f\n\x11cursor/aisettings\x1a\x002\x04\n\x00\x12\x00@\x01H\x01\x01\x01\x01$01234-abcdef-01234-abcdef-01234-abcdef\x01c\n\x01.“$01234-abcdef-01234-abcdef-01234-abcdef*-google-oauth2|user_01ABCDEFGHIJKLMNOPQRSTUVWXYZ\x0f_7\x0ei<CP\x00\x01[\n\x06darwin\x12\x05arm64\x1a\x0624.5.0”\x08/bin/zsh*\x182025-06-07T02:15:52.565Z2\x1efile:///Users/someone/somedir/new_test\x01\x01\x01\x18\x01\x03\x05\x06\x07\x08\t\x0b\x0c\x0e\x0f\x11\x12\x14\x13\x15\x16\x17\x18\x1b\x1c\x1d\x1e\x1f\x01(\n$2787f0d9-4aeb-427b-b80f-d67bff0c2ded\x18\x01\x01N\n$869cbc48-e823-4842-882d-1de394ef469a\x12$c74d6d00-e24f-416b-bd76-6e5284f9d32d\x18\x02\x01(\n$1286c5e0-a586-46ea-b00d-fe5c87282ed4\x18\x02\x01\x01\x02\x00\x02\x00\x02\x02\x02\x03\x12\x07\x18\x03\x00\x03\x00\x03\x00\x03\x00\x03\x05Agent\x03\x01\x04\x01’
2025-06-06 19:15:52,758 - inspector - DEBUG - [RAW PROTOBUF] UTF-8 decoded (first 500):
what does pythonic mean?j$2787f0d9-4aeb-427b-b80f-d67bff0c2ded
"root":{"children":[{"children":[{"detail":0,"format":0,"mode":"normal","style":"","text":"what does pythonic mean?","type":"text","version":1}],"direction":"ltr","format":"","indent":0,"type":"paragraph","version":1}],"direction":"ltr","format":"","indent":0,"type":"root","version":1}}
j$869cbc48-e823-4842-882d-1de394ef469a$c74d6d00-e24f-416b-bd76-6e5284f9d32d
The user is asking what
2025-06-06 19:15:52,758 - inspector - DEBUG - [RAW PROTOBUF] UTF-8 decoded (last 500): inking"@z
cursor/aisettings2
@H$01234-abcdef-01234-abcdef-01234-abcdefc
."$01234-abcdef-01234-abcdef-01234-abcdef*-google-oauth2|user_01ABCDEFGHIJKLMNOPQRSTUVWXYZ_7i<CP[
darwinarm6424.5.0/bin/zsh*2025-06-07T02:15:52.565Z2file:///Users/someone/somedir/new_test
2787f0d9-4aeb-427b-b80f-d67bff0c2dedN
$869cbc48-e823-4842-882d-1de394ef469a$c74d6d00-e24f-416b-bd76-6e5284f9d32d(
$1286c5e0-a586-46ea-b00d-fe5c87282ed4Agent
2025-06-06 19:15:52,758 - inspector - DEBUG - [RAW PROTOBUF] Cleaned text length: 8016 chars
2025-06-06 19:15:52,758 - inspector - DEBUG - [RAW PROTOBUF] Cleaned text:
what does pythonic mean?j$2787f0d9-4aeb-427b-b80f-d67bff0c2ded {“root”:{“children”:[{“children”:[{“detail”:0,“format”:0,“mode”:“normal”,“style”:“”,“text”:“what does pythonic mean?”,“type”:“text”,“version”:1}],“direction”:“ltr”,“format”:“”,“indent”:0,“type”:“paragraph”,“version”:1}],“direction”:“ltr”,“format”:“”,“indent”:0,“type”:“root”,“version”:1}}
j$869cbc48-e823-4842-882d-1de394ef469a$c74d6d00-e24f-416b-bd76-6e5284f9d32d
The user is asking what “pythonic” means. This is a conceptual question about Python programming philosophy and best practices, not a request to modify code or search through a codebase. Since this is a general knowledge question about Python programming concepts, I don’t need to use any tools - I can answer this directly based on my knowledge.
The term “pythonic” refers to code that follows Python’s design philosophy and idioms, making it readable, elegant, and following the conventions of the Python community.ErAFCkYIBBgCKkB94vKc07v2dVXljMiCjaCQKj6/X5RrqRfHzKNcvgM6GL//G/VighQWOCJA1O5/bJA6WD5QwntFWTrFaR+a4C7xEgwI4HXVvvmCj8M1agAaDOkHdGJWfHBGLGOwcSIwgN0mTLly3TLh9YV11ocKH3AXTTGZTWj0WMAYBV5B+UlOlgcPwe71KTb+rm3HcBcDKpcE0ekqopR8ee0dHbxKbdBcChNvnNcR+SlXx5lDRDfimPcz4fgDqbW3YD/+LdXdb9oQvB73TfOgpt1no8tbAhX6FlrMKBCVESBDpfrLgahpa2JPTVOe6PLDtazfPyXRWy7kD/vF6hrU2zUgJNkK/qYQ1KsnZlkR42Q1q9szDNajMS7Sk2HpukIMVsvWsJ3NSUqYgR5ppInap+9LKMf1voAHXYimnhtgfmyOwDGHVH4T8lWODFhBjqH2yfePiZxU8u7kMdc8Sy8ahfnKzz1bbD8/ig0upAmIjT1adpFCBNiOoaHsvK/afWEnuqzopDGG4mQyuKnlRPMVTH+8bUmnuPAeSoGLBxLVnksM7rfAQWFCbLswGKwh0jPknfE3Hxm6pKftL9hfr931KBiV/Mh1t2zmMnr6bz6jlRgJp0D5L+7w/oMGkcPK8/0X3Hmv5mon14YHX3Gfp7TkmWdo9VQc73cT0RIAao46BxkBDqlsExDnrJbCcwVo1gey+HdwjkOIuK0vTh91mnlbTUKLOfskExFxCaYaBCGcSJ1zE8iWKncnMwF8BwZjfT0Ybiy30djmH5hGytA1OwanYZRpNodT1z0fWUwWLDqBiL1WAjcM4yGtA69MLxaAKtBJEbmb7d0q3XKg6Rnjkk/W17iSOChhn2I5oqkX08ObsCKunaykhHvfJddvLIWEy3LQ5yGnUwhclhy3yCacuN0hshgB$d7460282-722d-4ea0-ad7d-cc58fb5bdf95
“Pythonic” refers to code that follows Python’s design philosophy, idioms, and best practices. It describes writing code in a way that is natural, readable, and idiomatic to Python, rather than forcing patterns from other programming languages.
Here are the key aspects of pythonic code:
The Zen of Python
Pythonic code follows the principles outlined in PEP 20 (The Zen of Python), which you can see by running import this
in Python. Key principles include:
- Beautiful is better than ugly
- Explicit is better than implicit
- Simple is better than complex
- Readability counts
- There should be one obvious way to do it
Common Pythonic Patterns
List Comprehensions instead of explicit loops:
# Pythonic
squares = [x**2 for x in range(10)]
# Less pythonic
squares = []
for x in range(10):
squares.append(x**2)
Using enumerate()
and zip()
:
# Pythonic
for i, item in enumerate(items):
print(f"{i}: {item}")
# Less pythonic
for i in range(len(items)):
print(f"{i}: {items[i]}")
Context managers for resource handling:
# Pythonic
with open('file.txt') as f:
content = f.read()
# Less pythonic
f = open('file.txt')
content = f.read()
f.close()
Using if __name__ == "__main__"
for script execution
Following naming conventions (snake_case for variables/functions, PascalCase for classes)
What Makes Code “Pythonic”
- Readable and clear: Code should be easy to understand
- Concise but not cryptic: Leverages Python’s expressiveness without being obscure
- Uses Python idioms: Takes advantage of Python’s built-in functions and language features
- Follows conventions: Adheres to PEP 8 style guidelines and community standards
Writing pythonic code makes your programs more maintainable, readable by other Python developers, and takes full advantage of what Python offers as a language.j$1286c5e0-a586-46ea-b00d-fe5c87282ed4$d7460282-722d-4ea0-ad7d-cc58fb5bdf95
Jupyter Notebook Rules for Cursor (Using notebook_mcp):
-
IMPORTANT - Markdown Formatting:
- When creating or editing markdown cells, use actual newlines for paragraph breaks, not literal
\n\n
strings. - CORRECT:
"## Title\n\nThis is a paragraph."
- INCORRECT:
"## Title\\n\\nThis is a paragraph."
- After editing cells, always use
notebook_read_cell
to verify proper formatting.
- When creating or editing markdown cells, use actual newlines for paragraph breaks, not literal
-
Tool Usage:
- Always use
notebook_mcp
tools for.ipynb
files, neveredit_file
. - Verify changes after making them with
notebook_read_cell
ornotebook_read
.
- Always use
-
Path Resolution for Notebooks:
- Initial Step: At the beginning of notebook operations, or if path ambiguity exists, call
notebook_get_server_path_context
(providing the currentproject_directory
). - Use its output (
allowed_roots
,server_path_style
,project_directory_status
,effective_notebook_base_path_for_project
,path_construction_guidance
) to determine how to constructnotebook_path
arguments for all other notebook tools. - Goal: For unqualified notebook names (e.g.,
my_notebook.ipynb
), thenotebook_path
sent to tools should correctly target the user’s current project directory by leveraging theeffective_notebook_base_path_for_project
(e.g.,project_name/my_notebook.ipynb
). - If the
project_directory_status
isoutside_allowed_roots
orresolution_error
, inform the user and proceed with caution, relying on their explicit path guidance or warning about potential issues. - For explicit user-provided paths (e.g.,
../another_project/data.ipynb
or absolute paths), use them as given, but warn if they appear to be outside the server’sallowed_roots
based on the context tool’s output. - The server ultimately resolves paths relative to its configured
allowed_root
(s). The context tool helps align client-side path construction with server-side expectations.
- Initial Step: At the beginning of notebook operations, or if path ambiguity exists, call
-
Character Escaping:
- For LaTeX: Use single backslashes (e.g.,
\alpha
, not\\alpha
). - For newlines: Use actual newlines in the string, not escaped
\\n
. - For display math: Use
$$..$$
not\\[..\]
.
- For LaTeX: Use single backslashes (e.g.,
-
Investigation Before Editing:
- Use
notebook_get_outline
andnotebook_search
first to understand notebook structure. - Read existing cells with
notebook_read_cell
before modifying them.
- Use
-
Available Tools by Category:
- Path & Server Context:
notebook_get_server_path_context
- Navigation & Discovery:
notebook_get_outline
,notebook_search
,notebook_get_info
,notebook_get_cell_count
- File Operations:
notebook_create
,notebook_delete
,notebook_rename
,notebook_read
,notebook_export
- Cell Operations:
notebook_read_cell
,notebook_add_cell
,notebook_edit_cell
,notebook_delete_cell
,notebook_bulk_add_cells
- Cell Transformations:
notebook_change_cell_type
,notebook_move_cell
,notebook_split_cell
,notebook_merge_cells
,notebook_duplicate_cell
- Metadata & Output:
notebook_read_metadata
,notebook_edit_metadata
,notebook_read_cell_metadata
,notebook_edit_cell_metadata
,notebook_read_cell_output
,notebook_edit_cell_output
,notebook_clear_cell_outputs
,notebook_clear_all_outputs
- Validation:
notebook_validate
- Path & Server Context:
-
Cell Magics & Rich Output:
- Use
!command
for shell commands (not%%bash
). - Matplotlib, Pandas, and HTML in markdown render correctly.
- Avoid
%%writefile
and similar unsupported magics.
- Use
-
Visibility Mode (Less Waiting):
- Optimize for visibility and transparency during long edits
- Create notebooks and make edits with incremental tool calls *
claude-4-sonnet-thinking"@z
cursor/aisettings2
@H$01234-abcdef-01234-abcdef-01234-abcdefc
.“$01234-abcdef-01234-abcdef-01234-abcdef*-google-oauth2|user_01ABCDEFGHIJKLMNOPQRSTUVWXYZ_7i<CP[
darwinarm6424.5.0”/bin/zsh*2025-06-07T02:15:52.565Z2file:///Users/someone/somedir/new_test (
$2787f0d9-4aeb-427b-b80f-d67bff0c2dedN
$869cbc48-e823-4842-882d-1de394ef469a$c74d6d00-e24f-416b-bd76-6e5284f9d32d(
$1286c5e0-a586-46ea-b00d-fe5c87282ed4Agent
2025-06-06 19:15:52,759 - inspector - DEBUG - ================================================================================
2025-06-06 19:15:52,759 - inspector - DEBUG - [END RAW PROTOBUF ANALYSIS]
2025-06-06 19:15:52,759 - inspector - DEBUG - ================================================================================
Does this stop you from using Cursor
Sometimes - I can sometimes use Cursor