diff --git a/lib/src/command.dart b/lib/src/command.dart
index 3849468..61f8cde 100644
--- a/lib/src/command.dart
+++ b/lib/src/command.dart
@@ -68,7 +68,7 @@
 
   String get directory {
     return (argResults.options.contains('directory')
-            ? argResults.optionWithoutDefault('directory')
+            ? argResults.option('directory')
             : null) ??
         _pubTopLevel.directory;
   }
@@ -315,7 +315,7 @@
     if (!argResults.wasParsed('color')) {
       forceColors = ForceColorOption.auto;
     } else {
-      forceColors = argResults['color'] as bool
+      forceColors = argResults.flag('color')
           ? ForceColorOption.always
           : ForceColorOption.never;
     }
diff --git a/lib/src/command/add.dart b/lib/src/command/add.dart
index 5a78500..a310515 100644
--- a/lib/src/command/add.dart
+++ b/lib/src/command/add.dart
@@ -371,7 +371,7 @@
   /// Split [arg] on ':' and interpret it with the flags in [argResult] either as
   /// an old-style or a new-style descriptor to produce a PackageRef].
   _ParseResult _parsePackage(String arg, ArgResults argResults) {
-    var isDev = argResults['dev'] as bool;
+    var isDev = argResults.flag('dev');
     var isOverride = false;
 
     final match = _argRegExp.firstMatch(arg);
diff --git a/lib/src/command/cache_add.dart b/lib/src/command/cache_add.dart
index 25508ec..cbcbda1 100644
--- a/lib/src/command/cache_add.dart
+++ b/lib/src/command/cache_add.dart
@@ -51,9 +51,10 @@
 
     // Parse the version constraint, if there is one.
     var constraint = VersionConstraint.any;
-    if (argResults['version'] != null) {
+    final versionArg = argResults.option('version');
+    if (versionArg != null) {
       try {
-        constraint = VersionConstraint.parse(argResults['version'] as String);
+        constraint = VersionConstraint.parse(versionArg);
       } on FormatException catch (error) {
         usageException(error.message);
       }
diff --git a/lib/src/command/cache_clean.dart b/lib/src/command/cache_clean.dart
index d981b1f..3d1b9d2 100644
--- a/lib/src/command/cache_clean.dart
+++ b/lib/src/command/cache_clean.dart
@@ -6,7 +6,6 @@
 import '../command_runner.dart';
 import '../io.dart';
 import '../log.dart' as log;
-import '../utils.dart';
 
 class CacheCleanCommand extends PubCommand {
   @override
diff --git a/lib/src/command/deps.dart b/lib/src/command/deps.dart
index 9258545..313d8a5 100644
--- a/lib/src/command/deps.dart
+++ b/lib/src/command/deps.dart
@@ -163,7 +163,7 @@
           buffer.writeln("${log.bold('${sdk.name} SDK')} ${sdk.version}");
         }
 
-        switch (argResults['style']) {
+        switch (argResults.optionWithDefault('style')) {
           case 'compact':
             await _outputCompact(buffer);
             break;
diff --git a/lib/src/command/downgrade.dart b/lib/src/command/downgrade.dart
index 940a2ec..6055d5f 100644
--- a/lib/src/command/downgrade.dart
+++ b/lib/src/command/downgrade.dart
@@ -7,7 +7,6 @@
 import '../command.dart';
 import '../log.dart' as log;
 import '../solver.dart';
-import '../utils.dart';
 
 /// Handles the `downgrade` pub command.
 class DowngradeCommand extends PubCommand {
diff --git a/lib/src/command/get.dart b/lib/src/command/get.dart
index 700472f..c795ec7 100644
--- a/lib/src/command/get.dart
+++ b/lib/src/command/get.dart
@@ -7,7 +7,6 @@
 import '../command.dart';
 import '../log.dart' as log;
 import '../solver.dart';
-import '../utils.dart';
 
 /// Handles the `get` pub command.
 class GetCommand extends PubCommand {
@@ -82,7 +81,7 @@
     );
 
     var example = entrypoint.example;
-    if ((argResults['example'] as bool? ?? false) && example != null) {
+    if ((argResults.flag('example')) && example != null) {
       await example.acquireDependencies(
         SolveType.get,
         dryRun: argResults.flag('dry-run'),
diff --git a/lib/src/command/global_activate.dart b/lib/src/command/global_activate.dart
index 7d92471..47d290a 100644
--- a/lib/src/command/global_activate.dart
+++ b/lib/src/command/global_activate.dart
@@ -87,13 +87,13 @@
         usageException('Cannot pass both --no-executables and --executable.');
       }
 
-      executables = argResults['executable'] as List<String>?;
+      executables = argResults.multiOption('executable');
     } else if (argResults.flag('no-executables')) {
       // An empty list means no executables.
       executables = [];
     }
 
-    final overwrite = argResults['overwrite'] as bool;
+    final overwrite = argResults.flag('overwrite');
 
     Iterable<String> args = argResults.rest;
 
@@ -111,14 +111,15 @@
       usageException('Unexpected $arguments ${toSentence(unexpected)}.');
     }
 
-    if (argResults['source'] != 'git' &&
-        (argResults['git-path'] != null || argResults['git-ref'] != null)) {
+    if (argResults.optionWithDefault('source') != 'git' &&
+        (argResults.option('git-path') != null ||
+            argResults.option('git-ref') != null)) {
       usageException(
         'Options `--git-path` and `--git-ref` can only be used with --source=git.',
       );
     }
 
-    switch (argResults['source']) {
+    switch (argResults.optionWithDefault('source')) {
       case 'git':
         var repo = readArg('No Git repository given.');
         validateNoExtraArgs();
@@ -126,8 +127,8 @@
           repo,
           executables,
           overwriteBinStubs: overwrite,
-          path: argResults['git-path'] as String?,
-          ref: argResults['git-ref'] as String?,
+          path: argResults.option('git-path'),
+          ref: argResults.option('git-ref'),
         );
 
       case 'hosted':
@@ -136,7 +137,7 @@
         PackageRef ref;
         try {
           ref = cache.hosted
-              .refFor(package, url: argResults['hosted-url'] as String?);
+              .refFor(package, url: argResults.option('hosted-url'));
         } on FormatException catch (e) {
           usageException('Invalid hosted-url: $e');
         }
diff --git a/lib/src/command/lish.dart b/lib/src/command/lish.dart
index 5b2a379..af4a042 100644
--- a/lib/src/command/lish.dart
+++ b/lib/src/command/lish.dart
@@ -75,9 +75,8 @@
 
   bool get skipValidation => argResults.flag('skip-validation');
 
-  late final String? _fromArchive =
-      argResults.optionWithoutDefault('from-archive');
-  late final String? _toArchive = argResults.optionWithoutDefault('to-archive');
+  late final String? _fromArchive = argResults.option('from-archive');
+  late final String? _toArchive = argResults.option('to-archive');
 
   LishCommand() {
     argParser.addFlag(
diff --git a/lib/src/command/outdated.dart b/lib/src/command/outdated.dart
index bd65385..283cb7b 100644
--- a/lib/src/command/outdated.dart
+++ b/lib/src/command/outdated.dart
@@ -114,7 +114,7 @@
 
   @override
   Future<void> runProtected() async {
-    if (argResults['mode'] == 'null-safety') {
+    if (argResults.option('mode') == 'null-safety') {
       dataError('''The `--mode=null-safety` option is no longer supported.
 Consider using the Dart 2.19 sdk to migrate to null safety.''');
     }
diff --git a/lib/src/command/remove.dart b/lib/src/command/remove.dart
index 2dd1b79..0b1c2c6 100644
--- a/lib/src/command/remove.dart
+++ b/lib/src/command/remove.dart
@@ -10,7 +10,6 @@
 import '../log.dart' as log;
 import '../pubspec.dart';
 import '../solver.dart';
-import '../utils.dart';
 
 /// Handles the `remove` pub command. Removes dependencies from `pubspec.yaml`,
 /// and performs an operation similar to `pub get`. Unlike `pub add`, this
diff --git a/lib/src/command/token_add.dart b/lib/src/command/token_add.dart
index c15a51e..a194cbc 100644
--- a/lib/src/command/token_add.dart
+++ b/lib/src/command/token_add.dart
@@ -37,7 +37,7 @@
   @override
   String get docUrl => 'https://dart.dev/tools/pub/cmd/pub-token';
 
-  String? get envVar => argResults['env-var'] as String?;
+  String? get envVar => argResults.option('env-var');
 
   TokenAddCommand() {
     argParser.addOption(
diff --git a/lib/src/command/token_remove.dart b/lib/src/command/token_remove.dart
index f3f20c0..101214e 100644
--- a/lib/src/command/token_remove.dart
+++ b/lib/src/command/token_remove.dart
@@ -6,7 +6,6 @@
 import '../exceptions.dart';
 import '../log.dart' as log;
 import '../source/hosted.dart';
-import '../utils.dart';
 
 /// Handles the `token remove` pub command.
 class TokenRemoveCommand extends PubCommand {
diff --git a/lib/src/command/unpack.dart b/lib/src/command/unpack.dart
index 803d34c..0190d22 100644
--- a/lib/src/command/unpack.dart
+++ b/lib/src/command/unpack.dart
@@ -117,7 +117,7 @@
     final id = versions.last;
     final name = id.name;
 
-    final outputArg = argResults['output'] as String;
+    final outputArg = argResults.optionWithDefault('output');
     final destinationDir = p.join(outputArg, '$name-${id.version}');
     if (entryExists(destinationDir)) {
       if (argResults.flag('force')) {
@@ -138,7 +138,7 @@
       destinationDir,
       cache,
     );
-    if (argResults['resolve'] as bool) {
+    if (argResults.flag('resolve')) {
       try {
         await e.acquireDependencies(SolveType.get);
       } finally {
diff --git a/lib/src/command_runner.dart b/lib/src/command_runner.dart
index 2f4728e..ee10f74 100644
--- a/lib/src/command_runner.dart
+++ b/lib/src/command_runner.dart
@@ -50,7 +50,7 @@
   bool get captureStackChains {
     return argResults.flag('trace') ||
         argResults.flag('verbose') ||
-        argResults.optionWithoutDefault('verbosity') == 'all';
+        argResults.option('verbosity') == 'all';
   }
 
   @override
diff --git a/lib/src/executable.dart b/lib/src/executable.dart
index dc2b901..feaf10c 100644
--- a/lib/src/executable.dart
+++ b/lib/src/executable.dart
@@ -24,7 +24,7 @@
 
 /// Extracting vm arguments from arguments.
 List<String> vmArgsFromArgResults(ArgResults argResults) {
-  final experiments = argResults['enable-experiment'] as List;
+  final experiments = argResults.multiOption('enable-experiment');
   return [
     if (experiments.isNotEmpty) "--enable-experiment=${experiments.join(',')}",
   ];
diff --git a/lib/src/utils.dart b/lib/src/utils.dart
index 3093fce..2912b5f 100644
--- a/lib/src/utils.dart
+++ b/lib/src/utils.dart
@@ -766,10 +766,7 @@
 }
 
 extension RetrieveFlags on ArgResults {
-  bool flag(String name) => this[name] as bool;
-
-  String optionWithDefault(String name) => this[name] as String;
-  String? optionWithoutDefault(String name) => this[name] as String?;
+  String optionWithDefault(String name) => option(name)!;
 }
 
 /// Limits the range of characters and length.
diff --git a/pubspec.yaml b/pubspec.yaml
index 3fe357c..4a3f3b8 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -5,7 +5,7 @@
 
 dependencies:
   analyzer: ^6.3.0
-  args: ^2.4.2
+  args: ^2.5.0
   async: ^2.11.0
   cli_util: ^0.4.1
   collection: ^1.18.0
diff --git a/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt b/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt
index bc70c20..dc9a51d 100644
--- a/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt
+++ b/test/testdata/goldens/embedding/embedding_test/logfile is written with --verbose and on unexpected exceptions.txt
@@ -305,7 +305,7 @@
 [E] package:pub/src/command.dart $LINE:$COL   PubCommand.run
 [E] package:args/command_runner.dart $LINE:$COL   CommandRunner.runCommand
 [E]  tool/test-bin/pub_command_runner.dart $LINE:$COL  Runner.runCommand
-[E]  tool/test-bin/pub_command_runner.dart $LINE:$COL  Runner.run
+[E]  tool/test-bin/pub_command_runner.dart $LINE:$COL   Runner.run
 [E]  tool/test-bin/pub_command_runner.dart $LINE:$COL  main
 [E] This is an unexpected error. The full log and other details are collected in:
 [E] 
@@ -346,7 +346,7 @@
    | package:pub/src/command.dart $LINE:$COL   PubCommand.run
    | package:args/command_runner.dart $LINE:$COL   CommandRunner.runCommand
    | tool/test-bin/pub_command_runner.dart $LINE:$COL  Runner.runCommand
-   | tool/test-bin/pub_command_runner.dart $LINE:$COL  Runner.run
+   | tool/test-bin/pub_command_runner.dart $LINE:$COL   Runner.run
    | tool/test-bin/pub_command_runner.dart $LINE:$COL  main
 ERR : This is an unexpected error. The full log and other details are collected in:
    | 
diff --git a/tool/test-bin/pub_command_runner.dart b/tool/test-bin/pub_command_runner.dart
index e6d84e7..186d905 100644
--- a/tool/test-bin/pub_command_runner.dart
+++ b/tool/test-bin/pub_command_runner.dart
@@ -13,7 +13,6 @@
 import 'package:pub/src/command.dart';
 import 'package:pub/src/exit_codes.dart' as exit_codes;
 import 'package:pub/src/log.dart' as log;
-import 'package:pub/src/utils.dart';
 
 /// A command for explicitly throwing an exception, to test the handling of
 /// unexpected exceptions.
