Skip to content

Feature Request: Add mas --exclude or Similar Option to Exclude Apps from Upgrades #723

Open
@alwinsamson

Description

@alwinsamson

Problem(s) addressed

Currently, mas upgrade upgrades all outdated apps, and the only way to limit upgrades is to manually specify app IDs. However, there is no built-in way to exclude certain apps from being upgraded.

For users who want to skip certain app updates, they must manually retrieve the outdated app list and filter out unwanted apps before running mas upgrade, which is inefficient.

Example of the current workaround:

## List outdated apps
$ mas outdated
123456789  AppOne (1.0 -> 1.1)
987654321  AppTwo (2.0 -> 2.1)
555666777  AppThree (3.0 -> 3.1)

## Upgrade only selected apps (manual filtering)
$ mas upgrade 555666777

This process is not user-friendly and requires extra steps for something that could be built into the tool.

Proposed solution(s)

Introduce an --exclude flag for mas upgrade, allowing users to specify apps they want to skip. For example:

## Upgrade all apps except AppOne (123456789) and AppTwo (987654321)
$ mas upgrade --exclude 123456789,987654321

Alternatively, provide an environment variable or a configuration file where users can specify globally excluded apps.

Alternative solution(s)

Allow mas outdated to support an --exclude flag, filtering out unwanted apps before displaying the list:

## Show outdated apps, excluding AppOne and AppTwo
$ mas outdated --exclude 123456789,987654321

Introduce an mas ignore command to permanently exclude apps until the user removes them from the ignore list:

## Ignore AppOne from future upgrades
$ mas ignore 123456789

## View ignored apps
$ mas ignore --list

## Remove AppOne from ignore list
$ mas ignore --remove 123456789

Support a ~/.mas_exclude config file that contains a list of excluded app IDs.

Additional context

Additional Context

  • The ability to exclude apps is useful for users who:
    • Need to delay specific updates (e.g., waiting for stability).
    • Have apps installed via mas but prefer manual updates for certain ones.
    • Want to automate upgrades without worrying about specific exclusions every time.
  • brew (Homebrew) provides an exclude feature via brew pin, which serves a similar purpose. Implementing a version of this for mas would improve usability.

This request would make mas upgrade more flexible and user-friendly, reducing the need for external scripting or workarounds.

Would love to hear your thoughts on feasibility! Thanks! 🙌

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions