Skip to content

Commit 3110863

Browse files
docs(security): mark path/ssrf guards as standalone, not wired to enforcement
path-guard.js and ssrf-guard.js (CORE-SU.A3) are exported from permissions/index.js but are not called by OperationGuard.guard() and are not registered as a PreToolUse hook. No write path or outbound request is validated by these guards automatically today. Add the same standalone-library notice prompt-guard.js already carries so callers don't assume runtime enforcement is active. No logic changed. Epic: docs/framework/epics/core-super-update/EPIC-CORE-SUPER-UPDATE.md
1 parent 468e12e commit 3110863

3 files changed

Lines changed: 95 additions & 55 deletions

File tree

.aiox-core/core/permissions/path-guard.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,26 @@
77
* @module permissions/path-guard
88
* @version 1.0.0
99
* @story CORE-SU.A3
10+
*
11+
* ─── STANDALONE LIBRARY — NOT WIRED TO RUNTIME ENFORCEMENT ───────────────
12+
*
13+
* This module is exported from `permissions/index.js` but is NOT called by
14+
* `operation-guard.js`'s `guard()` path, and is NOT registered as a
15+
* PreToolUse hook. No write operation is validated against this guard
16+
* automatically today. Callers must invoke `validateWrite()` /
17+
* `isTraversalAttempt()` explicitly wherever path-write safety is required
18+
* (e.g. app code writing to disk on behalf of untrusted input).
19+
*
20+
* If/when this is wired into `OperationGuard.guard()` or a hook, remove
21+
* this notice and document the integration point here.
22+
*
23+
* ─── USAGE ────────────────────────────────────────────────────────────────
24+
*
25+
* const pathGuard = require('.aiox-core/core/permissions/path-guard');
26+
* const result = pathGuard.validateWrite(targetPath);
27+
* if (!result.allowed) {
28+
* // Block: result.reason available
29+
* }
1030
*/
1131

1232
'use strict';

.aiox-core/core/permissions/ssrf-guard.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,26 @@
1616
* @module permissions/ssrf-guard
1717
* @version 1.0.0
1818
* @story CORE-SU.A3
19+
*
20+
* ─── STANDALONE LIBRARY — NOT WIRED TO RUNTIME ENFORCEMENT ───────────────
21+
*
22+
* This module is exported from `permissions/index.js` but is NOT called by
23+
* `operation-guard.js`'s `guard()` path, and is NOT registered as a
24+
* PreToolUse hook. No outbound request (WebFetch, MCP call, HTTP client) is
25+
* validated against this guard automatically today. Callers must invoke
26+
* `validateUrl()` / `isUrlAllowed()` explicitly wherever SSRF protection is
27+
* required (e.g. app code fetching a user- or agent-supplied URL).
28+
*
29+
* If/when this is wired into `OperationGuard.guard()` or a hook, remove
30+
* this notice and document the integration point here.
31+
*
32+
* ─── USAGE ────────────────────────────────────────────────────────────────
33+
*
34+
* const ssrfGuard = require('.aiox-core/core/permissions/ssrf-guard');
35+
* const result = ssrfGuard.validateUrl(untrustedUrl);
36+
* if (!result.allowed) {
37+
* // Block: result.reason available
38+
* }
1939
*/
2040

2141
'use strict';

.aiox-core/install-manifest.yaml

