-
Notifications
You must be signed in to change notification settings - Fork 7
User Approval Flow for Package Installation #136
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I'm wondering if it'd make sense to have a setting which maps extensions with "approval" status? and by default, no extension is approved until a notification is displayed to the user asking for consent. I don't think we should pre-approve any extension, even if it's from Microsoft. I don't think this would be too noisy, since I don't expect package installation to be something that common on a session, especially coming from different providers/extensions 🤔 |
Agreed, in Jupyter extension we do the same |
hard to see sorry but began thinking of the flow, you can use mermaid.live to play around with it yourself
![]()
![]() |
Pylance Quickfix would probably use extension API so it would run into the same flow. For terminal CLI cases, I think, we can't control the flow. |
If the user selects a quick fix then it would be a user-initiated install instead of a background one right? So Ill add two different types of extension API flows, ones that are user-initiated and ones that are background. good point about terminal CLI- forgot about that aspect |
Thanks for prepping this! I also wanted to mention @StellaHuang95 is looking into package install flows in the upcoming iteration from Pylance's perspective, so I would love to discuss ways in which this flow could be aided with info from Pylance since these will be complementary. |
Outstanding questions:
|
I might be able to provide more feedback on the flows above once I see it in action but a couple of initial thoughts:
Could some of this flow be baked into setting up the default environment and package manager for a project? For example, could we set the "default" value for this to be "always ask" and then the user could go in and adjust this as desired. Looking forward to seeing more of this flow! |
To ensure a shared understanding are the below definitions/examples correct:
|
following quick chat with @cwebster-99 and @karthiknadig here are so new thoughts:
![]()
|
I like where this is at - thanks for updating based on all the back and forth! |
@karthiknadig and I discussed and these were the two designs that came up for the settings option A:
option B:
naming is also not determined so we need to get a setting name idea and what to call the different "alwaysAllow" and "alwaysAsk" settings. we also discussed the default to the setting maybe being this based off which of these the user has installed (i would add |
Following more recent meetings, here is the new proposed plan:
The flow will be as follows: To start (when first installing a pkg) the first menu will be shown to ANY extension that are not configured yet (ie the settings not saved in the secret storage)
Once an extension is saved into the secret storage with its package allow extension then menu is based on setting:
Finally there should be a way for a user to configure and look at their package installation setting stored in the secret settings. We should surface a menu or something where people can:
see updated wording as it stands now in the newest additions to the PR: be528ee |
Since this extension handles package installs, it should also correct communicate to the user about package installs and get user consent. The flow around package installs, user approval, when to allow background installs etc should be discussed and a plan outlined.
Security:
This is an important part of the user trust boundary as we should only have extensions install packages that have user consent. There could be different categories, trusted extensions that are allowed to install packages and untrusted extensions that need user consent to install.
Scenarios:
Questions:
The text was updated successfully, but these errors were encountered: