diff --git a/rbtools/commands/post.py b/rbtools/commands/post.py
index dfd1faac42e832d59928e268986711abfac12d25..dd15eff50cb003daef5cef08981e1d16804fb8e9 100644
--- a/rbtools/commands/post.py
+++ b/rbtools/commands/post.py
@@ -60,6 +60,16 @@ class Post(Command):
                             'All required fields must already be filled in '
                             'on the review request or must be provided when '
                             'posting.'),
+                Option('-t', '--trivial-publish',
+                       dest='trivial_publish',
+                       action='store_true',
+                       default=False,
+                       help='Publish the review request immediately after '
+                            'posting. Mark this publish as trivial. E-mails '
+                            'are not sent for trivial publishes.'
+                            '\n'
+                            'This option implies --publish.',
+                       added_in='0.8.0'),
                 Option('-o', '--open',
                        dest='open_browser',
                        action='store_true',
@@ -322,6 +332,9 @@ class Post(Command):
         if self.options.rid and self.options.update:
             self.options.update = False
 
+        if self.options.trivial_publish:
+            self.options.publish = True
+
     def normalize_guess_value(self, guess, arg_name):
         if guess in self.GUESS_YES_INPUT_VALUES:
             return self.GUESS_YES
@@ -556,6 +569,11 @@ class Post(Command):
         if self.options.publish:
             update_fields['public'] = True
 
+            if (self.options.trivial_publish and
+                self.tool.capabilities.has_capability('review_requests',
+                                                      'trivial_publish')):
+                update_fields['trivial'] = True
+
         if supports_posting_commit_ids and commit_id != draft.commit_id:
             update_fields['commit_id'] = commit_id or ''
 
diff --git a/rbtools/commands/publish.py b/rbtools/commands/publish.py
index abeeab7a37c39ac4b95ebd1c709b812301ea08ca..d0feb6477c038e8f9bba91a2dc668cf11de99b98 100644
--- a/rbtools/commands/publish.py
+++ b/rbtools/commands/publish.py
@@ -1,7 +1,7 @@
 from __future__ import print_function, unicode_literals
 
 from rbtools.api.errors import APIError
-from rbtools.commands import Command, CommandError
+from rbtools.commands import Command, CommandError, Option
 from rbtools.utils.commands import get_review_request
 
 
@@ -13,6 +13,13 @@ class Publish(Command):
     option_list = [
         Command.server_options,
         Command.repository_options,
+        Option('-t', '--trivial',
+               dest='trivial_publish',
+               action='store_true',
+               default=False,
+               help='Mark this publish as trivial. E-mails are not sent for '
+                    'trivial publishes.',
+               added_in='0.8.0')
     ]
 
     def main(self, request_id):
@@ -24,9 +31,20 @@ class Publish(Command):
 
         request = get_review_request(request_id, api_root)
 
+        self.setup_tool(tool, api_root)
+
+        update_fields = {
+            'public': True,
+        }
+
+        if (self.options.trivial_publish and
+            tool.capabilities.has_capability('review_requests',
+                                             'trivial_publish')):
+            update_fields['trivial'] = True
+
         try:
             draft = request.get_draft()
-            draft = draft.update(public=True)
+            draft.update(**update_fields)
         except APIError as e:
             raise CommandError('Error publishing review request (it may '
                                'already be published): %s' % e)