Lines changed: 55 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
# - File types for categorization
99
#
1010
version: 5.2.9
11-
generated_at: "2026-07-09T15:11:26.887Z"
11+
generated_at: "2026-07-09T18:33:38.585Z"
1212
generator: scripts/generate-install-manifest.js
1313
file_count: 1162
1414
files:
@@ -1049,9 +1049,9 @@ files:
10491049
type: core
10501050
size: 9018
10511051
- path: core/permissions/path-guard.js
1052-
hash: sha256:9e85b0b5202c31e2986dd1d557f778d7d202b35a3c20b2493b81c2af6f27e7b3
1052+
hash: sha256:1a99876de6aec81fe0786328fc7251e4d09fb6268b0624295d35459b300be828
10531053
type: core
1054-
size: 4798
1054+
size: 5897
10551055
- path: core/permissions/permission-mode.js
10561056
hash: sha256:84f09067c7154d97cb2252b9a7def00562acf569cfc3b035d6d4e39fb40d4033
10571057
type: core
@@ -1061,9 +1061,9 @@ files:
10611061
type: core
10621062
size: 9683
10631063
- path: core/permissions/ssrf-guard.js
1064-
hash: sha256:900ac78f37ff96e39e5e58c17a8fdb31200aef2a35a716d8627b699733855a9e
1064+
hash: sha256:c71ea07bec9567eff5f17f0a28fba076f165d1fe6a7774580ec3bc19e51d844b
10651065
type: core
1066-
size: 8106
1066+
size: 9224
10671067
- path: core/pro/pro-updater.js
10681068
hash: sha256:30ea78b8ab088e695936ae662057697410856751f463eeb649e00b67dcc31531
10691069
type: core
@@ -2835,47 +2835,47 @@ files:
28352835
- path: development/templates/service-template/__tests__/index.test.ts.hbs
28362836
hash: sha256:4617c189e75ab362d4ef2cabcc3ccce3480f914fd915af550469c17d1b68a4fe
28372837
type: template
2838-
size: 9573
2838+
size: 9810
28392839
- path: development/templates/service-template/client.ts.hbs
28402840
hash: sha256:f342c60695fe611192002bdb8c04b3a0dbce6345b7fa39834ea1898f71689198
28412841
type: template
2842-
size: 11810
2842+
size: 12213
28432843
- path: development/templates/service-template/errors.ts.hbs
28442844
hash: sha256:e0be40d8be19b71b26e35778eadffb20198e7ca88e9d140db9da1bfe12de01ec
28452845
type: template
2846-
size: 5213
2846+
size: 5395
28472847
- path: development/templates/service-template/index.ts.hbs
28482848
hash: sha256:d44012d54b76ab98356c7163d257ca939f7fed122f10fecf896fe1e7e206d10a
28492849
type: template
2850-
size: 3086
2850+
size: 3206
28512851
- path: development/templates/service-template/jest.config.js
28522852
hash: sha256:1681bfd7fbc0d330d3487d3427515847c4d57ef300833f573af59e0ad69ed159
28532853
type: template
28542854
size: 1750
28552855
- path: development/templates/service-template/package.json.hbs
28562856
hash: sha256:d89d35f56992ee95c2ceddf17fa1d455c18007a4d24af914ba83cf4abc38bca9
28572857
type: template
2858-
size: 2227
2858+
size: 2314
28592859
- path: development/templates/service-template/README.md.hbs
28602860
hash: sha256:2c3dd4c2bf6df56b9b6db439977be7e1cc35820438c0e023140eccf6ccd227a0
28612861
type: template
2862-
size: 3426
2862+
size: 3584
28632863
- path: development/templates/service-template/tsconfig.json
28642864
hash: sha256:8b465fcbdd45c4d6821ba99aea62f2bd7998b1bca8de80486a1525e77d43c9a1
28652865
type: template
28662866
size: 1135
28672867
- path: development/templates/service-template/types.ts.hbs
28682868
hash: sha256:3e52e0195003be8cd1225a3f27f4d040686c8b8c7762f71b41055f04cd1b841b
28692869
type: template
2870-
size: 2516
2870+
size: 2661
28712871
- path: development/templates/squad-template/agents/example-agent.yaml
28722872
hash: sha256:824a1b349965e5d4ae85458c231b78260dc65497da75dada25b271f2cabbbe67
28732873
type: agent
28742874
size: 736
28752875
- path: development/templates/squad-template/LICENSE
28762876
hash: sha256:ff7017aa403270cf2c440f5ccb4240d0b08e54d8bf8a0424d34166e8f3e10138
28772877
type: template
2878-
size: 1071
2878+
size: 1092
28792879
- path: development/templates/squad-template/package.json
28802880
hash: sha256:8f68627a0d74e49f94ae382d0c2b56ecb5889d00f3095966c742fb5afaf363db
28812881
type: template
@@ -3651,11 +3651,11 @@ files:
36513651
- path: infrastructure/templates/aiox-sync.yaml.template
36523652
hash: sha256:0040ad8a9e25716a28631b102c9448b72fd72e84f992c3926eb97e9e514744bb
36533653
type: template
3654-
size: 8385
3654+
size: 8567
36553655
- path: infrastructure/templates/coderabbit.yaml.template
36563656
hash: sha256:91a4a76bbc40767a4072fb6a87c480902bb800cfb0a11e9fc1b3183d8f7f3a80
36573657
type: template
3658-
size: 8042
3658+
size: 8321
36593659
- path: infrastructure/templates/core-config/core-config-brownfield.tmpl.yaml
36603660
hash: sha256:9bdb0c0e09c765c991f9f142921f7f8e2c0d0ada717f41254161465dc0622d02
36613661
type: template
@@ -3667,35 +3667,35 @@ files:
36673667
- path: infrastructure/templates/github-workflows/ci.yml.template
36683668
hash: sha256:acbfa2a8a84141fd6a6b205eac74719772f01c221c0afe22ce951356f06a605d
36693669
type: template
3670-
size: 4920
3670+
size: 5089
36713671
- path: infrastructure/templates/github-workflows/pr-automation.yml.template
36723672
hash: sha256:c236077b4567965a917e48df9a91cc42153ff97b00a9021c41a7e28179be9d0f
36733673
type: template
3674-
size: 10609
3674+
size: 10939
36753675
- path: infrastructure/templates/github-workflows/README.md
36763676
hash: sha256:6b7b5cb32c28b3e562c81a96e2573ea61849b138c93ccac6e93c3adac26cadb5
36773677
type: template
36783678
size: 2654
36793679
- path: infrastructure/templates/github-workflows/release.yml.template
36803680
hash: sha256:b771145e61a254a88dc6cca07869e4ece8229ce18be87132f59489cdf9a66ec6
36813681
type: template
3682-
size: 6595
3682+
size: 6791
36833683
- path: infrastructure/templates/gitignore/gitignore-aiox-base.tmpl
36843684
hash: sha256:9088975ee2bf4d88e23db6ac3ea5d27cccdc72b03db44450300e2f872b02e935
36853685
type: template
3686-
size: 788
3686+
size: 851
36873687
- path: infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl
36883688
hash: sha256:ce4291a3cf5677050c9dafa320809e6b0ca5db7e7f7da0382d2396e32016a989
36893689
type: template
3690-
size: 488
3690+
size: 506
36913691
- path: infrastructure/templates/gitignore/gitignore-node.tmpl
36923692
hash: sha256:5179f78de7483274f5d7182569229088c71934db1fd37a63a40b3c6b815c9c8e
36933693
type: template
3694-
size: 951
3694+
size: 1036
36953695
- path: infrastructure/templates/gitignore/gitignore-python.tmpl
36963696
hash: sha256:d7aac0b1e6e340b774a372a9102b4379722588449ca82ac468cf77804bbc1e55
36973697
type: template
3698-
size: 1580
3698+
size: 1725
36993699
- path: infrastructure/templates/project-docs/coding-standards-tmpl.md
37003700
hash: sha256:377acf85463df8ac9923fc59d7cfeba68a82f8353b99948ea1d28688e88bc4a9
37013701
type: template
@@ -3791,43 +3791,43 @@ files:
37913791
- path: monitor/hooks/lib/__init__.py
37923792
hash: sha256:bfab6ee249c52f412c02502479da649b69d044938acaa6ab0aa39dafe6dee9bf
37933793
type: monitor
3794-
size: 29
3794+
size: 30
37953795
- path: monitor/hooks/lib/enrich.py
37963796
hash: sha256:20dfa73b4b20d7a767e52c3ec90919709c4447c6e230902ba797833fc6ddc22c
37973797
type: monitor
3798-
size: 1644
3798+
size: 1702
37993799
- path: monitor/hooks/lib/send_event.py
38003800
hash: sha256:59d61311f718fb373a5cf85fd7a01c23a4fd727e8e022ad6930bba533ef4615d
38013801
type: monitor
3802-
size: 1190
3802+
size: 1237
38033803
- path: monitor/hooks/notification.py
38043804
hash: sha256:8a1a6ce0ff2b542014de177006093b9caec9b594e938a343dc6bd62df2504f22
38053805
type: monitor
3806-
size: 499
3806+
size: 528
38073807
- path: monitor/hooks/post_tool_use.py
38083808
hash: sha256:47dbe37073d432c55657647fc5b907ddb56efa859d5c3205e8362aa916d55434
38093809
type: monitor
3810-
size: 1140
3810+
size: 1185
38113811
- path: monitor/hooks/pre_compact.py
38123812
hash: sha256:f287cf45e83deed6f1bc0e30bd9348dfa1bf08ad770c5e58bb34e3feb210b30b
38133813
type: monitor
3814-
size: 500
3814+
size: 529
38153815
- path: monitor/hooks/pre_tool_use.py
38163816
hash: sha256:a4d1d3ffdae9349e26a383c67c9137effff7d164ac45b2c87eea9fa1ab0d6d98
38173817
type: monitor
3818-
size: 981
3818+
size: 1021
38193819
- path: monitor/hooks/stop.py
38203820
hash: sha256:edb382f0cf46281a11a8588bc20eafa7aa2b5cc3f4ad775d71b3d20a7cfab385
38213821
type: monitor
3822-
size: 490
3822+
size: 519
38233823
- path: monitor/hooks/subagent_stop.py
38243824
hash: sha256:fa5357309247c71551dba0a19f28dd09bebde749db033d6657203b50929c0a42
38253825
type: monitor
3826-
size: 512
3826+
size: 541
38273827
- path: monitor/hooks/user_prompt_submit.py
38283828
hash: sha256:af57dca79ef55cdf274432f4abb4c20a9778b95e107ca148f47ace14782c5828
38293829
type: monitor
3830-
size: 818
3830+
size: 856
38313831
- path: package.json
38323832
hash: sha256:d8dbe037240a366d545ca4259d2059e705b709706dcf2a18a5a52d9b543b7ed9
38333833
type: other
@@ -3975,7 +3975,7 @@ files:
39753975
- path: product/templates/adr.hbs
39763976
hash: sha256:d68653cae9e64414ad4f58ea941b6c6e337c5324c2c7247043eca1461a652d10
39773977
type: template
3978-
size: 2212
3978+
size: 2337
39793979
- path: product/templates/agent-template.yaml
39803980
hash: sha256:98676fcc493c0d5f09264dcc52fcc2cf1129f9a195824ecb4c2ec035c2515121
39813981
type: template
@@ -4027,7 +4027,7 @@ files:
40274027
- path: product/templates/dbdr.hbs
40284028
hash: sha256:5a2781ffaa3da9fc663667b5a63a70b7edfc478ed14cad02fc6ed237ff216315
40294029
type: template
4030-
size: 4139
4030+
size: 4380
40314031
- path: product/templates/design-story-tmpl.yaml
40324032
hash: sha256:2bfefc11ae2bcfc679dbd924c58f8b764fa23538c14cb25344d6edef41968f29
40334033
type: template
@@ -4091,7 +4091,7 @@ files:
40914091
- path: product/templates/epic.hbs
40924092
hash: sha256:dcbcc26f6dd8f3782b3ef17aee049b689f1d6d92931615c3df9513eca0de2ef7
40934093
type: template
4094-
size: 3868
4094+
size: 4080
40954095
- path: product/templates/eslintrc-security.json
40964096
hash: sha256:657d40117261d6a52083984d29f9f88e79040926a64aa4c2058a602bfe91e0d5
40974097
type: template
@@ -4199,19 +4199,19 @@ files:
41994199
- path: product/templates/pmdr.hbs
42004200
hash: sha256:d529cebbb562faa82c70477ece70de7cda871eaa6896f2962b48b2a8b67b1cbe
42014201
type: template
4202-
size: 3239
4202+
size: 3425
42034203
- path: product/templates/prd-tmpl.yaml
42044204
hash: sha256:25c239f40e05f24aee1986601a98865188dbe3ea00a705028efc3adad6d420f3
42054205
type: template
42064206
size: 11952
42074207
- path: product/templates/prd-v2.0.hbs
42084208
hash: sha256:21a20ef5333a85a11f5326d35714e7939b51bab22bd6e28d49bacab755763bea
42094209
type: template
4210-
size: 4512
4210+
size: 4728
42114211
- path: product/templates/prd.hbs
42124212
hash: sha256:4a1a030a5388c6a8bf2ce6ea85e54cae6cf1fe64f1bb2af7f17d349d3c24bf1d
42134213
type: template
4214-
size: 3425
4214+
size: 3626
42154215
- path: product/templates/project-brief-tmpl.yaml
42164216
hash: sha256:b8d388268c24dc5018f48a87036d591b11cb122fafe9b59c17809b06ea5d9d58
42174217
type: template
@@ -4259,7 +4259,7 @@ files:
42594259
- path: product/templates/story.hbs
42604260
hash: sha256:3f0ac8b39907634a2b53f43079afc33663eee76f46e680d318ff253e0befc2c4
42614261
type: template
4262-
size: 5583
4262+
size: 5846
42634263
- path: product/templates/task-execution-report.md
42644264
hash: sha256:e0f08a3e199234f3d2207ba8f435786b7d8e1b36174f46cb82fc3666b9a9309e
42654265
type: template
@@ -4271,67 +4271,67 @@ files:
42714271
- path: product/templates/task.hbs
42724272
hash: sha256:621e987e142c455cd290dc85d990ab860faa0221f66cf1f57ac296b076889ea5
42734273
type: template
4274-
size: 2705
4274+
size: 2875
42754275
- path: product/templates/tmpl-comment-on-examples.sql
42764276
hash: sha256:254002c3fbc63cfcc5848b1d4b15822ce240bf5f57e6a1c8bb984e797edc2691
42774277
type: template
4278-
size: 6215
4278+
size: 6373
42794279
- path: product/templates/tmpl-migration-script.sql
42804280
hash: sha256:44ef63ea475526d21a11e3c667c9fdb78a9fddace80fdbaa2312b7f2724fbbb5
42814281
type: template
4282-
size: 2947
4282+
size: 3038
42834283
- path: product/templates/tmpl-rls-granular-policies.sql
42844284
hash: sha256:36c2fd8c6d9eebb5d164acb0fb0c87bc384d389264b4429ce21e77e06318f5f3
42854285
type: template
4286-
size: 3322
4286+
size: 3426
42874287
- path: product/templates/tmpl-rls-kiss-policy.sql
42884288
hash: sha256:5210d37fce62e5a9a00e8d5366f5f75653cd518be73fbf96333ed8a6712453c7
42894289
type: template
4290-
size: 299
4290+
size: 309
42914291
- path: product/templates/tmpl-rls-roles.sql
42924292
hash: sha256:2d032a608a8e87440c3a430c7d69ddf9393d8813d8d4129270f640dd847425c3
42934293
type: template
4294-
size: 4592
4294+
size: 4727
42954295
- path: product/templates/tmpl-rls-simple.sql
42964296
hash: sha256:f67af0fa1cdd2f2af9eab31575ac3656d82457421208fd9ccb8b57ca9785275e
42974297
type: template
4298-
size: 2915
4298+
size: 2992
42994299
- path: product/templates/tmpl-rls-tenant.sql
43004300
hash: sha256:36629ed87a2c72311809cc3fb96298b6f38716bba35bc56c550ac39d3321757a
43014301
type: template
4302-
size: 4978
4302+
size: 5130
43034303
- path: product/templates/tmpl-rollback-script.sql
43044304
hash: sha256:8b84046a98f1163faf7350322f43831447617c5a63a94c88c1a71b49804e022b
43054305
type: template
4306-
size: 2657
4306+
size: 2734
43074307
- path: product/templates/tmpl-seed-data.sql
43084308
hash: sha256:a65e73298f46cd6a8e700f29b9d8d26e769e12a57751a943a63fd0fe15768615
43094309
type: template
4310-
size: 5576
4310+
size: 5716
43114311
- path: product/templates/tmpl-smoke-test.sql
43124312
hash: sha256:aee7e48bb6d9c093769dee215cacc9769939501914e20e5ea8435b25fad10f3c
43134313
type: template
4314-
size: 723
4314+
size: 739
43154315
- path: product/templates/tmpl-staging-copy-merge.sql
43164316
hash: sha256:55988caeb47cc04261665ba7a37f4caa2aa5fac2e776fdbc5964e0587af24450
43174317
type: template
4318-
size: 4081
4318+
size: 4220
43194319
- path: product/templates/tmpl-stored-proc.sql
43204320
hash: sha256:2b205ff99dc0adfade6047a4d79f5b50109e50ceb45386e5c886437692c7a2a3
43214321
type: template
4322-
size: 3839
4322+
size: 3979
43234323
- path: product/templates/tmpl-trigger.sql
43244324
hash: sha256:93abdc92e1b475d1370094e69a9d1b18afd804da6acb768b878355c798bd8e0e
43254325
type: template
4326-
size: 5272
4326+
size: 5424
43274327
- path: product/templates/tmpl-view-materialized.sql
43284328
hash: sha256:47935510f03d4ad9b2200748e65441ce6c2d6a7c74750395eca6831d77c48e91
43294329
type: template
4330-
size: 4363
4330+
size: 4496
43314331
- path: product/templates/tmpl-view.sql
43324332
hash: sha256:22557b076003a856b32397f05fa44245a126521de907058a95e14dd02da67aff
43334333
type: template
4334-
size: 4916
4334+
size: 5093
43354335
- path: product/templates/token-exports-css-tmpl.css
43364336
hash: sha256:d937b8d61cdc9e5b10fdff871c6cb41c9f756004d060d671e0ae26624a047f62
43374337
type: template

0 commit comments

Comments
 (0)