Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1168 commits
Select commit Hold shift + click to select a range
3230815
Merge commit 'e85248df3f1073343da87a6b00512e6a1e4a863d' into scratch-…
tgauth Jun 26, 2026
5e0da04
Merge commit 'd1c6c67a50fc957010fa027c6ab970424e9b9142' into scratch-…
tgauth Jun 26, 2026
3246ab5
Merge commit '6ebd472c391a73574abe02771712d407c48e130d' into scratch-…
tgauth Jun 26, 2026
ce5c136
Merge commit '2ebc6384258b58ace0ad2adb2593744f62749235' into scratch-…
tgauth Jun 26, 2026
a95ca20
Merge commit '0e1b8aa27f7c86d412c9e54ad9e2cae30d9ddab4' into scratch-…
tgauth Jun 26, 2026
90691a8
Merge commit 'ab5074dfb614e3801fecbd376d8ed4cea613c629' into scratch-…
tgauth Jun 26, 2026
2af0bd7
Merge commit '32deb00b38b4ee2b3302f261ea1e68c04e020a08' into scratch-…
tgauth Jun 26, 2026
a3445dc
Merge commit 'dc5147028ff19213a32281dad07bba02e58da3fa' into scratch-…
tgauth Jun 26, 2026
eac4491
Guard upstream SIGINFO handlers with #ifdef SIGINFO for Windows
tgauth Jun 26, 2026
a732f35
Merge commit '289239046b2c4b0076c14394ae9703a879e78706' into scratch-…
tgauth Jun 26, 2026
0a8610f
Remove obsolete ssh_packet_set_interactive args in w32-doexec for QoS…
tgauth Jun 26, 2026
ad15a14
Merge commit 'ae44cd74f3a4ac711152f50b2712803ccf785593' into scratch-…
tgauth Jun 26, 2026
162c532
Merge commit '3ef1a87d0a29eac94f32371af628e81eb2e2d817' into scratch-…
tgauth Jun 26, 2026
8ea89f6
Define PLEDGE_EXTRA_INET for Windows build
tgauth Jun 26, 2026
188c1cb
Merge commit 'a9a3f025d76f06a6601e6e8d52b468ec467865d9' into scratch-…
tgauth Jun 26, 2026
09c2eeb
upstream: mention that ssh-keyscan output is only as trustworthy as
djmdjm Jun 26, 2026
8dec7df
upstream: avoid possible NULL deref; from Swival scanner
djmdjm Jun 28, 2026
3648018
upstream: resist that return ".." via remote glob during
djmdjm Jun 28, 2026
1b39f39
upstream: avoid download to server-controlled path when performing
djmdjm Jun 29, 2026
c1cebbc
upstream: avoid situation where sftp_download() could get stuck in
djmdjm Jun 29, 2026
c58b363
upstream: fix ECDSA order check for curves with cofactor != 1. All
djmdjm Jun 29, 2026
1cfbed8
upstream: Fix bounds checking when signing messages of length
djmdjm Jun 29, 2026
d6a589d
upstream: make ssh-add open it's connection to the agent after it
djmdjm Jun 29, 2026
8436559
upstream: don't print an error message when trying to load a host
djmdjm Jun 29, 2026
ef6bef3
fix leak of error path; GHPR681 from metsw24-max
djmdjm Jun 29, 2026
fa5416d
use size_t for lengths; GHPR681 from metsw24-max
djmdjm Jun 29, 2026
9d5238f
return result of raise(2); GHPR681 from metsw24-max
djmdjm Jun 29, 2026
fceb78d
check sockaddr length; GHPR681 from metsw24-max
djmdjm Jun 29, 2026
3655229
don't leak rrset on fail; GHPR681 from metsw24-max
djmdjm Jun 29, 2026
d9df26d
upstream: don't use deprecated ERR_load_crypto_strings()
djmdjm Jun 29, 2026
c871613
upstream: report errors in fill_default_options() properly, based on
djmdjm Jun 29, 2026
849748c
upstream: correct directive name (s/Host/Match) in error message
djmdjm Jun 29, 2026
ce697f1
upstream: mention RefuseConnection, VersionAddendum and
djmdjm Jun 29, 2026
3c3226f
upstream: move documentation of the Include directive to near the
djmdjm Jun 29, 2026
a9cb2e3
upstream: fix "ls -n", which was still displaying user/group names
djmdjm Jun 29, 2026
0eaedde
upstream: s/calloc/xcalloc/ to reduce noise from AI bug detectors
djmdjm Jun 29, 2026
5d8e429
upstream: check strdup() return to avoid NULL deref on failure.
djmdjm Jun 29, 2026
0875a78
upstream: fix ineffective max file size check when loading
djmdjm Jun 29, 2026
245269e
Merge commit '19f7cb39eecb4b8f768f37e8294dc3a9142e022b' into scratch-…
tgauth Jun 29, 2026
dc4a540
Merge commit '23a2bb750547a9a5251cbc44c5ceb1d05303befe' into scratch-…
tgauth Jun 29, 2026
f715633
Merge commit 'a0b095fa03d3c08d723a803ce25540fddd955c53' into scratch-…
tgauth Jun 29, 2026
5e7ba64
Merge commit '2f369d3fd0ff3715c2b32dff5cb35c0330272445' into scratch-…
tgauth Jun 29, 2026
88f7cea
Merge commit '8866d24cdd1d6e73bb3220b753f94e255c49ff96' into scratch-…
tgauth Jun 29, 2026
46d6eaa
Add test_xextendf.c to unittest-misc Windows project for xextendf() u…
tgauth Jun 29, 2026
3d64954
Merge commit 'cc4eb3d6943cb57e08ab3abbcf92644deb429e46' into scratch-…
tgauth Jun 29, 2026
b7a4cfc
Merge commit 'f38a552dc71f20df2544338099e3fe2563f1a9ca' into scratch-…
tgauth Jun 29, 2026
8143046
Merge commit 'f64701ca25795548a61614d0b13391d6dfa7f38c' into scratch-…
tgauth Jun 29, 2026
45f4c58
Add test_misc.c to unittest-misc Windows project for misc.c unit tests
tgauth Jun 29, 2026
9b9af0d
Fix Get-CommitGroups: fail hard on GitHub API rate-limit exhaustion
tgauth Jun 29, 2026
27771ae
Merge commit '54abadd3f286efea0dbbdbfea8011d5e1e30c074' into scratch-…
tgauth Jun 29, 2026
450bc1a
Restore HAVE_*_H header guards stripped by upstream KNF reordering
tgauth Jun 29, 2026
5e3541c
Add win32compat clock_gettime to fix LNK4099 fido2.pdb warning
tgauth Jun 29, 2026
98c7700
Delete test user profile folder during cleanup
tgauth Jun 29, 2026
536ce53
Fix Get-CommitGroups: fail hard on GitHub API rate-limit exhaustion
tgauth Jun 29, 2026
231ab92
Merge pull request #14 from tgauth/tgauth-cleanup-local-user-folder
tgauth Jun 29, 2026
55dfd65
add WINDOWS if around test
tgauth Jun 29, 2026
331576d
Add merge guidance for upstream changes to Windows-adapted regress tests
tgauth Jun 29, 2026
c5e7861
Merge branch 'latestw_all_copilot' of https://github.com/tgauth/opens…
tgauth Jun 29, 2026
9f38aa9
Add merge guidance for upstream changes to Windows-adapted regress tests
tgauth Jun 29, 2026
b9d2162
upstream: Move user/group name lookup to correct place; coverity
djmdjm Jun 29, 2026
23a7c4d
upstream: revert bits that weren't ready for commit yet
djmdjm Jun 29, 2026
fa447bd
upstream: check key and IV length received in privsep state
djmdjm Jun 30, 2026
710cd5a
upstream: set FD_CLOEXEC on the fds between sftp and its ssh
djmdjm Jun 30, 2026
dcba967
upstream: another ruser_name/ruser_group vs attrib_to_stat() ordering
djmdjm Jun 30, 2026
ea42311
fix bash test
tgauth Jun 30, 2026
fc6077b
Merge commit '3d8ae7f235b96da604b08c44ae83420e367eeab4' into scratch-…
tgauth Jun 30, 2026
58e0b2b
Merge commit 'edc601707b583a2c900e49621e048c26574edd3a' into scratch-…
tgauth Jun 30, 2026
e05ce83
Merge commit 'a4aa090a3d40dddb07d5ebebc501f6457541a501' into scratch-…
tgauth Jun 30, 2026
8ba914d
Merge commit '80993390bed15bbd1c348f3352e55d0db01ca0fd' into scratch-…
tgauth Jun 30, 2026
9fb6fc2
Disable new upstream VM CI workflows for win32-openssh fork
tgauth Jun 30, 2026
875e509
Merge commit 'bc328144f149af07139a0f2c1329018cd85b86b7' into scratch-…
tgauth Jun 30, 2026
d4a2581
Merge commit 'eff358890a7cab1e7c2fec62e5b9914d2c1c8703' into scratch-…
tgauth Jun 30, 2026
f3dd22a
Merge commit 'e914e61eb88e22e5b725c399698256c54589ca32' into scratch-…
tgauth Jun 30, 2026
86e54a4
Windows: remove redundant waitpid in privsep_preauth (batch 83 build …
tgauth Jun 30, 2026
357cf98
Merge commit '37d996bd0537837f15fc540d5aebb1ef2faf2268' into scratch-…
tgauth Jun 30, 2026
47fc1ab
Merge commit '97b32fa2af25c16aec4de85c5cbb63fd038b4dfa' into scratch-…
tgauth Jun 30, 2026
d8f3ca8
Merge commit 'b06a150bc903a0cf898406384d5a34059d0f2d8f' into scratch-…
tgauth Jun 30, 2026
a938883
Merge commit 'fda31e1e5179b4e70c27094ebb303ee47c11a5a7' into scratch-…
tgauth Jun 30, 2026
8709119
Merge commit '893a579e4b37e6bd89d206dc8e7ac2a906ccf114' into scratch-…
tgauth Jun 30, 2026
aabe6d2
upstream: ssherr-libcrypto: avoid use of deprecated
botovq Jun 30, 2026
fe85df4
upstream: mention mldsa44-ed25519 in usage(); based on GHPR695 from
djmdjm Jun 30, 2026
2963932
upstream: ssh -o doesn't support Host or Include options, they are only
djmdjm Jul 1, 2026
8b05bbe
upstream: Move negative-FD checks to before first use. CID 909998,
daztucker Jul 1, 2026
55ffd11
upstream: Tighten up the introduction a little:
djmdjm Jul 1, 2026
0cdead0
upstream: simplify SIGINFO output: remove list of active channels (too
djmdjm Jul 1, 2026
088ca00
upstream: whitespace
djmdjm Jul 1, 2026
654e1a3
upstream: more missing mldsa44-ed25519, based on GHPR696 from Loganaden
djmdjm Jul 1, 2026
0a75a95
Provide better error for non-supported private keys
ZoltanFridrich Apr 16, 2025
c111cb1
Merge commit 'd343df4019b4369ce7f87e9bf6bbc80b81cd263d' into scratch-…
tgauth Jul 1, 2026
73ff35c
Merge commit '2c504a74ed81d13c8198a89ed1040d0fc5f73129' into scratch-…
tgauth Jul 1, 2026
9c8d013
Merge commit 'b9f6a84ea383d811216de38219472214963c10b2' into scratch-…
tgauth Jul 1, 2026
d83ee82
Merge commit '3957cc2914cdc88932c972413853f8b68c1ffba5' into scratch-…
tgauth Jul 1, 2026
45e0a59
Merge commit 'a9cbe10da2be5be76755af0cea029db0f9c1f263' into scratch-…
tgauth Jul 1, 2026
66e5877
Merge commit 'c97b931bffa481c72ff4bfddd9d59a2110899289' into scratch-…
tgauth Jul 1, 2026
26a5f51
Windows: use openbsd-compat clock_gettime instead of win32compat dupl…
tgauth Jul 1, 2026
e64fc46
Merge commit 'b937061fe4922caced7b91442b3233c0bd763492' into scratch-…
tgauth Jul 1, 2026
ab50c71
Merge commit 'bcf7c05a473f92a35f4f3b561fd7a1e339e0a30f' into scratch-…
tgauth Jul 1, 2026
f0f9019
Merge commit '081b8dbbe90d81a43b5e0f1995fe59a0e319aa15' into scratch-…
tgauth Jul 1, 2026
c53864f
Tabs -> spaces.
daztucker Jun 25, 2026
a5ecfdc
Need clang >= 19 for constexpr in hardened_malloc.
daztucker Jul 2, 2026
b137bd4
Merge commit 'd6212b0b89241e96d2fea9619b2d66ea668bceaa' into scratch-…
tgauth Jul 2, 2026
a2b0209
Merge commit 'a6ee0eb8cd951d0a00b2f06687c77f8f573b5985' into scratch-…
tgauth Jul 2, 2026
48feff8
Merge commit '3adc47e161901001816045c032fa61e94b0c9426' into scratch-…
tgauth Jul 2, 2026
72bd9eb
Merge commit 'a4e404a64b117a15453075ee26eb061d416e58cd' into scratch-…
tgauth Jul 2, 2026
4da6fad
Fix Windows failures in scp/scp3/sftp-cmds recursive dotdot tests
tgauth Jul 2, 2026
85dcff2
revise README.privsep for multi-binary model
djmdjm Jul 3, 2026
01ed1c6
tweak previous
djmdjm Jul 3, 2026
f80e654
tweak; from dlg@
djmdjm Jul 3, 2026
3912be7
more README.privsep polish
djmdjm Jul 3, 2026
c123ac1
more config option details in README.privsep
djmdjm Jul 3, 2026
aab5620
grammar fix; from Daniel O'Connor
djmdjm Jul 3, 2026
93d6348
upstream: fix inverted test that broke ssh-add with keys on stdin. From
djmdjm Jul 5, 2026
cf67d46
upstream: void functions should not return anything. Patch from Tim
daztucker Jul 5, 2026
d43ba60
upstream: Fix cases in GSSAPI and keyboard-interactive
djmdjm Jul 6, 2026
e8bdfb1
upstream: fix ownership and lifetime of several bits of client
djmdjm Jul 6, 2026
5d04ca6
upstream: Fix multiple RFC 4462 (GSSAPIAuthentication) compliance
djmdjm Jul 6, 2026
0210c7c
upstream: openssh-10.4
djmdjm Jul 6, 2026
0227fe4
crank version numbers
djmdjm Jul 6, 2026
449d25b
depend
djmdjm Jul 6, 2026
e8dd756
autogenerated files for release
djmdjm Jul 6, 2026
bea9b80
Merge commit 'ce49aceba9f4b5f34a1041145782914aa35ca880' into scratch-…
tgauth Jul 16, 2026
8310ebe
Merge commit 'a204650386124df8035b8c8613dccbe9b3158cdf' into scratch-…
tgauth Jul 16, 2026
953fca8
Merge commit '74369b2b7c366887211ef5c092b0aaa60f31ef11' into scratch-…
tgauth Jul 16, 2026
018d6ee
Merge commit '52712d5f11172ca98ffb0b2ac93007f74cb67134' into scratch-…
tgauth Jul 16, 2026
bc7975d
Merge commit 'ffd086b69886e8cfeb74f9b2bcb18764bf7d9a52' into scratch-…
tgauth Jul 16, 2026
c280a3b
Merge commit '0ffb76c6590800958777cd0f7b1aaae19c74fa3f' into scratch-…
tgauth Jul 16, 2026
5c96b14
Merge commit '4f3e65bda22b65dc5fff82df1e97af07456fed42' into scratch-…
tgauth Jul 16, 2026
d4953b4
Merge commit '7e5d404cf73b6762715eec69b67cce2c4801f9e9' into scratch-…
tgauth Jul 16, 2026
6648715
Update VS projects for OpenSSH 10.3 ed25519/hash build changes
tgauth Jul 16, 2026
28b301a
Merge commit 'd12813314452173b1709f7fdbae74add84c0056f' into scratch-…
tgauth Jul 16, 2026
dfa43f6
Merge commit '08786bbe7eebff316efb0b4ccb882f93f33a16b8' into scratch-…
tgauth Jul 17, 2026
f73087c
Merge commit '7cb3ea4dcc7d73b2fad6782a119901cfa2b022aa' into scratch-…
tgauth Jul 17, 2026
8a466e1
Merge commit '6aba7008e6451ae3f9298214b13b8eded5fd9ff0' into scratch-…
tgauth Jul 17, 2026
f7a5ed2
Merge commit 'e2b93e16232834c61c9dcff5b20e4c55a26b324d' into scratch-…
tgauth Jul 17, 2026
4636af6
Merge commit 'bad220decb95d3b5cc6e30f843c4fc9d9b0b7a67' into scratch-…
tgauth Jul 17, 2026
a9708d3
Merge commit '58533bbdf7aa0548de8e2abd3cb2de0593fa9fdc' into scratch-…
tgauth Jul 17, 2026
93002c5
Merge commit 'ccad76e9e1e4f06889ee023893cea98bc165858b' into scratch-…
tgauth Jul 17, 2026
ae10d68
Merge commit 'a8718c3fc52511e5237f1cbe10c210948c5616ea' into scratch-…
tgauth Jul 17, 2026
b276dda
Merge commit '71e8779113965d60d91ba2d15cdeeb43ecf230a7' into scratch-…
tgauth Jul 20, 2026
c0423db
Merge commit '69965aefe3355488e0462291be13a233b8405091' into scratch-…
tgauth Jul 20, 2026
3b25d10
Merge commit '1fdc3c61194819c16063dc430eeb84b81bf42dcf' into scratch-…
tgauth Jul 20, 2026
5fb848a
Merge commit '6157e1c41071fb0f5621868c38861934284268b1' into scratch-…
tgauth Jul 20, 2026
cbf8a15
Merge commit 'c23122c5ea7348b7b6daa2982e53c201a5354007' into scratch-…
tgauth Jul 20, 2026
1143535
Merge commit '2d0d26602f739b4a3ddde6c4dbc8f3ddab38ac0d' into scratch-…
tgauth Jul 20, 2026
8426e5f
Merge commit '52037ed910a9dcb669b9c9f612ccac711ac586f2' into scratch-…
tgauth Jul 20, 2026
692e56a
Guard util.h include in packet.c with HAVE_UTIL_H for Windows build
tgauth Jul 20, 2026
94344d8
Merge commit '8fce5520a1c9c2cf3fc6c6974dd158f4b3ce9c4e' into scratch-…
tgauth Jul 20, 2026
e997b71
Merge commit '66622394fd3a51e9a6c99c39a068f8ba709542fa' into scratch-…
tgauth Jul 20, 2026
d94a514
Declare loop variable i in Windows do_local_cmd block in scp.c
tgauth Jul 20, 2026
366a9d6
Merge commit '185459dd87c4f7580a2591fbbbb1d800ec249b78' into scratch-…
tgauth Jul 20, 2026
49d15d0
Merge commit 'd05b704086d53c02f4ad7de921435f7e7e3ad60a' into scratch-…
tgauth Jul 21, 2026
bb8e343
Merge commit '24f32f7755801b16368375b8e27fb1a48d250fc5' into scratch-…
tgauth Jul 21, 2026
1d80780
Merge commit '94bf1154b4132727114f222a587daeac101f1f5b' into scratch-…
tgauth Jul 21, 2026
08c156b
Merge commit 'f878d7ccc25b02a39e6766f5dd405d5de6fb106c' into scratch-…
tgauth Jul 21, 2026
44c5adc
Merge commit '345892ba2e8efea4be03675c866395bee251c117' into scratch-…
tgauth Jul 21, 2026
4c7a930
Merge commit 'b652322cdc5e94f059b37a8fb87e44ccb1cdff33' into scratch-…
tgauth Jul 21, 2026
177ee5f
Merge commit '09daf2ac5f248dc5d60a6f3a703b479d67da14b4' into scratch-…
tgauth Jul 21, 2026
59d743d
Merge commit 'ea367b4bbc3fd49f84683763723425adfdce35c0' into scratch-…
tgauth Jul 21, 2026
a17cb9a
Merge commit 'a6f8f793d427a831be1b350741faa4f34066d55f' into scratch-…
tgauth Jul 27, 2026
591a32c
Merge commit '1cc936b2fabffeac7fff14ca1070d7d7a317ab7b' into scratch-…
tgauth Jul 27, 2026
befa99c
Merge commit 'd7950aca8eacae8b889d92c669e913111af75984' into scratch-…
tgauth Jul 27, 2026
30b73c8
Merge commit '832a77000abe61f61bddb9e595f45c7131c0269d' into scratch-…
tgauth Jul 27, 2026
d9817fb
Merge commit '6463960c58cd0adcb26bfbddceb9d4efcfbd9dd0' into scratch-…
tgauth Jul 27, 2026
8937441
Merge commit '91c4d422cc0af2ae592f5e6c0cc505a5d8d7a6d2' into scratch-…
tgauth Jul 27, 2026
be40cee
Merge commit '86e0f4aa2c72d5e96618f0c7214109f5a46ca70d' into scratch-…
tgauth Jul 27, 2026
1fce673
Merge commit 'b83c0bb5109eb245dd4f06e4af4a960f96a0c193' into scratch-…
tgauth Jul 27, 2026
6621c06
Merge commit '670f7d210ceae59db73b16b67e52d8fd8def3012' into scratch-…
tgauth Jul 27, 2026
47f0e1a
Add ssherr-libcrypto.c to libssh.vcxproj for OpenSSH 10.3 merge
tgauth Jul 27, 2026
c80bf60
Merge commit '15fe1ceb29760d72398c6ac7df5a403416cba207' into scratch-…
tgauth Jul 27, 2026
84da2b3
Merge commit '2a1a257612b7c6bcacd934149146a3da7411c485' into scratch-…
tgauth Jul 27, 2026
c9be0ce
Merge commit '47828dbd95c095d0cad327e12bb6859a510833c8' into scratch-…
tgauth Jul 27, 2026
3dcb121
Add Windows glob.h compat shim and guard sys/queue.h for v10.3 merge
tgauth Jul 27, 2026
fa80a19
Merge commit '1a4eb511abaf3522b84fa5697524b81b4865279b' into scratch-…
tgauth Jul 27, 2026
08d2c54
Add Windows sys/{queue,tree,mount}.h compat shims for v10.3 merge
tgauth Jul 27, 2026
5698ae2
Merge commit 'c2447697aaecae11d164f1ba30e06d14b5cabcdd' into scratch-…
tgauth Jul 28, 2026
aa6ce87
Fix Windows build: use u_int for num_revoked_keys_files in servconf.h…
tgauth Jul 28, 2026
beaa49b
Merge commit 'd8b806a2e6cd50c729e5d2bad569955a1df33f63' into scratch-…
tgauth Jul 28, 2026
1287349
Merge commit '9eb778cfde5bca1d84bbad74d8664256301bb13b' into scratch-…
tgauth Jul 28, 2026
a7823a1
Merge commit '2b0f4a72bd87bef7cc9f0a1889cfc98545cbb158' into scratch-…
tgauth Jul 28, 2026
976e7bd
Merge commit '84206bde8adbef2dfe4f5b97dd23399827015333' into scratch-…
tgauth Jul 28, 2026
4c34270
Merge commit '5f98660c51e673f521e0216c7ed20205c4af10ed' into scratch-…
tgauth Jul 28, 2026
024f68f
Merge commit 'c940e709ae2155a4614bc3709e393d88fdddabde' into scratch-…
tgauth Jul 28, 2026
a2ec96c
Merge commit 'acf749756872d7555eca48514e5aca6962116fb2' into scratch-…
tgauth Jul 28, 2026
d8d3522
Merge commit 'b50b881b17ab15e34b5e57b159b65f2a02725798' into scratch-…
tgauth Jul 28, 2026
4e8abfa
Merge commit 'bb781f02d4efd178e329a62a838962bee16e3e9b' into scratch-…
tgauth Jul 28, 2026
0c45f10
Merge commit '2a387ba37452971747d2f00db7d4c18b4f2c45ed' into scratch-…
tgauth Jul 29, 2026
c233edf
Merge commit 'e067ccd6b4306ca6422d94ff7ddd231cbddd43cb' into scratch-…
tgauth Jul 29, 2026
b860261
Merge commit '4e15f7fc0c0ba897c227350eee1462d635ab32a6' into scratch-…
tgauth Jul 29, 2026
0bc012d
Merge commit 'ef98b6014bc3268e904092894ffcb63022172a97' into scratch-…
tgauth Jul 29, 2026
5dc1a03
Merge commit '552a5c786b60a9cfe0d2c157dd18f78950529513' into scratch-…
tgauth Jul 29, 2026
4764ded
Merge commit '2ca6eef69d7dbecfd67cede25ea6a9aa1074ba3e' into scratch-…
tgauth Jul 29, 2026
36e0e1c
Merge tag 'V_10_3_P1' into scratch-merge-v10.3P1-20260420
tgauth Jul 29, 2026
71d1f6c
Adapt proxyjump.sh regress test for Windows CRLF output
tgauth Jul 30, 2026
ff5dd00
Merge remote-tracking branch 'upstream-pwsh/latestw_all' into scratch…
tgauth Jul 31, 2026
23a90d9
refine merge agent/tools/instructions
tgauth Jul 31, 2026
cc1e88f
fix merge conflicts
tgauth Aug 3, 2026
bed7bc3
Merge commit '2029eddf4d57c654d53cdac7a192511de3b386dd' into scratch-…
tgauth Aug 3, 2026
a8f4a7b
Merge commit 'b9ccca0edfbd46b3114192956d9aaea3e7bc3c08' into scratch-…
tgauth Aug 3, 2026
df57055
Merge commit '1c553a16065a95284468cd79b1c4919929dfe3ac' into scratch-…
tgauth Aug 3, 2026
1b3a0d6
Merge commit '7ab5e4073a508a342be49e2c238087b2de4e099f' into scratch-…
tgauth Aug 3, 2026
091cbc9
Merge commit '328993c8991e5cde61f5abf1b87b26fa2537ae6c' into scratch-…
tgauth Aug 3, 2026
7841c74
Merge commit '4ea08a0353f85b5b0cc1ddd70da5fa23e7d588a4' into scratch-…
tgauth Aug 3, 2026
7d62c37
Merge commit 'ac4a41265a3beccba7dc6f45c657298311280f01' into scratch-…
tgauth Aug 3, 2026
131fdb4
Merge commit '56e73cd804cff08e38caaa03b75bec253f16fd62' into scratch-…
tgauth Aug 3, 2026
39a49e4
Merge commit '55df196e39cb23fd53e42b2f07292ffc01650bff' into scratch-…
tgauth Aug 3, 2026
a0ffad2
Merge commit 'cf6c0b3b94cdc223f1b8be1ef2d93e993af5d976' into scratch-…
tgauth Aug 3, 2026
c7aaedc
Merge commit 'a5a1b7e75389231bf817433d93f15732ba13c0ad' into scratch-…
tgauth Aug 3, 2026
fc4efb7
Merge commit '0a561f90672b6dc6187763f3b90e47c4c4247875' into scratch-…
tgauth Aug 3, 2026
e66204f
Merge commit 'f44f124a234785b9d2cd59a6da28737fb3c4ad9a' into scratch-…
tgauth Aug 3, 2026
fc3cf7c
Merge commit '7ab700f1706b154d4bc5cf66e19c05be6d9b1fc1' into scratch-…
tgauth Aug 3, 2026
80bb583
fix bash test
tgauth Aug 4, 2026
7291c90
Merge commit '5a5e47740b6466d58242aca28b9e584bab4ccf1d' into scratch-…
tgauth Aug 4, 2026
15c65f8
Merge commit 'df18979e1137f41a3ffa25f9d06c4fc55073cb34' into scratch-…
tgauth Aug 4, 2026
0aa63d1
Merge commit 'a1dd1c80687fbfbdca19d3a314a8176b90ae471b' into scratch-…
tgauth Aug 4, 2026
7f87b1c
Merge commit '58b9381e0b1dbc8e56190b26fb61bae4cfb240be' into scratch-…
tgauth Aug 4, 2026
9051b4d
Merge commit 'de24573efc60ca145e4f2d7e45787eccf8bd41a4' into scratch-…
tgauth Aug 4, 2026
af69fde
Merge commit 'de97e5a44c88179b834939b84cd555249382de0e' into scratch-…
tgauth Aug 4, 2026
dc6fb50
Merge commit 'e8c12cc085272894e7c14eb761e82ec7c0d8f599' into scratch-…
tgauth Aug 4, 2026
a50e00a
Merge commit 'c9ebebb22fa50ca50bd036599028d7e09f841c3f' into scratch-…
tgauth Aug 4, 2026
5306893
Merge commit '7763a38bc2595be50baf1d72b19bf4720e41e8e3' into scratch-…
tgauth Aug 4, 2026
bdbe4db
Fix SSHDConfig Include tests for canonical keyword case
tgauth Aug 4, 2026
2a24810
Merge commit '70d7044a966a541d9df6002fbeb62d005555cc78' into scratch-…
tgauth Aug 4, 2026
f30121c
Merge commit '47af21eb8d480c0f368a629ab58e31b993ed28f2' into scratch-…
tgauth Aug 4, 2026
4c5ebd1
Merge commit '5af8f3f290bd892352eb007866c066b7bf4a4385' into scratch-…
tgauth Aug 4, 2026
ceb71c9
Merge commit 'f5f02aafe89971d838d7fbc6b0cf240cee4d48bc' into scratch-…
tgauth Aug 4, 2026
c8b4c35
Add ML-DSA/Ed25519 composite PQ sources to libssh.vcxproj
tgauth Aug 4, 2026
2379f0a
Merge commit '860ed04158f2c6dc870ea7c98c23dcafc7772dd4' into scratch-…
tgauth Aug 4, 2026
68510a6
Merge commit 'f433c09931665b1139dc9ef0951d3540242e4a38' into scratch-…
tgauth Aug 4, 2026
60091d2
Merge commit 'b9d134a0b16a1810e9bbfac5bc687f5dbc75e7fa' into scratch-…
tgauth Aug 4, 2026
99ad00b
Merge commit '0d156d385e1e9c31bd5fb3652cf620a1f51c9b19' into scratch-…
tgauth Aug 4, 2026
cce82b0
Merge commit '01404fa5da11ed08c6ebecd09aaa3ebfbd79f206' into scratch-…
tgauth Aug 4, 2026
f6f9843
Enable USE_MLDSA on Windows for composite ML-DSA44/Ed25519 keys
tgauth Aug 5, 2026
4ef768d
Merge commit '5dac5a9252074fb39da617ffc123830266614a4c' into scratch-…
tgauth Aug 5, 2026
06754be
Merge commit '6f74eb3c56f8dc4886d2bc5b068c5bf82cb6db74' into scratch-…
tgauth Aug 5, 2026
e4df014
Merge commit 'd6a589d3c8530375c2d56bcfb914575a7fcd3715' into scratch-…
tgauth Aug 5, 2026
449f316
Merge commit '84365594f44423b69392f295f82e9cbcdd8c2640' into scratch-…
tgauth Aug 5, 2026
22e422f
Merge commit 'd9df26d7e93f76bc5b1c0cbd31cde0af00ccbbc0' into scratch-…
tgauth Aug 5, 2026
0fb44f7
Merge commit 'c8716138281d3dac33c2c7e98615c52d2b606d85' into scratch-…
tgauth Aug 5, 2026
af9dd93
Merge commit '3c3226f79cf4fa1c0436a91768760b92df87ffab' into scratch-…
tgauth Aug 5, 2026
24f732b
Merge commit 'dcba967d3f39f89d17634e550e1741b2b91f4c5c' into scratch-…
tgauth Aug 5, 2026
18952ae
Merge commit 'fe85df40aed36a49b9883186a123a1435c17f895' into scratch-…
tgauth Aug 5, 2026
ea5f140
Merge commit '55ffd11b88f073662cdf0c8c48fe0800b8a71fc4' into scratch-…
tgauth Aug 5, 2026
01eb6e6
Merge commit '088ca00b8f19a0257b2f869cb828ab75e99ab3a1' into scratch-…
tgauth Aug 5, 2026
a9655c9
Merge commit '0a75a95d582028c5ce91f524c20365df9f2515f2' into scratch-…
tgauth Aug 5, 2026
5992c81
Merge commit 'a5ecfdc21864b29ef9a939b9cfe7a2a8ffcdf439' into scratch-…
tgauth Aug 5, 2026
a77b674
Merge commit '93d6348ae44491b7542d78c0d55da7130e9db017' into scratch-…
tgauth Aug 5, 2026
3deec09
Merge commit 'cf67d46cba77d493152830a108b5f294ee9c5140' into scratch-…
tgauth Aug 5, 2026
02122f9
Merge commit '449d25b4f8b8d3bb55a865ebcbec17b39b37c208' into scratch-…
tgauth Aug 5, 2026
636c2d8
Sync version.rc to OpenSSH 10.4p1
tgauth Aug 5, 2026
83cf405
Merge commit 'e8dd756725e8800fcd0b3fd71ee6b4382d1e8fab' into scratch-…
tgauth Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
352 changes: 173 additions & 179 deletions .depend

Large diffs are not rendered by default.

26 changes: 13 additions & 13 deletions .git_allowed_signers.asc
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEcWi5g4FaXu9ZpK39Kj9BTnNgYLoFAmYHnZ8ACgkQKj9BTnNg
YLquuQ/6A8E6P2jcgn3wmbbCTXP7kmxoh3nmw/e6PC8CEua1512oT3GHOKVD5cGK
cgYRObpWvjOjg7L1HRABftq7a9M2zfsGnY/WNe3/fbetfkyY8hG8c31vA1ePIOt2
AjBLCWFblH0CtyH/MssoQ19JCLtXK/GmekB1Q0JzyOog7w/0r3CKuUnZ0juCYR1R
4FBePl5l3nFSZEcFEdptGlNGeuolS5XBCqB9Y91TCzkVkH5eXUUW+shgjNhWCEhT
pZvkxfhsmOEnwNofyPdgKVfDBVkHmvuC67EU395mJVN4c2NZ8pOztb9hOt3xr980
q44I4kT2NpaApCx1dWIGhMy/37LJ8heI0W1B+ofTA5n34/RU8UXH3SCkj2AK6Ao5
H2u8vbmuWKUCiECmrw35EeKGmtuK/bWJzx3KBP7fx5J9S3mWUgT4W4xlWNN9RWoU
sSvH1ppie5ARINVaAWl5k44fk60ahTf80DbQBIOZBmQn7myZZka+yGcQbAiZZ1Gc
0l8+Nf5Ao1ckmuyY5o8FyWdsyDeK3+MqjPn5Rr1CqbKCn2VnqrVWbI33Eyu8c96U
bxVgU5H1BDhNjJC8UrT3LFPvJMO8p3a0IJ3eHydjk2jVOhOdBZmA0yoqUTrhPpXq
ymIHESjDJR8TDe4TCfb46o9oEC3cdbDwgnzPqdg0n+0uIsJLYiU=
=gl+l
iQIzBAABCgAdFiEEcWi5g4FaXu9ZpK39Kj9BTnNgYLoFAmnevEAACgkQKj9BTnNg
YLr72w//ay7JpFSfUF5h97Vi2T58fwkRO2aapXrK8f3mnzeelN9H09XBpRquFZCL
o5S/8RSmVtRjCTXyo7GjwhaAF6+XyKiKgwvjTnY9EA4leCCoNdBJ2/77xlBZdPD4
AuKPRQKpGjJi+P+2yB0ocgpT6MWXDlg0xkdLWaiQC4xpADUD9AlebUVHtCPOqXWb
LgGampMjQu8usg9QX3x0oHpuMUot+wo3dTD2xjgWv03DmPK7wCUiA760GeEGibma
jv3JT8JZnDtPk4J0PpoJecoJsMhH9Zoy55yi3d4y/SxBUSIBFs2qcw4tO3iixZwD
mlZVW83KFhIlH6Q8GJtymrYrQ2Gw88wWZ6Oj3glzHCkrxUeO9MIbnTSzXekg6+O7
qBxQC4xdlNtHFS+GvG3EZzztl8C4Qfmdl35bStQaVhWzygI5+o19yoeYi4lMTYQM
CAH6ONeDFvm3SwlTJk41O/zXz7mO1vRpsn5QMCHt3KLBZkkMrSKl4C2r9iuq7MeY
gx3mnPW6/yu1TzGUl5wtzeb6I2R1/zPK3ibhbGQyt4WggCio3D8xmcmhyxKL79fi
Pb02QXRYplXrkR6Lf2HCRdJoNu3bodqelkeiAtgj0CLHlK355dtmya6txn4Ccoc1
+kH7vdHqPKJSrsMBZ/Qm+0dA9Kq4Qoib2tog9De09u5p8XQUdAY=
=9i1L
-----END PGP SIGNATURE-----
266 changes: 266 additions & 0 deletions .github/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,266 @@
# `.github/` — AI-Assisted Development for OpenSSH-Portable (Windows Fork)

This folder contains everything needed to work on the PowerShell team's
Windows fork of OpenSSH-Portable with AI assistance in VS Code (GitHub
Copilot Chat / agent mode). It bundles together **agents**, **prompts**,
**instructions**, **skills**, and a set of PowerShell **tools** exposed as
an **MCP server** so that complex workflows (especially upstream merges)
can be driven mostly by an AI agent with a human reviewer in the loop.

If you are new here, read the [Overview](#overview) first, set up the
[MCP server](#mcp-server-setup-vscodemcpjson), then jump to
[Merging from upstream](#merging-from-upstream) for the most common
workflow.

---

## Overview

### What lives in `.github/`

| Folder | Purpose |
|---|---|
| [`agents/`](./agents/) | Custom Copilot **agent modes** — pre-configured personas with curated tool access for specific workflows. |
| [`prompts/`](./prompts/) | Reusable **prompt templates** that kick off a workflow with the right inputs and context. |
| [`instructions/`](./instructions/) | **Instructions** auto-loaded into agent context (via `applyTo` globs) describing repo conventions, build process, merge strategy, testing, etc. |
| [`skills/`](./skills/) | Self-contained **skill packages** the agent can invoke for narrow, repeatable tasks (e.g. bumping a vcpkg port). |
| [`tools/`](./tools/) | PowerShell scripts exposed through the MCP server as callable tools (build, test, git, merge orchestration, vcpkg). |
| [`workflows/`](./workflows/) | GitHub Actions workflows (CI). Not AI-related. |

### How the pieces fit together

```
┌────────────────────────────────────────────────────────────────┐
│ VS Code + GitHub Copilot (chat / agent mode) │
│ │
│ ├─ loads instructions/*.md (auto, by applyTo) │
│ ├─ can switch into an agent from agents/*.agent.md │
│ ├─ can be launched via a prompt from prompts/*.prompt.md │
│ ├─ can invoke skills from skills/*/SKILL.md │
│ └─ can call MCP tools ──────────────────┐ │
└───────────────────────────────────────────┼────────────────────┘
┌─────────────────────────────┐
│ MCP server (openssh-server)│
│ defined in .vscode/mcp.json│
│ runs PowerShell from │
│ .github/tools/*.ps1 │
└─────────────────────────────┘
```

---

## Repository setup

Follow [instructions/setup.instructions.md](./instructions/setup.instructions.md)
end-to-end. It covers cloning the fork, configuring the `upstream` and
`upstream-pwsh` remotes, prerequisites (Visual Studio + Windows SDK), and
cloning + bootstrapping vcpkg via
[Install-VcpkgDependencies.ps1](./tools/Install-VcpkgDependencies.ps1).
For the vendored dependency model itself, see
[instructions/vcpkg.instructions.md](./instructions/vcpkg.instructions.md).
Once setup is complete, do a baseline build per
[instructions/build.instructions.md](./instructions/build.instructions.md).

---

## MCP server setup (`.vscode/mcp.json`)

The PowerShell scripts in [`tools/`](./tools/) are exposed to Copilot via
a small MCP (Model Context Protocol) server so the agent can call them as
first-class tools (`mcp_openssh-server_Start_OpenSSHBuild`,
`mcp_openssh-server_Invoke_Git`, etc.).

### 1. Install the MCP host module

The server is hosted by the `MCPServerPS` PowerShell module, which wraps
each `.ps1` in `-ScriptRoot` as an MCP tool. See the linked package page
for installation details: https://github.com/daxian-dbw/MCPServerPS/pkgs/nuget/MCPServerPS

### 2. Configure VS Code

Create `.vscode/mcp.json` at the repo root (already present in this repo
— adjust the path if your clone lives elsewhere):

```json
{
"servers": {
"openssh-server": {
"type": "stdio",
"command": "pwsh",
"args": [
"-noprofile",
"-c",
"MCPServerPS\\Start-MyMCP -ScriptRoot C:\\repos\\openssh-portable\\.github\\tools"
]
}
},
"inputs": []
}
```

> **Path note:** Update `C:\repos\openssh-portable\.github\tools` to the
> absolute path of `.github/tools` in your clone.

### 3. Start the server in VS Code

- Open the **MCP: List Servers** command (Command Palette).
- Start `openssh-server`. You should see the tools become available to
Copilot Chat (their names are prefixed with
`mcp_openssh-server_`, e.g. `mcp_openssh-server_Invoke_Git`).
- In agent mode, the agent will discover and call them automatically.

### 4. Available MCP tools

All tools are PowerShell scripts under [`tools/`](./tools/). They are
documented in detail inside their respective instruction files; here's a
quick map:

| Tool (MCP name) | Script | What it does |
|---|---|---|
| `mcp_openssh-server_Test_MergePrerequisites` | [Test-MergePrerequisites.ps1](./tools/Test-MergePrerequisites.ps1) | Verify environment + remotes are ready for a merge. |
| `mcp_openssh-server_Get_CommitGroups` | [Get-CommitGroups.ps1](./tools/Get-CommitGroups.ps1) | Group upstream commits into mergeable batches by CI presence/success. |
| `mcp_openssh-server_Get_RemainingCommitCount` | [Get-RemainingCommitCount.ps1](./tools/Get-RemainingCommitCount.ps1) | Count commits remaining between a start ref and the end tag/HEAD (merge progress). |
| `mcp_openssh-server_Invoke_Git` | [Invoke-Git.ps1](./tools/Invoke-Git.ps1) | Structured wrapper around git operations (Status, Merge, Diff, Checkout, …). |
| `mcp_openssh-server_Get_ConflictContext` | [Get-ConflictContext.ps1](./tools/Get-ConflictContext.ps1) | Three-way diff context for high-complexity merge conflicts. |
| `mcp_openssh-server_Test_MergeConflictMarkers` | [Test-MergeConflictMarkers.ps1](./tools/Test-MergeConflictMarkers.ps1) | Scan the working tree for leftover conflict markers (`<<<<<<<`, `=======`, `>>>>>>>`) and unmerged paths. |
| `mcp_openssh-server_Sync_VersionResource` | [Sync-VersionResource.ps1](./tools/Sync-VersionResource.ps1) | Sync `contrib/win32/openssh/version.rc` numbers to `version.h` after a version bump. |
| `mcp_openssh-server_Start_OpenSSHBuild` | [Start-OpenSSHBuild.ps1](./tools/Start-OpenSSHBuild.ps1) | Build the Win32-OpenSSH solution. Defaults to the host architecture. |
| `mcp_openssh-server_Test_OpenSSHBuild` | [Test-OpenSSHBuild.ps1](./tools/Test-OpenSSHBuild.ps1) | Parse the most recent build log for errors and warnings. |
| `mcp_openssh-server_Test_OpenSSHFunctionality` | [Test-OpenSSHFunctionality.ps1](./tools/Test-OpenSSHFunctionality.ps1) | End-to-end smoke test (install service, connect, cleanup). |
| `mcp_openssh-server_Invoke_OpenSSHTests` | [Invoke-OpenSSHTests.ps1](./tools/Invoke-OpenSSHTests.ps1) | Full CI suite (unit + bash + Pester E2E). |
| `mcp_openssh-server_Install_VcpkgDependencies` | [Install-VcpkgDependencies.ps1](./tools/Install-VcpkgDependencies.ps1) | Bootstrap vcpkg and install vendored deps. Also runnable directly from a terminal for first-time setup. |
| `mcp_openssh-server_Update_VcpkgPort` | [Update-VcpkgPort.ps1](./tools/Update-VcpkgPort.ps1) | Bump a vendored vcpkg port. Orchestrated by the `update-vcpkg-port` skill. |

---

## Instructions, agents, prompts, and skills

### Instructions ([`instructions/`](./instructions/))

Markdown files with YAML frontmatter that the agent loads automatically
based on `applyTo` globs. They encode the conventions and workflows of
this repo so you don't need to repeat them in every prompt.

General:
- [getting-started.instructions.md](./instructions/getting-started.instructions.md) — index of all instruction files
- [repository-overview.instructions.md](./instructions/repository-overview.instructions.md) — repo layout + Windows compatibility layer
- [setup.instructions.md](./instructions/setup.instructions.md) — clone, remotes, prerequisites, vcpkg
- [build.instructions.md](./instructions/build.instructions.md) — building on Windows + warning policy
- [testing.instructions.md](./instructions/testing.instructions.md) — functional + full CI testing
- [vcpkg.instructions.md](./instructions/vcpkg.instructions.md) — vendored dependency reference
- [agent-communication.instructions.md](./instructions/agent-communication.instructions.md) — how the agent should talk to you

Merge-specific (under [`instructions/merge/`](./instructions/merge/)):
- [merge-process-overview.instructions.md](./instructions/merge/merge-process-overview.instructions.md) — the two-phase workflow end-to-end
- [merge-details.instructions.md](./instructions/merge/merge-details.instructions.md) — conflict resolution patterns + decision trees
- [research.instructions.md](./instructions/merge/research.instructions.md) — what to read before merging (release notes, prior PRs)
- [agent-communication-merge.instructions.md](./instructions/merge/agent-communication-merge.instructions.md) — communication templates for batches

### Agents ([`agents/`](./agents/))

Custom Copilot agent modes with curated tool sets and a system prompt
tuned to a workflow.

- [merge-upstream.agent.md](./agents/merge-upstream.agent.md) — drives
the upstream merge workflow end-to-end (analysis → batch merges →
build → test → PR prep). Switch to it from the Copilot Chat agent
picker.
- [conflict-review.agent.md](./agents/conflict-review.agent.md) —
review-only subagent the merge agent delegates to after resolving a
batch's conflicts. Audits resolutions for leftover markers, prefer-
upstream bias, balanced Windows guards, silently auto-merged changes
needing Windows follow-up, and version sync; returns APPROVE or
CHANGES-REQUIRED.

### Prompts ([`prompts/`](./prompts/))

Reusable prompt templates with documented inputs.

- [merge.prompt.md](./prompts/merge.prompt.md) — kicks off a merge with
the right context. Provide a start ref (and optionally end ref,
remotes, validation scenario), and the agent handles the rest.

### Skills ([`skills/`](./skills/))

Self-contained workflow skills the agent reads on demand.

- [update-vcpkg-port](./skills/update-vcpkg-port/SKILL.md) — bump a
vendored vcpkg dependency (LibreSSL, libfido2, libcbor, zlib) with
all the side effects (overlay portfile SHA512, LibreSSL resource
patch) handled correctly.
- [resolve-merge-conflict](./skills/resolve-merge-conflict/SKILL.md) —
conflict-resolution procedure for upstream merges (prefer-upstream +
adapt for Windows, strategy preference order, silent auto-merge
hunting, regress-test and version-resource sync) plus how to summarize
the resolutions for the pull request.
- [merge-retrospective](./skills/merge-retrospective/SKILL.md) — run
after a merge PR lands to capture new conflict-resolution patterns and
feed lessons back into the instructions, skills, agents, and tools.

---

## Merging from upstream

Merging from `openssh/openssh-portable` is the headline workflow this
folder is built around. It uses a **two-phase approach** (all incremental
merges, conflict resolution, build fixes, and validation happen on a
scratch branch; then a real merge branch is created from the same
starting commit, a single `git merge` of the upstream target is
performed, and any conflicts are resolved by copying the resolved files
from the scratch branch). This preserves upstream commit history
exactly. The full workflow lives in
[instructions/merge/merge-process-overview.instructions.md](./instructions/merge/merge-process-overview.instructions.md);
conflict-resolution patterns are in
[merge-details.instructions.md](./instructions/merge/merge-details.instructions.md);
background reading is in
[research.instructions.md](./instructions/merge/research.instructions.md).

### Driving the merge with AI (recommended)

1. Make sure the [MCP server is running](#mcp-server-setup-vscodemcpjson).
2. In Copilot Chat, switch to the **`merge-upstream`** agent
([agents/merge-upstream.agent.md](./agents/merge-upstream.agent.md)).
3. Invoke the merge prompt
([prompts/merge.prompt.md](./prompts/merge.prompt.md)) with at minimum
a start ref — see that file for the full input list and examples.
4. Approve each batch summary the agent presents; at the end, push the
real branch and open the PR.

### Driving the merge manually

Follow
[merge-process-overview.instructions.md](./instructions/merge/merge-process-overview.instructions.md)
step by step.

### Validation

Default validation is end-to-end via
`mcp_openssh-server_Test_OpenSSHFunctionality`. The full CI suite is
documented in
[instructions/testing.instructions.md](./instructions/testing.instructions.md).

---

## Other AI-assisted workflows

### Bumping a vendored vcpkg dependency

Use the [`update-vcpkg-port`](./skills/update-vcpkg-port/SKILL.md) skill.
Ask Copilot something like *"Bump LibreSSL to 4.1.1 using the
update-vcpkg-port skill."* The skill orchestrates
[Update-VcpkgPort.ps1](./tools/Update-VcpkgPort.ps1) (manifest, overlay
portfile SHA512, LibreSSL resource patch), validates via
[Install-VcpkgDependencies.ps1](./tools/Install-VcpkgDependencies.ps1),
then builds to confirm.

### Building / testing / debugging

Even outside a merge, the MCP tools are useful day-to-day. See
[build.instructions.md](./instructions/build.instructions.md) and
[testing.instructions.md](./instructions/testing.instructions.md) for
the full parameter reference of `Start-OpenSSHBuild`,
`Test-OpenSSHBuild`, `Test-OpenSSHFunctionality`, and
`Invoke-OpenSSHTests`.


Loading