diff --git a/docs/source/tutorial.rst b/docs/source/tutorial.rst
index 74942ae..bd61a13 100644
--- a/docs/source/tutorial.rst
+++ b/docs/source/tutorial.rst
@@ -7,22 +7,22 @@ Tutorial
 Outcome provides a function for capturing the outcome of a Python
 function call, so that it can be passed around. The basic rule is::
 
-    result = outcome.capture(f, *args)
+    result = outcome.capture(f, *args, **kwargs)
     x = result.unwrap()
 
 is the same as::
 
-    x = f(*args)
+    x = f(*args, **kwargs)
 
 even if ``f`` raises an error.
 
 On Python 3.5+, there's also :func:`acapture`::
 
-    result = await outcome.acapture(f, *args)
+    result = await outcome.acapture(f, *args, **kwargs)
     x = result.unwrap()
 
 which, like before, is the same as::
 
-    x = await f(*args)
+    x = await f(*args, **kwargs)
 
 See the :ref:`api-reference` for the types involved.
diff --git a/src/outcome/_async.py b/src/outcome/_async.py
index dabc726..293e5c0 100644
--- a/src/outcome/_async.py
+++ b/src/outcome/_async.py
@@ -7,8 +7,8 @@ from ._sync import (
 __all__ = ['Error', 'Outcome', 'Value', 'acapture', 'capture']
 
 
-def capture(sync_fn, *args):
-    """Run ``sync_fn(*args)`` and capture the result.
+def capture(sync_fn, *args, **kwargs):
+    """Run ``sync_fn(*args, **kwargs)`` and capture the result.
 
     Returns:
       Either a :class:`Value` or :class:`Error` as appropriate.
@@ -16,20 +16,20 @@ def capture(sync_fn, *args):
     """
     # _sync.capture references ErrorBase and ValueBase
     try:
-        return Value(sync_fn(*args))
+        return Value(sync_fn(*args, **kwargs))
     except BaseException as exc:
         return Error(exc)
 
 
-async def acapture(async_fn, *args):
-    """Run ``await async_fn(*args)`` and capture the result.
+async def acapture(async_fn, *args, **kwargs):
+    """Run ``await async_fn(*args, **kwargs)`` and capture the result.
 
     Returns:
       Either a :class:`Value` or :class:`Error` as appropriate.
 
     """
     try:
-        return Value(await async_fn(*args))
+        return Value(await async_fn(*args, **kwargs))
     except BaseException as exc:
         return Error(exc)
 
diff --git a/src/outcome/_sync.py b/src/outcome/_sync.py
index 5c06264..a74bbc3 100644
--- a/src/outcome/_sync.py
+++ b/src/outcome/_sync.py
@@ -9,15 +9,15 @@ from ._util import ABC
 __all__ = ['Error', 'Outcome', 'Value', 'capture']
 
 
-def capture(sync_fn, *args):
-    """Run ``sync_fn(*args)`` and capture the result.
+def capture(sync_fn, *args, **kwargs):
+    """Run ``sync_fn(*args, **kwargs)`` and capture the result.
 
     Returns:
       Either a :class:`Value` or :class:`Error` as appropriate.
 
     """
     try:
-        return Value(sync_fn(*args))
+        return Value(sync_fn(*args, **kwargs))
     except BaseException as exc:
         return Error(exc)
 

Support **kwargs in capture/acapture?
I left this out of the original version of this code because in general in trio this is a complicated issue (https://github.com/python-trio/trio/issues/470), and I figured it was better to be consistent with other trio functions like `trio.run`, where we need to reserve kwargs for controlling the parent function. But now that it's a separate library, that doesn't really apply. And `capture` and `acapture` are obviously complete as they stand; there's no way we'll ever want to add any other arguments to them.
diff --git a/tests/test_async.py b/tests/test_async.py
index 6166507..9dba615 100644
--- a/tests/test_async.py
+++ b/tests/test_async.py
@@ -11,11 +11,11 @@ pytestmark = pytest.mark.trio
 
 
 async def test_acapture():
-    async def return_arg(x):
+    async def add(x, y):
         await trio.hazmat.checkpoint()
-        return x
+        return x + y
 
-    v = await outcome.acapture(return_arg, 7)
+    v = await outcome.acapture(add, 3, y=4)
     assert v == Value(7)
 
     async def raise_ValueError(x):
diff --git a/tests/test_sync.py b/tests/test_sync.py
index 50c9cc5..73900bb 100644
--- a/tests/test_sync.py
+++ b/tests/test_sync.py
@@ -77,12 +77,12 @@ def test_Value_compare():
 
 
 def test_capture():
-    def return_arg(x):
-        return x
+    def add(x, y):
+        return x + y
 
-    v = outcome.capture(return_arg, 2)
+    v = outcome.capture(add, 2, y=3)
     assert type(v) == Value
-    assert v.unwrap() == 2
+    assert v.unwrap() == 5
 
     def raise_ValueError(x):
         raise ValueError(x)

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov trio pytest-trio
apt-get update apt-get install -y gcc
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
async-generator==1.10
attrs==22.2.0
certifi==2021.5.30
contextvars==2.4
coverage==6.2
idna==3.10
immutables==0.19
importlib-metadata==4.8.3
iniconfig==1.1.1
-e git+https://github.com/python-trio/outcome.git@43ef9ae8870c6a9e1ad2762b3284d417f21e2d75#egg=outcome
packaging==21.3
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
pytest-cov==4.0.0
pytest-trio==0.7.0
sniffio==1.2.0
sortedcontainers==2.4.0
tomli==1.2.3
trio==0.19.0
typing_extensions==4.1.1
zipp==3.6.0

name: outcome
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - async-generator==1.10
      - attrs==22.2.0
      - contextvars==2.4
      - coverage==6.2
      - idna==3.10
      - immutables==0.19
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-cov==4.0.0
      - pytest-trio==0.7.0
      - sniffio==1.2.0
      - sortedcontainers==2.4.0
      - tomli==1.2.3
      - trio==0.19.0
      - typing-extensions==4.1.1
      - zipp==3.6.0
prefix: /opt/conda/envs/outcome

tests/test_sync.py::test_capture
tests/test_async.py::test_acapture
tests/test_async.py::test_asend tests/test_sync.py::test_Outcome tests/test_sync.py::test_Outcome_eq_hash tests/test_sync.py::test_Value_compare
src/outcome/_async.py docs/source/tutorial.rst src/outcome/_sync.py
src/outcome/_async.py docs/source/tutorial.rst src/outcome/_sync.py