diff --git a/rbtools/clients/mercurial.py b/rbtools/clients/mercurial.py
index 83689eca8a48284d72a20959abf1dd7a8b5fef6d..2d385356558b2d52fc48b031b577202346c5e846 100644
--- a/rbtools/clients/mercurial.py
+++ b/rbtools/clients/mercurial.py
@@ -975,7 +975,7 @@
     def _load_hgrc(self) -> None:
         """Load the hgrc file."""
         hgrc_lines = (
-            run_process([self._exe, 'showconfig'], env=self._hg_env)
+            self._execute([self._exe, 'showconfig'])
             .stdout
             .readlines()
         )
@@ -1074,8 +1074,7 @@
         descs = (
             self._execute(
                 [self._exe, 'log', '--hidden', '-r', f'{rev1}::{rev2}',
-                 '--template', f'{{desc}}{delim}'],
-                env=self._hg_env)
+                 '--template', f'{{desc}}{delim}'])
             .stdout
             .read()
         )
@@ -1169,8 +1168,7 @@
             base_commit_id = (
                 self._execute(
                     [self._exe, 'log', '-r', base_commit_id,
-                     '--template', '{node}'],
-                    env=self._hg_env)
+                     '--template', '{node}'])
                 .stdout
                 .read()
             )
@@ -1213,7 +1211,6 @@
             self._execute(
                 [self._exe, 'diff', *diff_args, '-r', parent_id, '-r',
                  node_id],
-                env=self._hg_env,
                 log_debug_output_on_error=False)
             .stdout_bytes
             .read()
@@ -1283,7 +1280,6 @@
         files = (
             self._execute(
                 [self._exe, 'locate', '-r', rev],
-                env=self._hg_env,
                 ignore_errors=True)
             .stdout
             .read()
@@ -1544,7 +1540,7 @@
             The name of the currently checked-out branch.
         """
         return (
-            self._execute([self._exe, 'branch'], env=self._hg_env)
+            self._execute([self._exe, 'branch'])
             .stdout
             .read()
             .strip()
@@ -1616,7 +1612,7 @@
         # We must handle the special case where there are no outgoing commits
         # as mercurial has a non-zero return value in this case.
         raw_outgoing = (
-            self._execute(args, env=self._hg_env, ignore_errors=(1,))
+            self._execute(args, ignore_errors=(1,))
             .stdout
             .read()
         )
@@ -1671,8 +1667,7 @@
             parents = (
                 self._execute(
                     [self._exe, 'log', '-r', str(rev), '--template',
-                     '{parents}'],
-                    env=self._hg_env)
+                     '{parents}'])
                 .stdout
                 .read()
             )
@@ -1760,6 +1755,18 @@
             f'extensions.rbtoolsnormalize={self._hgext_path}',
         ]
 
+        # Ensure the standard hg environment is always applied. Callers
+        # can still provide additional env vars which will be merged in.
+        env: dict[str, str] = dict(self._hg_env)
+
+        if 'env' in kwargs:
+            caller_env = kwargs.pop('env')
+
+            if caller_env:
+                env.update(caller_env)
+
+        kwargs['env'] = env
+
         return run_process(cmd, *args, **kwargs)
 
     def has_pending_changes(self) -> bool:
@@ -1831,7 +1838,6 @@
             return (
                 self._execute(
                     [self._exe, 'cat', '-r', revision, filename],
-                    env=self._hg_env,
                     log_debug_output_on_error=False,
                 )
                 .stdout_bytes
@@ -1867,7 +1873,6 @@
                 self._execute(
                     [self._exe, 'files', '--template', '{size}', '-r',
                      revision, filename],
-                    env=self._hg_env,
                     log_debug_output_on_error=False,
                 )
                 .stdout
diff --git a/rbtools/clients/tests/test_mercurial.py b/rbtools/clients/tests/test_mercurial.py
index c5ef5ad88e9751faf9ca49e5e46c3ba590a6226b..5b041719b4a771a3771e7ad31a5b1f32d693c218 100644
--- a/rbtools/clients/tests/test_mercurial.py
+++ b/rbtools/clients/tests/test_mercurial.py
@@ -439,9 +439,6 @@
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-r', base_commit_id, '-r', commit_id],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
 
         self.assertIsInstance(result, dict)
@@ -495,9 +492,6 @@
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-r', base_commit_id, '-r', commit_id],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
 
         self.assertEqual(result, {
@@ -556,9 +550,6 @@
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-X', 'exclude.txt', '-r', base_commit_id, '-r', commit_id],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
 
         self.assertEqual(result, {
@@ -611,9 +602,6 @@
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-X', 'empty.txt', '-r', base_commit_id, '-r', commit_id],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
 
         self.assertEqual(result, {
@@ -669,17 +657,11 @@
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-r', base_commit_id, '-r', commit_id1],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
         self.assertSpyCalledWith(
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-r', commit_id1, '-r', commit_id2],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
 
         self.assertEqual(result, {
@@ -736,9 +718,6 @@
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-r', base_commit_id, '-r', commit_id1],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
 
         self.assertEqual(len(spy.calls), 1)
@@ -796,17 +775,11 @@
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-r', commit_id2, '-r', commit_id3],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
         self.assertSpyCalledWith(
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-r', base_commit_id, '-r', commit_id2],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
 
         self.assertEqual(result, {
@@ -897,17 +870,11 @@
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-r', commit_id2, '-r', commit_id3],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
         self.assertSpyCalledWith(
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-r', base_commit_id, '-r', commit_id2],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
 
         self.assertEqual(result, {
@@ -1000,17 +967,11 @@
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-r', commit_id2, '-r', commit_id3],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
         self.assertSpyCalledWith(
             spy,
             ['hg', 'diff', '--hidden', '--nodates', '-g',
              '-r', base_commit_id, '-r', commit_id2],
-            env={
-                'HGPLAIN': '1',
-            },
             log_debug_output_on_error=False)
 
         self.assertEqual(result, {
