argent-settings-permissions
GitHub通过直接修改系统权限存储,在iOS模拟器或Android设备上预授权、拒绝或重置应用运行时权限(如相机、位置等),用于测试设置中绕过系统UI以自动化权限管理流程。
触发场景
安装
npx skills add software-mansion/argent --skill argent-settings-permissions -g -y
SKILL.md
Frontmatter
{
"name": "argent-settings-permissions",
"description": "Grant, deny, or reset an app's runtime permissions (camera, microphone, photos, contacts, notifications, calendar, location, location-always, media-library, motion, reminders) on an iOS simulator or Android device using the argent `settings-permissions` tool - without navigating the system Settings UI. Use when the permission cannot be changed through the app itself - and only then, pre-authorize before the app asks, deny up front, re-enable a permission the user already denied, or reset so the prompt reappears. If the app can flip it - via an in-app toggle or the system permission dialog the app triggers - interact with the app instead."
}
settings-permissions edits the platform's permission store directly (the iOS simulator's TCC database, Android's runtime permissions over adb). It is a test-setup / out-of-band tool, not a general permissions toggle: the default way to change a permission is still through the app. The tool's description covers the supported permissions per platform, the parameters, the result (applied / skipped) and the per-platform requirements.
When to use it - and when NOT to
The first matching row wins.
| Situation | Do this |
|---|---|
| The app has an in-app control for the permission (a toggle in its own settings screen) | Tap it in the app (describe → gesture-tap); it exercises the flow you're testing |
| The app asked and the system permission dialog is on screen | Tap the dialog (Allow / Don't Allow / Allow While Using App); describe exposes its buttons |
| The permission must be granted/denied before the app runs, so no dialog interrupts the flow | Use this tool (grant / deny) before launch-app |
| The user already denied it and you need it on again | Use this tool (grant): iOS never re-shows a dialog once denied |
| You need the first-run dialog to appear again | Use this tool (reset) |
| The permission is unsupported on the target platform, or it isn't one of the 11 runtime permissions (Wi-Fi, dark mode, VPN, Focus, …) | Do NOT use this tool: answer the app's dialog, or drive the Settings app or the app's own UI |
Rule of thumb: if a human tester could flip it inside the app, do that. Reach for settings-permissions only for a change a human would otherwise make in the system Settings app.
Gotchas
- iOS simulator only on Apple platforms. A physical iPhone has no host-side TCC switch, so the tool does not apply there.
- A pre-launch
denysuppresses the prompt on iOS only. On iOS a TCC denial answers the app's request, so no dialog appears. On Android adenyclears the grant but sets no "user-fixed" flag, so the app's next request still shows the system dialog: a pre-launchdenythere tests the revoked state, not a suppressed prompt. - Android
resetbelow API 33 can't clear "don't ask again". It revokes the grant, but clearing the user-fixed flag needs Android 13 / API 33+, so the dialog may stay suppressed on older devices. - Set permissions before
launch-app. A change can terminate a running app; if you change one while it runs,restart-appafterwards. - Android
location-always: agrantalso adds fine and coarse location, since background alone can't read location.
版本历史
- b965c94 当前 2026-11-07 15:13
- a0460ee 2026-07-24 11:28


