diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index d8411953..c47be9d6 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -9,7 +9,7 @@ This project adheres to `Semantic Versioning `_.
`2.4.0-dev`_ (unreleased)
-------------------------
-
+* Show a ``--check-status`` warning with ``--quiet`` as well, not only when the output si redirected. (`#1026`_)
* Fixed upload with ``--session`` (`#1020`_).
* Fixed a missing blank line between request and response (`#1006`_).
@@ -488,3 +488,4 @@ This project adheres to `Semantic Versioning `_.
.. _#963: https://github.com/httpie/httpie/issues/963
.. _#1006: https://github.com/httpie/httpie/issues/1006
.. _#1020: https://github.com/httpie/httpie/issues/1020
+.. _#1026: https://github.com/httpie/httpie/issues/1026
diff --git a/README.rst b/README.rst
index 47d65bcb..4abf6078 100644
--- a/README.rst
+++ b/README.rst
@@ -1292,7 +1292,7 @@ Quiet output
------------
``--quiet`` redirects all output that would otherwise go to ``stdout``
-and ``stderr`` (except for error messages) to ``/dev/null``.
+and ``stderr`` to ``/dev/null`` (except for errors and warnings).
This doesn’t affect output to a file via ``--output`` or ``--download``.
.. code-block:: bash
diff --git a/httpie/core.py b/httpie/core.py
index 3f46603e..c71edd2c 100644
--- a/httpie/core.py
+++ b/httpie/core.py
@@ -185,7 +185,7 @@ def program(args: argparse.Namespace, env: Environment) -> ExitStatus:
final_response = message
if args.check_status or downloader:
exit_status = http_status_to_exit_status(http_status=message.status_code, follow=args.follow)
- if not env.stdout_isatty and exit_status != ExitStatus.SUCCESS:
+ if exit_status != ExitStatus.SUCCESS and (not env.stdout_isatty or args.quiet):
env.log_error(f'HTTP {message.raw.status} {message.raw.reason}', level='warning')
write_message(requests_message=message, env=env, args=args, with_headers=with_headers,
with_body=do_write_body)
diff --git a/tests/test_output.py b/tests/test_output.py
index 7510408a..d5b15e46 100644
--- a/tests/test_output.py
+++ b/tests/test_output.py
@@ -54,6 +54,21 @@ class TestQuietFlag:
assert r == ''
assert r.stderr == ''
+ def test_quiet_with_check_status_non_zero(self, httpbin):
+ r = http(
+ '--quiet', '--check-status', httpbin + '/status/500',
+ tolerate_error_exit_status=True,
+ )
+ assert 'http: warning: HTTP 500' in r.stderr
+
+ def test_quiet_with_check_status_non_zero_pipe(self, httpbin):
+ r = http(
+ '--quiet', '--check-status', httpbin + '/status/500',
+ tolerate_error_exit_status=True,
+ env=MockEnvironment(stdout_isatty=False)
+ )
+ assert 'http: warning: HTTP 500' in r.stderr
+
@mock.patch('httpie.cli.argtypes.AuthCredentials._getpass',
new=lambda self, prompt: 'password')
def test_quiet_with_password_prompt(self, httpbin):