diff --git a/docs/changelog/1095.bugfix.rst b/docs/changelog/1095.bugfix.rst
new file mode 100644
index 00000000..9d0abc24
--- /dev/null
+++ b/docs/changelog/1095.bugfix.rst
@@ -0,0 +1,1 @@
+Don't rewrite ``{posargs}`` substitution for absolute paths.
diff --git a/src/tox/config.py b/src/tox/config.py
index b499a8aa..4d5e02be 100755
--- a/src/tox/config.py
+++ b/src/tox/config.py
@@ -184,10 +184,10 @@ class PosargsOption:
             if value:
                 args = []
                 for arg in config.option.args:
-                    if arg:
-                        origpath = config.invocationcwd.join(arg, abs=True)
-                        if origpath.check():
-                            arg = testenv_config.changedir.bestrelpath(origpath)
+                    if arg and not os.path.isabs(arg):
+                        origpath = os.path.join(config.invocationcwd.strpath, arg)
+                        if os.path.exists(origpath):
+                            arg = os.path.relpath(origpath, testenv_config.changedir.strpath)
                     args.append(arg)
             testenv_config._reader.addsubstitutions(args)
         return value

why the arguments are changed?


When using the *posargs*， the path in the argument is changed with no reason. Why ?

tox.ini
```
[tox]
envlist=py27,py36
skipsdist=True

[testenv]
deps = pytest
commands=pytest -s tests {posargs}
```


