{"id":13468204,"url":"https://github.com/mas-cli/mas","last_synced_at":"2026-02-18T04:01:07.452Z","repository":{"id":35809839,"uuid":"40092232","full_name":"mas-cli/mas","owner":"mas-cli","description":":package: Mac App Store command-line interface","archived":false,"fork":false,"pushed_at":"2026-01-30T02:51:05.000Z","size":4637,"stargazers_count":11963,"open_issues_count":88,"forks_count":291,"subscribers_count":97,"default_branch":"main","last_synced_at":"2026-01-30T19:54:50.101Z","etag":null,"topics":["app-store","homebrew","mac-app-store","macos","mas","osx","software-update"],"latest_commit_sha":null,"homepage":"","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mas-cli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-08-02T20:43:12.000Z","updated_at":"2026-01-30T13:29:07.000Z","dependencies_parsed_at":"2022-08-08T13:00:30.203Z","dependency_job_id":"34d428f4-f77f-4f77-b8eb-84ea1fbbfffb","html_url":"https://github.com/mas-cli/mas","commit_stats":{"total_commits":1035,"total_committers":49,"mean_commits":"21.122448979591837","dds":0.4164251207729469,"last_synced_commit":"4c044d8b649989e924e11252b2e063a81c60d866"},"previous_names":[],"tags_count":127,"template":false,"template_full_name":null,"purl":"pkg:github/mas-cli/mas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mas-cli%2Fmas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mas-cli%2Fmas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mas-cli%2Fmas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mas-cli%2Fmas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mas-cli","download_url":"https://codeload.github.com/mas-cli/mas/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mas-cli%2Fmas/sbom","scorecard":{"id":622547,"data":{"date":"2025-08-11","repo":{"name":"github.com/mas-cli/mas","commit":"45882100ce92c86c552b78cefd5e5ce9136ff4f3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/8 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Info: Possibly incomplete results: error parsing shell code: parameter expansion requires a literal: .github/workflows/tag-pushed.yaml:74","Info: Possibly incomplete results: error parsing shell code: parameter expansion requires a literal: .github/workflows/tag-pushed.yaml:101","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-test.yaml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/mas-cli/mas/build-test.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yaml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/mas-cli/mas/codeql.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yaml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/mas-cli/mas/codeql.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yaml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/mas-cli/mas/codeql.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-published.yaml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/mas-cli/mas/release-published.yaml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tag-pushed.yaml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/mas-cli/mas/tag-pushed.yaml/main?enable=pin","Info:   0 out of   6 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: found token with 'none' permissions: .github/workflows/build-test.yaml:1","Warn: no topLevel permission defined: .github/workflows/codeql.yaml:1","Info: topLevel 'actions' permission set to 'read': .github/workflows/release-published.yaml:10","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release-published.yaml:11","Warn: topLevel 'contents' permission set to 'write': .github/workflows/tag-pushed.yaml:10","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v2.3.0 not signed: https://api.github.com/repos/mas-cli/mas/releases/236427337","Warn: release artifact v2.2.2 not signed: https://api.github.com/repos/mas-cli/mas/releases/215633213","Warn: release artifact v2.2.1 not signed: https://api.github.com/repos/mas-cli/mas/releases/214694521","Warn: release artifact v2.2.0 not signed: https://api.github.com/repos/mas-cli/mas/releases/214682281","Warn: release artifact v2.1.0 not signed: https://api.github.com/repos/mas-cli/mas/releases/212106577","Warn: release artifact v2.3.0 does not have provenance: https://api.github.com/repos/mas-cli/mas/releases/236427337","Warn: release artifact v2.2.2 does not have provenance: https://api.github.com/repos/mas-cli/mas/releases/215633213","Warn: release artifact v2.2.1 does not have provenance: https://api.github.com/repos/mas-cli/mas/releases/214694521","Warn: release artifact v2.2.0 does not have provenance: https://api.github.com/repos/mas-cli/mas/releases/214682281","Warn: release artifact v2.1.0 does not have provenance: https://api.github.com/repos/mas-cli/mas/releases/212106577"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":8,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'main'","Info: 'force pushes' disabled on branch 'main'","Warn: 'branch protection settings apply to administrators' is disabled on branch 'main'","Info: 'stale review dismissal' is required to merge on branch 'main'","Warn: required approving review count is 1 on branch 'main'","Info: codeowner review is required on branch 'main'","Info: 'last push approval' is required to merge on branch 'main'","Info: 'up-to-date branches' is required to merge on branch 'main'","Info: status check found to merge onto on branch 'main'","Info: PRs are required in order to make changes on branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":10,"reason":"SAST tool is run on all commits","details":["Info: SAST configuration detected: CodeQL","Info: all commits (30) are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T05:30:33.874Z","repository_id":35809839,"created_at":"2025-08-21T05:30:33.874Z","updated_at":"2025-08-21T05:30:33.874Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29567616,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T00:47:08.760Z","status":"online","status_checked_at":"2026-02-18T02:00:09.468Z","response_time":162,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app-store","homebrew","mac-app-store","macos","mas","osx","software-update"],"created_at":"2024-07-31T15:01:07.048Z","updated_at":"2026-02-18T04:01:07.424Z","avatar_url":"https://github.com/mas-cli.png","language":"Swift","readme":"\u003ch1 align=\"center\"\u003e\n\n![mas](mas.png)\n\n\u003c/h1\u003e\n\n[![current release version](https://img.shields.io/github/v/release/mas-cli/mas.svg?style=for-the-badge)](https://github.com/mas-cli/mas/releases)\n[![supported OS: macOS 13+](https://img.shields.io/badge/Supported_OS-macOS_13%2B-teal?style=for-the-badge)](Package.swift)\n[![license: MIT](https://img.shields.io/badge/license-MIT-750014.svg?style=for-the-badge)](LICENSE)\n[![language: Swift 6.2](https://img.shields.io/badge/language-Swift_6.2-F05138.svg?style=for-the-badge)](https://www.swift.org)\n[![build, test \u0026 lint status](https://img.shields.io/github/actions/workflow/status/mas-cli/mas/build-test.yaml?label=build,%20test%20%26%20lint\u0026style=for-the-badge)](\n  https://github.com/mas-cli/mas/actions/workflows/build-test.yaml?query=branch%3Amain\n)\n[![dependencies status](https://img.shields.io/librariesio/github/mas-cli/mas?style=for-the-badge)](Package.swift)\n\nmas is a command-line interface for the Mac App Store that is designed for\nscripting \u0026 automation.\n\n\u003cdetails\u003e\n\u003csummary\u003e\n\n## 📲 Installation\n\n\u003c/summary\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 🔮 macOS 13 (Ventura) or newer\n\n\u003c/summary\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### 🍺 Homebrew Core formula\n\n\u003c/summary\u003e\n\n[Homebrew](https://brew.sh) is the preferred way to install:\n\n```shell\nbrew install mas\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### 🔌 MacPorts\n\n\u003c/summary\u003e\n\n[MacPorts](https://www.macports.org/install.php) is an alternative way to\ninstall:\n\n```shell\nsudo port install mas\n```\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 🧮 macOS 10.11 (El Capitan) - 12 (Monterey)\n\n\u003c/summary\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### 🍻 Homebrew tap\n\n\u003c/summary\u003e\n\nThe [mas-cli Homebrew tap](https://github.com/mas-cli/homebrew-tap) provides\npre-built bottles for all macOS versions since 10.11 (El Capitan).\n\nThe newest versions of mas, however, are only available for macOS 13+ (Ventura\nor newer).\n\nTo install mas from the tap:\n\n```shell\nbrew install mas-cli/tap/mas\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### 🐙 GitHub Releases\n\n\u003c/summary\u003e\n\nAlternatively, binaries \u0026 sources are available from\n[GitHub Releases](https://github.com/mas-cli/mas/releases).\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n## 🤳 Usage\n\n\u003c/summary\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 🪪 App IDs\n\n\u003c/summary\u003e\n\nEach app in the App Store has a unique integer app identifier (ADAM ID) \u0026 a\nunique text app identifier (bundle ID). mas commands accept either form of app\nID as arguments.\n\n`mas search` \u0026 `mas list` can be used to find the ADAM IDs of apps.\n\nAlternatively, to find an app's ADAM ID:\n\n1. Find the app in the App Store\n2. Select `Share` \u003e `Copy Link`\n3. Extract the ADAM ID from the URL\n   - e.g., extract ADAM ID `497799835` from the URL for Xcode\n     (\u003chttps://apps.apple.com/us/app/xcode/id497799835?mt=12\u003e)\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 🛍 Info from the App Store\n\n\u003c/summary\u003e\n\nThe commands in this section do not require you to be logged into an Apple\nAccount, neither for your macOS user nor for the App Store.\n\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### `mas search`\n\n\u003c/summary\u003e\n\n`mas search \u003csearch-term\u003e` searches by name for apps available from the App\nStore.\n\nProviding the `--price` flag includes each app's price in the output.\n\n```console\n$ mas search Xcode\n497799835 Xcode\n688199928 Docs for Xcode\n…\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### `mas lookup`\n\n\u003c/summary\u003e\n\n`mas lookup \u003capp-id\u003e` outputs more detailed information about an app available\nfrom the App Store.\n\n```console\n$ mas lookup 497799835\nXcode 26.1.1 [Free]\nBy: Apple Inc.\nReleased: 2025-11-11\nMinimum OS: 15.6\nSize: 2,913.8 MB\nFrom: https://apps.apple.com/us/app/xcode/id497799835?mt=12\u0026uo=4\n```\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 📚 Info from your local app library\n\n\u003c/summary\u003e\n\nAll the commands in this section require you to be logged into an Apple Account\nfor your macOS user.\n\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### `mas list`\n\n\u003c/summary\u003e\n\n`mas list` outputs all the apps on your Mac that were installed from the App\nStore.\n\n```console\n$ mas list\n497799835 Xcode       (15.4)\n640199958 Developer   (10.6.5)\n899247664 TestFlight  (3.5.2)\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### `mas outdated`\n\n\u003c/summary\u003e\n\n`mas outdated` outputs all apps installed from the App Store on your Mac that\nhave pending updates.\n\n```console\n$ mas outdated\n497799835 Xcode (15.4 -\u003e 16.0)\n640199958 Developer (10.6.5 -\u003e 10.6.6)\n```\n\nRun [`mas update`](#mas-update) to install pending updates.\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### ⬇️ Installing apps\n\n\u003c/summary\u003e\n\nAll the commands in this section require you to be logged into an Apple Account\nin the App Store.\n\n\u003e Depending on your Apple Account settings, you might need to re-authenticate in\n\u003e the App Store to perform a `get`, `install`, `lucky`, or `update`, even if you\n\u003e are already signed in to an Apple Account in the App Store.\n\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### `mas get`\n\n\u003c/summary\u003e\n\n`mas get \u003capp-id\u003e…` installs free apps that you haven't yet gotten/\"purchased\"\nfrom the App Store.\n\n[Requires root privileges to install apps](#-root-privileges).\n\n\u003e The `purchase` alias is currently a misnomer, because it currently can only\n\u003e \"purchase\" free apps. To purchase apps that cost money, purchase them directly\n\u003e in the App Store.\n\n```console\n$ mas get 497799835\n==\u003e Downloading Xcode\n==\u003e Installed Xcode\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### `mas install`\n\n\u003c/summary\u003e\n\n`mas install \u003capp-id\u003e…` installs apps that you have already gotten or purchased\nfrom the App Store. Providing the `--force` flag re-installs the app even if it\nis already installed on your Mac.\n\n[Requires root privileges to install apps](#-root-privileges).\n\n```console\n$ mas install 497799835\n==\u003e Downloading Xcode\n==\u003e Installed Xcode\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### `mas lucky`\n\n\u003c/summary\u003e\n\n`mas lucky \u003csearch-term\u003e` installs the first result that would be returned by\n`mas search \u003csearch-term\u003e`. Like `mas install`, `mas lucky` can only install\napps that have previously been gotten or purchased.\n\n[Requires root privileges to install apps](#-root-privileges).\n\n```console\n$ mas lucky Xcode\n==\u003e Downloading Xcode\n==\u003e Installed Xcode\n```\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 🆕 Upgrading apps\n\n\u003c/summary\u003e\n\nAll the commands in this section require you to be logged into an Apple Account\nin the App Store.\n\n\u003e mas only installs/updates apps from the App Store.\n\u003e\n\u003e Use [`softwareupdate(8)`](https://www.unix.com/man-page/osx/8/softwareupdate)\n\u003e to install system updates (e.g., Xcode Command Line Tools, Safari, etc.)\n\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### `mas update`\n\n\u003c/summary\u003e\n\n`mas update` updates outdated apps installed from the App Store. Without any\narguments, it updates all such apps.\n\n[Requires root privileges to update apps](#-root-privileges).\n\n```console\n$ mas update\nUpgrading 2 outdated applications:\nXcode (15.4) -\u003e (16.0)\nDeveloper (10.6.5) -\u003e (10.6.6)\n==\u003e Downloading Xcode\n==\u003e Installed Xcode\n==\u003e Downloading Developer\n==\u003e Installed Developer\n```\n\nUpdates can be performed selectively by providing app IDs to `mas update`.\n\n```console\n$ mas update 715768417\nUpgrading 1 outdated application:\nXcode (15.4) -\u003e (16.0)\n==\u003e Downloading Xcode\n==\u003e Installed Xcode\n```\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 🪪 App Store account management\n\n\u003c/summary\u003e\n\nAll the commands in this section interact with the Apple Account for which you\nare signed in to the App Store. These commands do not interact with the Apple\nAccount for which your macOS user is signed in.\n\n\u003cdetails\u003e\n\u003csummary\u003e\n\n#### `mas signout`\n\n\u003c/summary\u003e\n\n`mas signout` signs out from the current Apple Account in the App Store.\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 🫚 Root privileges\n\n\u003c/summary\u003e\n\nRoot privileges are now necessary to install/update apps from the App Store,\nbecause Apple secured `installd` on macOS 26.1+, 15.7.2+ \u0026 14.8.2+ to fix\n[CVE-2025-43411](https://nvd.nist.gov/vuln/detail/CVE-2025-43411). To simplify\nthe code, mas 4.0.0+ requires root privileges to install/update apps for all\nversions of macOS, even older ones for which `installd` hasn't been secured.\nMost users are already, or soon will be, using affected macOS versions.\n\nRoot privileges were always necessary to uninstall apps from the App Store,\nbecause such apps are owned by the `root` user on macOS. mas 4.0.0+ will request\nroot privileges if you run mas without them, so you needn't remember to use\n`sudo mas uninstall …` like beforehand.\n\nRoot privileges can be granted by running using `sudo mas …` on the command\nline, or, if you run `mas` by itself without `sudo`, by entering your macOS\naccount password when prompted by `mas`. If you choose the latter route, the\nsupplied password is piped directly from the terminal to an external process\n`sudo` call in the `mas` executable; your password is never seen by any mas\ncode, nor is it stored in any way.\n\nAny sudo credentials used or established by the `mas` executable will remain\nvalid, pursuant to your user-configured sudo timeout settings.\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n## 🧩 Integrations\n\n\u003c/summary\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 🍻 Homebrew Bundle\n\n\u003c/summary\u003e\n\nIf mas is installed:\n\n- `brew bundle dump` includes installed App Store apps in the generated\n  `Brewfile`\n- Homebrew Bundle commands will process App Store apps included in a `Brewfile`\n\nSee the\n[Homebrew Bundle documentation](https://docs.brew.sh/Brew-Bundle-and-Brewfile)\nfor more details.\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### ⚙️ Topgrade\n\n\u003c/summary\u003e\n\nIf mas is installed, running [Topgrade](https://github.com/topgrade-rs/topgrade)\nupdates installed App Store apps.\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n## ⚠️ Known issues\n\n\u003c/summary\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 💥 Broken Apple private frameworks\n\n\u003c/summary\u003e\n\nmas uses multiple undocumented Apple private frameworks to implement much of its\nfunctionality.\n\nOver time, Apple has silently changed these frameworks, breaking some\nfunctionality, including:\n\n- [The `account` command is not supported on macOS 12 (Monterey) or newer](\n    https://github.com/mas-cli/mas/issues/417\n  )\n- [The `signin` command is not supported on macOS 10.13 (High Sierra) or newer](\n    https://github.com/mas-cli/mas/issues/164\n  )\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### ⏳ Eventual consistency\n\n\u003c/summary\u003e\n\nThe App Store operates on eventual consistency.\n\n[The app versions seen by various parts of mas or the App Store might be\ninconsistent for days](https://github.com/mas-cli/mas/issues/387).\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 📱 iOS \u0026 iPadOS apps\n\n\u003c/summary\u003e\n\nApple Silicon Macs can install iOS \u0026 iPadOS apps from the App Store.\n\n[mas does not yet support iOS or iPadOS apps](\n  https://github.com/mas-cli/mas/issues/321\n).\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 📺 `tmux`\n\n\u003c/summary\u003e\n\nmas depends on the same XPC system services as the App Store.\n\nmas thus experiences similar problems as the pasteboard when running inside\n`tmux`.\n\nThis [wrapper](https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard) allows\npasteboard \u0026 mas to work inside `tmux`.\n\n`tmux` can be configured to always use the wrapper.\n\nAlternatively, the wrapper can be used on a one-off basis:\n\n```shell\nbrew install reattach-to-user-namespace\nreattach-to-user-namespace mas install\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 🤷 Undetected installed apps\n\n\u003c/summary\u003e\n\nmas 2.0.0+ sources data for installed App Store apps from macOS's Spotlight\nMetadata Server (aka MDS).\n\nYou can check if an App Store app is properly indexed in Spotlight:\n\n```console\n## General format:\n$ mdls -rn kMDItemAppStoreAdamID \u003cpath-to-app\u003e\n## Outputs the ADAM ID if the app is indexed\n## Outputs nothing if the app is not indexed\n\n## Example:\n$ mdls -rn kMDItemAppStoreAdamID /Applications/WhatsApp.app\n310633997\n```\n\nIf an app has been indexed in Spotlight, the path to the app can be found:\n\n```shell\nmdfind 'kMDItemAppStoreAdamID = \u003cadam-id\u003e'\n```\n\nIf any App Store apps are not properly indexed, you can reindex:\n\n```shell\n# Individual apps (if you know exactly what apps were incorrectly omitted):\nmdimport /Applications/Example.app\n\n# All apps (\u003cLargeAppVolume\u003e is the volume optionally selected for large apps):\nmdimport /Applications /Volumes/\u003cLargeAppVolume\u003e/Applications\n\n# All file system volumes (if neither aforementioned command solved the issue):\nsudo mdutil -Eai on\n```\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n## ❗ Troubleshooting\n\n\u003c/summary\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### 🚫 Redownload not available\n\n\u003c/summary\u003e\n\nIf the following error occurs, you probably [haven't yet gotten or purchased the\napp from the App Store](#mas-install).\n\n\u003e This redownload is not available for this Apple Account either because it was\n\u003e bought by a different user or the item was refunded or canceled.\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n### ❓ Other issues\n\n\u003c/summary\u003e\n\nIf mas doesn't work as expected (e.g., apps can't be installed/updated), run\n`mas reset`, then try again.\n\nIf the issue persists, please [file a bug](\n  https://github.com/mas-cli/mas/issues/new?template=01-bug-report.yaml\n).\n\nAll feedback is much appreciated!\n\n\u003c/details\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n## 🏗 Building\n\n\u003c/summary\u003e\n\nmas can be built in Xcode or built by the following script:\n\n```shell\nScripts/build\n```\n\nBuild output can be found in the `.build` folder in the project's root folder.\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n## 🧪 Testing\n\n\u003c/summary\u003e\n\nTests are implemented in\n[Swift Testing](https://developer.apple.com/xcode/swift-testing).\n\nTests can be run by the following script:\n\n```shell\nScripts/test\n```\n\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\n\n## 📄 License\n\n\u003c/summary\u003e\n\nCode is under the [MIT license](LICENSE).\n\nmas was originally created by Andrew Naylor\n([@argon on GitHub](https://github.com/argon) /\n[@argon on X](https://x.com/argon)).\n\n\u003c/details\u003e\n","funding_links":[],"categories":["Swift","Package Managers","Command Line Utilities","Software","Command Line","开发者工具","Swift (22)","homebrew","Tools","开源工具","命令行工具","macos","Application","Command line apps","Developer Tools","🍎 macOS","Uncategorized","Mac OS X","Cryptocurrency","Command Line Tools","System Tools","macOS"],"sub_categories":["macOS","Others","Mac","Dependency Management","sh (macOS)","命令行工具","Other","Command Line Tools","shell","Uncategorized","World Wide Web","IDE","Package Managers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmas-cli%2Fmas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmas-cli%2Fmas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmas-cli%2Fmas/lists"}