![image](https://user-images.githubusercontent.com/1487879/49358412-8dc60300-f70d-11e8-890e-7559e484b4ab.png)

diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py
index 86f36319..08a1ced4 100644
--- a/tests/unit/test_config.py
+++ b/tests/unit/test_config.py
@@ -11,6 +11,7 @@ import tox
 from tox.config import (
     CommandParser,
     DepOption,
+    PosargsOption,
     SectionReader,
     get_homedir,
     get_version_info,
@@ -2969,3 +2970,29 @@ def test_config_current_py(newconfig, current_tox_py, cmd, tmpdir, monkeypatch):
     assert config.envconfigs[current_tox_py]
     result = cmd()
     assert result.ret == 0, result.out
+
+
+def test_posargs_relative_changedir(newconfig, tmpdir):
+    dir1 = tmpdir.join("dir1").ensure()
+    tmpdir.join("dir2").ensure()
+    with tmpdir.as_cwd():
+        config = newconfig(
+            """\
+            [tox]
+            [testenv]
+            changedir = dir2
+            commands =
+                echo {posargs}
+            """
+        )
+        config.option.args = ["dir1", dir1.strpath, "dir3"]
+        testenv = config.envconfigs["python"]
+        PosargsOption().postprocess(testenv, config.option.args)
+
+        assert testenv._reader.posargs == [
+            # should have relative-ized
+            os.path.join("..", "dir1"),
+            # should have stayed the same,
+            dir1.strpath,
+            "dir3",
+        ]

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-mock pytest-xdist
3.6
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
coverage==6.2
distlib==0.3.9
execnet==1.9.0
filelock==3.4.1
importlib-metadata==4.8.3
importlib-resources==5.4.0
iniconfig==1.1.1
packaging==21.3
platformdirs==2.4.0
pluggy==0.13.1
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
pytest-cov==4.0.0
pytest-mock==3.6.1
pytest-xdist==3.0.2
six==1.17.0
toml==0.10.2
tomli==1.2.3
-e git+https://github.com/tox-dev/tox.git@b84efc8f1074351bbba7e226d629d9114e0cc1a4#egg=tox
typing_extensions==4.1.1
virtualenv==20.17.1
zipp==3.6.0

name: tox
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:
      - attrs==22.2.0
      - coverage==6.2
      - distlib==0.3.9
      - execnet==1.9.0
      - filelock==3.4.1
      - importlib-metadata==4.8.3
      - importlib-resources==5.4.0
      - iniconfig==1.1.1
      - packaging==21.3
      - platformdirs==2.4.0
      - pluggy==0.13.1
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-cov==4.0.0
      - pytest-mock==3.6.1
      - pytest-xdist==3.0.2
      - six==1.17.0
      - toml==0.10.2
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - virtualenv==20.17.1
      - zipp==3.6.0
prefix: /opt/conda/envs/tox

tests/unit/test_config.py::test_posargs_relative_changedir
tests/unit/test_config.py::TestVenvConfig::test_force_dep_with_url
tests/unit/test_config.py::TestVenvConfig::test_config_parsing_minimal tests/unit/test_config.py::TestVenvConfig::test_config_parsing_multienv tests/unit/test_config.py::TestVenvConfig::test_envdir_set_manually tests/unit/test_config.py::TestVenvConfig::test_envdir_set_manually_with_substitutions tests/unit/test_config.py::TestVenvConfig::test_force_dep_version tests/unit/test_config.py::TestVenvConfig::test_process_deps tests/unit/test_config.py::TestVenvConfig::test_is_same_dep tests/unit/test_config.py::TestConfigPlatform::test_config_parse_platform tests/unit/test_config.py::TestConfigPlatform::test_config_parse_platform_rex tests/unit/test_config.py::TestConfigPlatform::test_config_parse_platform_with_factors[win] tests/unit/test_config.py::TestConfigPlatform::test_config_parse_platform_with_factors[lin] tests/unit/test_config.py::TestConfigPlatform::test_config_parse_platform_with_factors[osx] tests/unit/test_config.py::TestConfigPackage::test_defaults tests/unit/test_config.py::TestConfigPackage::test_defaults_distshare tests/unit/test_config.py::TestConfigPackage::test_defaults_changed_dir tests/unit/test_config.py::TestConfigPackage::test_project_paths tests/unit/test_config.py::TestParseconfig::test_search_parents tests/unit/test_config.py::TestParseconfig::test_explicit_config_path tests/unit/test_config.py::test_get_homedir tests/unit/test_config.py::TestGetcontextname::test_blank tests/unit/test_config.py::TestGetcontextname::test_jenkins tests/unit/test_config.py::TestGetcontextname::test_hudson_legacy tests/unit/test_config.py::TestIniParserAgainstCommandsKey::test_command_substitution_from_other_section tests/unit/test_config.py::TestIniParserAgainstCommandsKey::test_command_substitution_from_other_section_multiline tests/unit/test_config.py::TestIniParserAgainstCommandsKey::test_command_substitution_from_other_section_posargs tests/unit/test_config.py::TestIniParserAgainstCommandsKey::test_command_section_and_posargs_substitution tests/unit/test_config.py::TestIniParserAgainstCommandsKey::test_command_env_substitution tests/unit/test_config.py::TestIniParserAgainstCommandsKey::test_command_env_substitution_global tests/unit/test_config.py::TestIniParserAgainstCommandsKey::test_regression_issue595 tests/unit/test_config.py::TestIniParser::test_getstring_single tests/unit/test_config.py::TestIniParser::test_missing_substitution tests/unit/test_config.py::TestIniParser::test_getstring_fallback_sections tests/unit/test_config.py::TestIniParser::test_getstring_substitution tests/unit/test_config.py::TestIniParser::test_getlist tests/unit/test_config.py::TestIniParser::test_getdict tests/unit/test_config.py::TestIniParser::test_normal_env_sub_works tests/unit/test_config.py::TestIniParser::test_missing_env_sub_raises_config_error_in_non_testenv tests/unit/test_config.py::TestIniParser::test_missing_env_sub_populates_missing_subs tests/unit/test_config.py::TestIniParser::test_getstring_environment_substitution_with_default tests/unit/test_config.py::TestIniParser::test_value_matches_section_substitution tests/unit/test_config.py::TestIniParser::test_value_doesn_match_section_substitution tests/unit/test_config.py::TestIniParser::test_getstring_other_section_substitution tests/unit/test_config.py::TestIniParser::test_argvlist tests/unit/test_config.py::TestIniParser::test_argvlist_windows_escaping tests/unit/test_config.py::TestIniParser::test_argvlist_multiline tests/unit/test_config.py::TestIniParser::test_argvlist_quoting_in_command tests/unit/test_config.py::TestIniParser::test_argvlist_comment_after_command tests/unit/test_config.py::TestIniParser::test_argvlist_command_contains_hash tests/unit/test_config.py::TestIniParser::test_argvlist_positional_substitution tests/unit/test_config.py::TestIniParser::test_argvlist_quoted_posargs tests/unit/test_config.py::TestIniParser::test_argvlist_posargs_with_quotes tests/unit/test_config.py::TestIniParser::test_positional_arguments_are_only_replaced_when_standing_alone tests/unit/test_config.py::TestIniParser::test_posargs_are_added_escaped_issue310 tests/unit/test_config.py::TestIniParser::test_substitution_with_multiple_words tests/unit/test_config.py::TestIniParser::test_getargv tests/unit/test_config.py::TestIniParser::test_getpath tests/unit/test_config.py::TestIniParser::test_getbool tests/unit/test_config.py::TestIniParserPrefix::test_basic_section_access tests/unit/test_config.py::TestIniParserPrefix::test_fallback_sections tests/unit/test_config.py::TestIniParserPrefix::test_value_matches_prefixed_section_substitution tests/unit/test_config.py::TestIniParserPrefix::test_value_doesn_match_prefixed_section_substitution tests/unit/test_config.py::TestIniParserPrefix::test_other_section_substitution tests/unit/test_config.py::TestConfigTestEnv::test_commentchars_issue33 tests/unit/test_config.py::TestConfigTestEnv::test_defaults tests/unit/test_config.py::TestConfigTestEnv::test_sitepackages_switch tests/unit/test_config.py::TestConfigTestEnv::test_installpkg_tops_develop tests/unit/test_config.py::TestConfigTestEnv::test_specific_command_overrides tests/unit/test_config.py::TestConfigTestEnv::test_whitelist_externals tests/unit/test_config.py::TestConfigTestEnv::test_changedir tests/unit/test_config.py::TestConfigTestEnv::test_ignore_errors tests/unit/test_config.py::TestConfigTestEnv::test_envbindir tests/unit/test_config.py::TestConfigTestEnv::test_envbindir_jython[jython] tests/unit/test_config.py::TestConfigTestEnv::test_envbindir_jython[pypy] tests/unit/test_config.py::TestConfigTestEnv::test_envbindir_jython[pypy3] tests/unit/test_config.py::TestConfigTestEnv::test_passenv_as_multiline_list[win32] tests/unit/test_config.py::TestConfigTestEnv::test_passenv_as_multiline_list[linux2] tests/unit/test_config.py::TestConfigTestEnv::test_passenv_as_space_separated_list[win32] tests/unit/test_config.py::TestConfigTestEnv::test_passenv_as_space_separated_list[linux2] tests/unit/test_config.py::TestConfigTestEnv::test_passenv_with_factor tests/unit/test_config.py::TestConfigTestEnv::test_passenv_from_global_env tests/unit/test_config.py::TestConfigTestEnv::test_passenv_glob_from_global_env tests/unit/test_config.py::TestConfigTestEnv::test_changedir_override tests/unit/test_config.py::TestConfigTestEnv::test_install_command_setting tests/unit/test_config.py::TestConfigTestEnv::test_install_command_must_contain_packages tests/unit/test_config.py::TestConfigTestEnv::test_install_command_substitutions tests/unit/test_config.py::TestConfigTestEnv::test_pip_pre tests/unit/test_config.py::TestConfigTestEnv::test_pip_pre_cmdline_override tests/unit/test_config.py::TestConfigTestEnv::test_simple tests/unit/test_config.py::TestConfigTestEnv::test_substitution_error tests/unit/test_config.py::TestConfigTestEnv::test_substitution_defaults tests/unit/test_config.py::TestConfigTestEnv::test_substitution_notfound_issue246 tests/unit/test_config.py::TestConfigTestEnv::test_substitution_notfound_issue515 tests/unit/test_config.py::TestConfigTestEnv::test_substitution_nested_env_defaults tests/unit/test_config.py::TestConfigTestEnv::test_substitution_positional tests/unit/test_config.py::TestConfigTestEnv::test_substitution_noargs_issue240 tests/unit/test_config.py::TestConfigTestEnv::test_substitution_double tests/unit/test_config.py::TestConfigTestEnv::test_posargs_backslashed_or_quoted tests/unit/test_config.py::TestConfigTestEnv::test_rewrite_posargs tests/unit/test_config.py::TestConfigTestEnv::test_rewrite_simple_posargs tests/unit/test_config.py::TestConfigTestEnv::test_take_dependencies_from_other_testenv[envlist0-deps0] tests/unit/test_config.py::TestConfigTestEnv::test_take_dependencies_from_other_testenv[envlist1-deps1] tests/unit/test_config.py::TestConfigTestEnv::test_regression_test_issue_706[envlist0] tests/unit/test_config.py::TestConfigTestEnv::test_factor_expansion tests/unit/test_config.py::TestConfigTestEnv::test_factors_support_curly_braces tests/unit/test_config.py::TestConfigTestEnv::test_do_not_substitute_more_than_needed tests/unit/test_config.py::TestConfigTestEnv::test_take_dependencies_from_other_section tests/unit/test_config.py::TestConfigTestEnv::test_multilevel_substitution tests/unit/test_config.py::TestConfigTestEnv::test_recursive_substitution_cycle_fails tests/unit/test_config.py::TestConfigTestEnv::test_single_value_from_other_secton tests/unit/test_config.py::TestConfigTestEnv::test_factors tests/unit/test_config.py::TestConfigTestEnv::test_factor_ops tests/unit/test_config.py::TestConfigTestEnv::test_envconfigs_based_on_factors tests/unit/test_config.py::TestConfigTestEnv::test_default_factors tests/unit/test_config.py::TestConfigTestEnv::test_default_factors_conflict tests/unit/test_config.py::TestConfigTestEnv::test_default_factors_conflict_lying_name tests/unit/test_config.py::TestConfigTestEnv::test_default_factors_conflict_ignore tests/unit/test_config.py::TestConfigTestEnv::test_factors_in_boolean tests/unit/test_config.py::TestConfigTestEnv::test_factors_in_setenv tests/unit/test_config.py::TestConfigTestEnv::test_factor_use_not_checked tests/unit/test_config.py::TestConfigTestEnv::test_factors_groups_touch tests/unit/test_config.py::TestConfigTestEnv::test_period_in_factor tests/unit/test_config.py::TestConfigTestEnv::test_ignore_outcome tests/unit/test_config.py::TestGlobalOptions::test_notest tests/unit/test_config.py::TestGlobalOptions::test_verbosity tests/unit/test_config.py::TestGlobalOptions::test_quiet[args0-0] tests/unit/test_config.py::TestGlobalOptions::test_quiet[args1-1] tests/unit/test_config.py::TestGlobalOptions::test_quiet[args2-2] tests/unit/test_config.py::TestGlobalOptions::test_quiet[args3-3] tests/unit/test_config.py::TestGlobalOptions::test_substitution_jenkins_default tests/unit/test_config.py::TestGlobalOptions::test_substitution_jenkins_context tests/unit/test_config.py::TestGlobalOptions::test_sdist_specification tests/unit/test_config.py::TestGlobalOptions::test_env_selection tests/unit/test_config.py::TestGlobalOptions::test_py_venv tests/unit/test_config.py::TestGlobalOptions::test_correct_basepython_chosen_from_default_factors tests/unit/test_config.py::TestGlobalOptions::test_envlist_expansion tests/unit/test_config.py::TestGlobalOptions::test_envlist_cross_product tests/unit/test_config.py::TestGlobalOptions::test_envlist_multiline tests/unit/test_config.py::TestGlobalOptions::test_minversion tests/unit/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_true tests/unit/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_false tests/unit/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_cli_no_arg tests/unit/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_cli_not_specified tests/unit/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_cli_overrides_true tests/unit/test_config.py::TestGlobalOptions::test_skip_missing_interpreters_cli_overrides_false tests/unit/test_config.py::TestGlobalOptions::test_defaultenv_commandline tests/unit/test_config.py::TestGlobalOptions::test_defaultenv_partial_override tests/unit/test_config.py::TestHashseedOption::test_default tests/unit/test_config.py::TestHashseedOption::test_passing_integer tests/unit/test_config.py::TestHashseedOption::test_passing_string tests/unit/test_config.py::TestHashseedOption::test_passing_empty_string tests/unit/test_config.py::TestHashseedOption::test_passing_no_argument tests/unit/test_config.py::TestHashseedOption::test_setenv tests/unit/test_config.py::TestHashseedOption::test_noset tests/unit/test_config.py::TestHashseedOption::test_noset_with_setenv tests/unit/test_config.py::TestHashseedOption::test_one_random_hashseed tests/unit/test_config.py::TestHashseedOption::test_setenv_in_one_testenv tests/unit/test_config.py::TestSetenv::test_getdict_lazy tests/unit/test_config.py::TestSetenv::test_getdict_lazy_update tests/unit/test_config.py::TestSetenv::test_setenv_uses_os_environ tests/unit/test_config.py::TestSetenv::test_setenv_default_os_environ tests/unit/test_config.py::TestSetenv::test_setenv_uses_other_setenv tests/unit/test_config.py::TestSetenv::test_setenv_recursive_direct tests/unit/test_config.py::TestSetenv::test_setenv_overrides tests/unit/test_config.py::TestSetenv::test_setenv_with_envdir_and_basepython tests/unit/test_config.py::TestSetenv::test_setenv_ordering_1 tests/unit/test_config.py::TestSetenv::test_setenv_cross_section_subst_issue294 tests/unit/test_config.py::TestSetenv::test_setenv_cross_section_subst_twice tests/unit/test_config.py::TestSetenv::test_setenv_cross_section_mixed tests/unit/test_config.py::TestIndexServer::test_indexserver tests/unit/test_config.py::TestIndexServer::test_parse_indexserver tests/unit/test_config.py::TestIndexServer::test_multiple_homedir_relative_local_indexservers tests/unit/test_config.py::TestConfigConstSubstitutions::test_replace_pathsep_unix[:] tests/unit/test_config.py::TestConfigConstSubstitutions::test_replace_pathsep_unix[;] tests/unit/test_config.py::TestConfigConstSubstitutions::test_pathsep_regex tests/unit/test_config.py::TestParseEnv::test_parse_recreate tests/unit/test_config.py::TestCmdInvocation::test_help tests/unit/test_config.py::TestCmdInvocation::test_version_simple tests/unit/test_config.py::TestCmdInvocation::test_version_no_plugins tests/unit/test_config.py::TestCmdInvocation::test_version_with_normal_plugin tests/unit/test_config.py::TestCmdInvocation::test_version_with_fileless_module tests/unit/test_config.py::TestCmdInvocation::test_config_specific_ini tests/unit/test_config.py::TestCmdInvocation::test_no_tox_ini tests/unit/test_config.py::TestCmdInvocation::test_override_workdir tests/unit/test_config.py::TestCmdInvocation::test_showconfig_with_force_dep_version tests/unit/test_config.py::test_env_spec[-e tests/unit/test_config.py::TestCommandParser::test_command_parser_for_word tests/unit/test_config.py::TestCommandParser::test_command_parser_for_posargs tests/unit/test_config.py::TestCommandParser::test_command_parser_for_multiple_words tests/unit/test_config.py::TestCommandParser::test_command_parser_for_substitution_with_spaces tests/unit/test_config.py::TestCommandParser::test_command_parser_with_complex_word_set tests/unit/test_config.py::TestCommandParser::test_command_with_runs_of_whitespace tests/unit/test_config.py::TestCommandParser::test_command_with_split_line_in_subst_arguments tests/unit/test_config.py::TestCommandParser::test_command_parsing_for_issue_10 tests/unit/test_config.py::TestCommandParser::test_commands_with_backslash tests/unit/test_config.py::test_plugin_require tests/unit/test_config.py::test_isolated_build_env_cannot_be_in_envlist tests/unit/test_config.py::test_config_via_pyproject_legacy tests/unit/test_config.py::test_config_bad_pyproject_specified tests/unit/test_config.py::test_config_bad_config_type_specified tests/unit/test_config.py::test_interactive_na tests/unit/test_config.py::test_interactive_available tests/unit/test_config.py::test_interactive tests/unit/test_config.py::test_config_current_py
docs/changelog/1095.bugfix.rst src/tox/config.py
docs/changelog/1095.bugfix.rst src/tox/config.py